猿辅导面经
时间点如下:9.1投递 -> 9.6一面 -> 9.15现场面
一点思考
猿辅导整体面试的比较简单,效率也挺高。一面是远程面试的,二面、三面、hr面是在现场面试的,听说加班不严重。
今年找工作十分不易,市场候选人很多,能过就是钱给不到位!希望这篇面经能帮到大家~
猿辅导一面(9.6)
- 双栈排序,复杂度如何?
n^2
- kafka的使用场景。kafka高性能的原因是什么?kafka优化如何解决重复消费的问题。
- 优雅下线
- 上游在消息编写幂等id,下游存储这个id是否处理过。处理成功再提交offset
- mysql事务的原子性怎么实现的?redo log先写缓存,是否有丢失数据的风险?
答了两阶段提交
- redis过期key的逐出策略是什么?
- 定期删除。是另一个线程么?
低版本用的是主要处理线程,会造成阻塞,每100ms检查一次,如果有超过1/4的过期,则会不断处理过期的key,造成阻塞。 https://segmentfault.com/a/1190000023311805
4.0版本开始支持异步删除
定期删除其实是一种折中方案,避免阻塞正常数据的处理。字典这种结构也一样,底层在扩容时是渐进式hash。
- 执行时删除。
内存满了的逐出策略是什么?
volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集中任意选择数据 淘汰
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
allkeys-random:从数据集中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据,直接报错
- mongodb为什么用b树?
mongodb nosql,非关系型数据库,文档型数据库,场景定位是:精准查询某条数据,搜索时直接查到某条数据,数据在每个非叶子节点上也有,不必遍历到叶子节点,不适合范围查询。这种场景能减少IO次数。
mongodb默认底层用的是wired tiger引擎
mysql一般使用的是范围查询或者等值查询(可能有多条数据),这个时候叶子节点是连在一起的,能顺序IO,会更快。
https://blog.csdn.net/weixin_41987908/article/details/105255119
协程和线程有什么区别?GPM模型
进程间通信方式有哪些?
- 共享内存
- 信号量
- 信号
- 管道(有名管道和匿名管道)
- socket
- unix domain socket
猿辅导二面(9.15)
二叉树最大宽度
关键在于如何找到上层和下层的切换节点,如何分割的问题。这里可以通过两个队列来实现,上一个队列存上层的所有数据,当前队列存当前层的所有数据。然后遍历下一层。这里的关键在于一层一层便利,整层出队。
试用期内带团队,如果发现有这些方面的能力,会在一两个月后带团队。
是不是业务成熟饱和就跳槽?
六边形模型。领域建模。分布式事务和tcc
注册中心有哪些
zk/consul/nacos/eureca
团队的流动率、司龄分布如何?业务挑战和技术挑战如何,技术如何解决这些业务问题呢?岗位对我的期望如何?
长连接如何实现的,保活如何做?保活才是关键。ping/pong