秋招腾讯Golang开发一面面经

1. Golang中的GMP调度模型是如何工作的?P的作用是什么?
2. Golang的逃逸分析机制是什么?如何进行内存分配优化?
3. sync.Map是如何实现并发安全的?与加锁的map有什么区别?
4. Golang的反射原理是什么?什么场景下应该使用反射?
5. TCP的拥塞控制算法有哪些?BBR算法的工作原理是什么?
6. Websocket协议是如何实现全双工通信的?与HTTP长轮询有什么区别?
7. 什么是零拷贝技术?在Golang中如何实现零拷贝?
8. Linux进程的虚拟地址空间是如何布局的?
9. 什么是CPU的NU架构?对程序性能有什么影响?
10. 容器与虚拟机的本质区别是什么?容器是如何实现资源隔离的?
11. 分布式一致性哈希算法是如何工作的?如何解决节点动态增减的问题?
12. 什么是Paxos算法?Basic Paxos和Multi-Paxos的区别是什么?
13. 分布式系统如何实现服务发现和健康检查?
14. 什么是分布式系统的脑裂问题?如何避免?
15. 如何判断一个数是否为2的幂次方?给出最优解
16. 设计一个算法来统计海量数据中出现次数最多的前K个元素
17. 实现一个循环队列,支持并发安全的入队和出队操作 (手撕)
18. 反问
全部评论
接好运
点赞 回复 分享
发布于 11-20 21:46 新加坡

相关推荐

1、自我介绍2、项目拷打3、GMP 模型的调度流程(追问:M 如何与 P 绑定?P 的本地队列满了之后怎么处理?G 的抢占式调度是怎么实现的?)4、Go 的垃圾回收机制(三色标记法+混合写屏障,GC 的触发条件有哪些?)5、MySQL 的 redo log、undo log、binlog 的区别与联系(追问:三者的写入时机?崩溃恢复时的执行顺序?binlog 的两种格式(statement/row)区别及适用场景)6、MTU 的作用,数据包怎么分片(追问:MTU 的默认值(1500)、分片后的数据包如何重组?IP 分片和 TCP 分段的区别?)7、Protobuf 如何序列化数据,为什么比 JSON、XML 好(追问:Protobuf 的 TLV 编码细节?Varint 编码对负数的处理?proto3 相比 proto2 的优化)8、容器编排相关(追问:K8s 的核心组件有哪些?Pod 的生命周期及重启策略?Deployment 如何实现滚动更新?K8s 的 Service 与 Ingress 的区别?)9、Go 的 channel 实现原理(追问:channel 的底层数据结构?无缓冲 channel 和有缓冲 channel 的读写规则?关闭 channel 后读写会发生什么?)10、分布式一致性协议(Paxos/Raft)的核心思想(追问:Raft 如何解决 Paxos 的复杂性?Leader 选举的流程?日志复制的机制?网络分区后如何恢复?)11、哈希表的底层实现(追问:Go 中 map 的哈希冲突解决方式?map 的扩容机制?如何实现并发安全的 map?)12、TCP 的拥塞控制算法(追问:拥塞避免、快速重传的流程?BBR 算法相比 CUBIC 的优势?)13、分布式链路追踪如何设计14、数据库索引的底层结构(追问:InnoDB 的 B+ 树索引和哈希索引的区别?聚簇索引和非聚簇索引的区别?索引失效的场景及原因)15、Go 的接口实现原理(追问:iface 和 eface 的区别?接口断言的底层逻辑?空接口能存储 nil 吗?为什么?)已经凉了,反问阶段直接放弃了,说没啥想问的,面试官暗示说,不希望你浪费掉这次宝贵的面试机会,有啥想问的就问问吧,G
查看15道真题和解析
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-20 10:05
点赞 评论 收藏
分享
评论
2
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务