golang面试题

本文涵盖了Golang面试中常见的问题,包括goroutine调度、结构体比较、defer执行顺序、select原理、slice与array的区别、map的使用及并发安全、set的实现、消息队列的构建、goroutine泄漏的预防、超时控制以及定时器。同时提供了相关链接以供深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. goroutine的调度

       goroutine的本质是协程,是实现并行计算的核心。使用go关键字启动一个异步工作的协程,协程相对线程更加轻量化,协程运行在一个或多个线程上。各个协程之间的调度则有程序底层完成(线程和进程的操作是由程序触发系统接口,最后的执行者是系统)。协程拥有自己的寄存器上下文和栈,协程调度切换时 将寄存器和栈保存到其他地方,切换回来时再将寄存器上下文和栈恢复,这样 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),

    2. go struct能不能比较

因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型

  3. 函数体 多次  defer  或  go defer执行顺序

defer是golang的一个特色功能,被称为“延迟调用函数”。当外部函数返回后执行defer。  执行顺序 先进后出 (类似 栈)

4。 go select 原理   https://blog.youkuaiyun.com/u011957758/article/details/82230316

   golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作

      go select 的使用  https://blog.youkuaiyun.com/zg_hover/article/details/81453379<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值