美文网首页
Go语言笔试面试题汇总-并发编程

Go语言笔试面试题汇总-并发编程

作者: xiaofang0815 | 来源:发表于2025-06-15 11:58 被阅读0次

原地址:https://geektutu.com/post/qa-golang-3.html


并发编程

Q1 无缓冲的 channel 和 有缓冲的 channel 的区别?

答:对于无缓冲的channel,发送方将阻塞该信道,直到接收方从该信道接收到数据为止,而接收方也将阻塞该信道,直到发送方将数据发送到该信道中为止。

对于有缓存的channel,发送方在没有空插槽(缓冲区使用完)的情况下阻塞,而接收方在信道为空的情况下阻塞。

func main() { 

    st := time.Now()

    ch :=make(chanbool)

    go func(){

        time.Sleep(time.Second *2)

        <-ch

    }()

    ch <-true// 无缓冲,发送方阻塞直到接收方接收到数据。

    fmt.Printf("cost %.1f s\n", time.Now().Sub(st).Seconds())

    time.Sleep(time.Second *5)

}

func main(){

    st := time.Now()

    ch :=make(chanbool,2)

    go func(){

        time.Sleep(time.Second *2)

        <-ch

    }()

    ch <-true

    ch <-true// 缓冲区为 2,发送方不阻塞,继续往下执行

    fmt.Printf("cost %.1f s\n", time.Now().Sub(st).Seconds())// cost 0.0 s

    ch <-true// 缓冲区使用完,发送方阻塞,2s 后接收方接收到数据,释放一个插槽,继续往下执行

    fmt.Printf("cost %.1f s\n", time.Now().Sub(st).Seconds())// cost 2.0 s

    time.Sleep(time.Second *5)

}


Q2 什么是协程泄露(Goroutine Leak)?

答:


相关文章

  • Go基础语法(九)

    Go语言并发 Go 是并发式语言,而不是并行式语言。 并发是指立即处理多个任务的能力。 Go 编程语言原生支持并发...

  • Go并发

    Go语言中的并发编程 并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很...

  • Go语言简介

    Go语言简介 Go语言设计的初衷 针对其他语言的痛点进行设计并加入并发编程为大数据,微服务,并发而生的通用编程语言...

  • Synchronized到底锁住的是谁?

    先来一道并发编程笔试题 题目:利用5个线程并发执行,num数字累计计数到10000,并打印。 这道并发编程面试题,...

  • 16.并发

    并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因。 Go语言...

  • Go语言基础之并发

    并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因。 Go语言...

  • Go 的并发性与调度器

    本篇文章是我对 Go 语言并发性的理解总结,适合初步了解并发,对 Go 语言的并发编程与调度器原理有兴趣的读者。 ...

  • go语言开发培训班哪里好

    Go作为专门为并发和大数据设计的语言,在编程界占据越来越重要的地位!越来越多的人开始学习go编程语言,go语言开发...

  • 十分钟读懂:Java并发——CSP模型

    Go Go是一门号称从语言层面支持并发的编程语言,支持并发也是Go非常重要的特性之一 Go支持协程,协程可以类比J...

  • Go语言的优缺点及其扫盲

    1. go语言介绍 1.1.语言为并发而生 go语言(或 Golang)是Google开发的开源编程语言,诞生于2...

网友评论

      本文标题:Go语言笔试面试题汇总-并发编程

      本文链接:https://www.haomeiwen.com/subject/vmvcrltx.html