社招
视频面试|1 hour 30 minutes
1.自我介绍。
2.深聊项目。
3.组件底层原理考察。
4.概念性讨论系统设计方案。
5.算法题:golang context WithTimeout 执行 cancel 操作。
6.你有什么问想问我们的吗?
深聊项目
从系统设计的方向逐步深入聊做过的项目。
1.项目的整体架构设计。
2.使用的技术栈都有哪些。为什么这么选择?
3.系统设计中是否有过度设计的地方?更好的方案是什么?
问题列表
MySQL 相关
- 为什么要分库分表?(不只是为了分库而分库,分表而分表,为什么要这么做?)
- 分库解决了什么问题?
- 分表解决了什么问题?
- 乐观锁与悲观锁?在实践中是否用过,可否举例说明一下。
- 主键索引和唯一索引的区别?
- TiDB 与 mysql 的区别?为什么选择 TiDB?(个人以前的业务有使用 TiDB,所以会问)
Redis 相关
- Redis 崩溃时,如何保证数据不丢失?
- Redis 基本数据类型及其使用场景有哪些?
- Redis zset 数据类型底层是如何实现的?(其他的数据类型也可能会问,这里只是抽查模式,其他的记得也要复习)
- Redis 分布式锁是如何实现的?
- Redis分布式锁过期了但业务还没有执行完,怎么办?
Go 语言基础相关
- Go scheduler 理解
- Go escape analysis 理解
- Go Context 理解
- Goroutine 生命周期
- 编程题:Go Context WithTimeout Cancel
业务监控相关
- 所做业务接口性能耗时是多少?
- 所做业务 QPS 大致是多少?
- 如何理解 p 分位?如 p99,p95。
系统设计相关
- 如何设计一个分布式 ID 生成器?
心得
1.每一个问题,面试官都会问得很深入,直到答不上来为止。
2.整个面试过程,面试官会在不同主题来回提问,比如:
- 在聊项目的过程中,会问使用组件的底层原理。
- 发散之后,又回归到原主题继续提问。
- 给人的感觉就是,很专业,佩服面试官技术的广度与深度。
3.高质量的面试,可遇不可求,遇到了就好好珍惜 :)。
评价
1.两位面试官一起面试(有被重视到),一位提问,一位陪面。
2.很好的一次面试体验,面试官很专业。
3.如果能够多参加几次这样的面试,对个人成长也是一种不错的历练。
4.面试官发散思维能力很强,聊一个知识点,可以发散出很多知识点提问,但始终掌握着核心主题。
5.面试官全程语气温和,气质稳重,应该是一位很 Nice 的 Leader。