土木哥的小红书秋招
TimeLine:
- 7/25 投递
- 8/6 笔试
- 8/19-16:00 一面
- 8/19-17:00 二面
- 9/7 HR面
- 9/12 意向邮件
- 10/30 谈薪
- 11/2 告知正式薪资
Detail:
- 部门:企业效率
- base:武汉 / 北京 / 上海
一面(55min)
(1)八股:
- InnoDB 对 MVCC的实现
- 读已提交和可重复读中 readView 有什么区别
- 有联合索引 (a, b, c) 查询条件为 (a, c) 会不会走索引
- 回表
- 为什么 InnoDB 会出现死锁(支持行锁)
- 乐观锁 / 悲观锁举例
- drop / truncate / delete
- 什么是读扩散
- 分布式锁除了有哪些实现方式(Redis / ZooKeeper)
- 有一个业务非常慢,在执行的过程中分布式锁过期了怎么办
- RedLock 的加锁机制
- ConcurrentHashMap 的前身是什么
- 你所了解的设计模式(不敢说多 怕要求手写)
- controller 之间如何相互调用
- ReentrantLock 如何实现可重入
- 并发量特别高的时候用 Synchronized 还是 ReentrantLock
(2)算法:TOPK
- 分析时间复杂度从 O(N^2) 到 O(N*K) 到 O(K*logN) 最后到 O(N)
- 实现 partition + quickSelect
二面(80min)
(1)拷打项目
(2)场景设计
- RabbitMQ 是如何提高吞吐量的(channel 的多路复用,发布确认的异步应答)
- 如何让 MySQL 抗住百万级并发查询(先引入 Redis 缓存,再使用负载均衡策略 将请求路由到集群上 让集群抗并发)
- RabbitMQ 底层由什么语言编写(装过环境的应该都记得)
- Redis 中如何确定一个 key 是热点 key(使用一个计数器统计访问频率)
- 如何删除热点 key
- 设置热点 key 过期时遍历所有的热点 key 效率太低了如何优化(思路参考WatchDog机制,给热点 key 设置一个自动过期时间,如果一段时间内的访问频率达到阈值则给热点 key 续期)
- RabbitMQ持久化的时候底层如何存储消息
- Redis 中热点 key 的吞吐瓶颈100W,但请求 QPS 有200W怎么办(用 MQ 进行削峰)
- 你使用 MQ 只是保证了可用性,但还是没有提高性能(使用负载均衡策略 将请求路由到集群上 让集群抗并发)
- 数据库中有千万级数据,该如何筛选(首先要分表,然后用线程池进行异步查询)
- 线程池核心参数说一下
- 请求的平均延迟为 3ms,最大延迟为 5ms,则 keepAliveTime 设置为多少合适
- MQ 中如何实现死信队列
- 实习的时候分库分表是怎么做的,分库分表后如何查询
- sharding-jdbc 的原理
(3)算法:****
- 引入新的状态 (-1) 濒死表示 [1 -> 0] 和 (-2) 复活表示 [0 - > 1] 防止状态被覆盖
总结:
- 两面相隔5分钟,而且二面面试官还提前进场了,强度太高了
- 面完睡了一觉,有的场景题忘记了,后面记起来再更新
- 面试体验非常棒,二面场景题的时候面试官一直有反馈,还一路教我优化
- 一面二面面评都挺不错,面试官说进池子了,后面有结果 HR 会通知
#小红书##小红书正式批##小红书给你发#