V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
yuanyao
V2EX  ›  Go 编程语言

最基础的 go 并发编程题,难倒了 90%的候选人

  •  5
     
  •   yuanyao · 3 天前 · 8952 次点击

    两个 goroutine 用 channel 通信,一个 goroutine 顺序发送 0,1,2,3,4 个数字,另一个 goroutine 接收并输出。 考察了 goroutine 的控制、channel 的关闭等基础知识,面试者写的代码各种问题。

    1. 有的 goroutine 还没启动程序就退出了,提示后仍想不到使用 waitgroup ,context ,done channel 等手段,而是用 time sleep 等待;
    2. 有的 channel 不知道由生产者关闭,直接在主程序生产者还未发送结束就关闭结果 panic ;
    3. 有的不会检查消费者读关闭 channel 的返回值,程序直接死循环死锁。

    上周面试 5 个人只有 1 个人一次写出了执行没问题的代码,有 1 个经过提示也没写出来,剩下的能提示后逐步修改出正确的代码。

    这个题还是很经典的,不用问 GMP 、垃圾回收算法等八股文,这个题就能看出 go 基础了。

    第 1 条附言  ·  3 天前
    工作职责
    1. 参与后端系统搭建与架构设计,保证其可扩展性,稳定性;为业务快速迭代提供保障;
    3. 作为业务 owner ,负责准时和高质量的交付;
    4. 根据业务需要,对后续架构的设计作出规划。
    任职要求
    1. 本科及以上学历,计算机科学、软件工程、信息技术或相关专业。
    2. 扎实的编程基础和良好的编码习惯,热爱编程,有 Go 或 Java 开发经验。
    3. 对产品有较好的理解,能够以用户体验为核心驱动力进行开发。
    4. 具备一定的系统架构设计能力,熟悉后端开发技术:协议、架构、存储、缓存、安全、消息队列等。
    5. 具备良好的沟通能力和团队合作精神,积极乐观,认真负责。
    103 条回复    2025-02-27 17:12:37 +08:00
    1  2  
    ericcen
        101
    ericcen  
       21 小时 57 分钟前 via iPhone
    @body007 中文也是自带的吗
    body007
        102
    body007  
       8 小时 20 分钟前
    @ericcen 以前的版本要装中文插件,最新版全部自带中文额。
    felixfw1111x
        103
    felixfw1111x  
       5 分钟前
    package main

    import "fmt"

    func main() {
    ch, done := make(chan int), make(chan bool)

    go func() {
    for i := 0; i <= 4; i++ {
    ch <- i
    }
    close(ch)
    }()

    go func() {
    for i := range ch {
    fmt.Print(i, " ")
    }
    done <- true
    }()

    <-done
    }
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5074 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:18 · PVG 17:18 · LAX 01:18 · JFK 04:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.