快手 9.5 二面 45min
项目介绍
问项目(18min)
- 介绍项目架构
- 多机情况不同用户在不同 Netty 如何投递?
- Redis 保存了路由,那么如果 redis 内存不够怎么办?(考虑了单机内存不够不可写抛出异常捕获处理,多机增加内存)
- Redis 宕机或者路由数据丢失对于用户单聊场景的影响?(异常情况考虑)
- 为什么要做应用层心跳保活?如何实现心跳保活?哪个线程实现的,单线程还是多线程?(Netty IdleStateHandler 实现有点忘了QAQ。线程使用 workerGroup 考虑 Netty 的线程模型)
- 心跳保活设置的时间?这个时间和后台系统有什么关系吗?(网络流量,心跳检查时效性 trade-off,还提醒了下我,面试官人真好)
- 像微信qq超高的用户量心跳保活如何优化?多机分流,单机重用消息,兜底策略
做题
给定一个序列,将序列分为前后两部分,使得奇数在前,偶数在后,同时保证原始序列相对顺序。
如:[1,3,4,6,7] --> [1,4,6,3,7]
第一次实现:两次轮询,然后拷贝到新数组的方法。面试官要求不适用额外空间。
想了半天使用类似冒泡排序的算法,交换和移动,但是时间复杂度 O(N^2),然后实现出来 bugfree。难过。。。感觉应该是用双指针做,但是没想到该怎么做[大哭]
反问
部门还是效率与工程部门,轻雀,办公协同组件。
#面经笔经##快手#