腾讯后端一面
1. 自我介绍。
2. 深入聊聊你的 Go 项目。
3. 为什么要采用三层架构?
4. 你日常用的框架本身能提供分层能力吗?为什么?
5. 讲讲 Gin 框架。
6. Gin 框架里的前缀树是怎么实现的?
7. Gin 是怎么处理请求和中间件的?
8. 在 Controller 层,接口是怎么调用到对应的中间件的?
9. 讲讲 GORM 框架。
10. GORM 里对象和数据库字段的映射底层是怎么实现的?
11. GORM 的标签(tag)底层是怎么处理的?
12. GORM 每次提取标签都需要进行一次反射吗?
13. 讲讲 Go 的协程。
14. 讲讲 GMP 模型里 P 的作用,它是不是必须的?
15. GMP 是如何实现高并发的?
16. 假设一个 Goroutine 跑的是 CPU 密集型代码,这时候 GMP 还能实现高并发吗?
17. 高并发一般用在哪些场景?
18. IO 请求量大就意味着 CPU 占用率高吗?
19. Go 里的 channel 是什么?
20. Channel 是在用户态还是内核态实现的?
21. 如果一个 Goroutine 被阻塞了,由谁来唤醒它?
22. 手撕:在排序数组中查找元素的第一个和最后一个位置。

查看15道真题和解析