腾讯视频一面(过)
一共一小时,面完一小时后过
先自我介绍
说我年龄小,聊了一会
介绍项目,问我找工作是 Java ,要非Java 么,我说 go 也可以,我之前做过字节的青训,用go实现抖音demo的api(面试官估计对Java不太懂)
项目相关(全程根据项目提的八股)
- 令牌容器的令牌是怎么设计的?为什么能防止超卖?
- 比如西安到北京,中间有很多子站,你是怎么判断出来西安到北京真正还剩多少票呢?(这个我没提前准备,说网上有实现好的api可以直接调,我还没看)
- 这个系统的框架用的什么(SpringBoot)?有没有部署过,查询过 QPS(看过TPS)?问了我的测试环境(报了一下我的机器配置)?你这个项目的预期 TPS 是多少(我说我没怎么接触过大型项目,就没什么预期)?你有没有看过 12306 真实的 TPS 是多少,在遇到高并发的时候,它是怎么处理的?
- 缓存最终一致性,你的项目中的流程介绍一下?那数据是以什么为基准的(MySQL)?你这样每次写数据都要操作数据库,很重,能不能用 Redis(能,Redis 集群部署的话也可以保证较高的可用性)?讲讲 Redis 主从?Redis 哨兵的主哨兵怎么选举的?如果两个候选者的得票相同怎么办(没答上来,我说我猜应该是随机,他说每个候选者会选择一个随机延迟时间,这样很大程度避免了得票再次相同)?
- 那你 TPS 这么多,系统是怎么处理这么多的请求呢(IO多路复用)?你知道 IO 多路复用的几种方式?select、poll、epoll的区别?怎么减少用户态缓冲区和内核态缓冲区的切换(零拷贝)?内存映射的底层怎么实现的?
- 分库分表怎么实现的(用的 ShardingSphere)?你知道这个工具的底层怎么实现分库分表的么(我说我猜是 hash)?如果有两个分片键的话怎么实现(底层我不太懂,他说要知道工具的底层,才能优化)?
做题
找第 K 大的数(小顶堆维持着前 K 大的数)20min
闲聊
- 家是哪的
- 对工作地点有没有要求
- 能实习多久
反问
- 如果过了或者挂了什么时候出结果
- 项目组是干嘛的,用什么语言