快手凉经
快手一面(1h): 1.自我介绍 2.JVM的构造 3.垃圾回收器种类 4.垃圾回收算法 5.线程池执行流程以及饱和策略 6.核心线程和普通线程的区别,如何区分 7.事务的隔离级别 8.mysql什么情况下索引失效 9.三种索引结构对比 10.mysql索引流程 11.Redis数据结构 12.缓存穿透、缓存击穿、缓存雪崩以及各自的解决方法 13.Redis为什么高性能 14.TCP和UDP区别,以及不同使用场景 15.TCP如何保证可靠传输 16.如何实现一个IOC容器 17.实习项目:lucene工具包如何实现倒排索引,查询流程。 18.手撕算法(中等):输出二叉树每一层最右节点。 快手二面(52min): 1.自我介绍 2.项目介绍,从入职到现在 3.为什么要做这些工作,有什么意义 4.Redis数据结构 5.zset底层实现,跳表插入数据的流程 6.ConcurrentHaspMap原理和扩容 7.ArrayList原理和扩容,刚开始加入20个元素超过扩容15会如何处理呢?看过源码吗? 8.项目中为什么使用分布式锁,除了用的lua脚本外分布式锁java如何实现的 9.手撕算法(中等):两个链表按照两数相加的原则生成另一个链表,主要是边界值分析。 快手三面(50min): 1.自我介绍 2.springboot的过滤、拦截和tomcat的过滤、拦截 3.Redis数据结构,String底层的考虑 4.分布式锁如何保证数据一致性 5.bean的作用域,为什么默认单例(线程考虑) 6.Redis持久化机制以及如何保证分布式场景下追加AOF文件的一致性 7.主从复制以及binlog日志主从如何保持一致性 8.Synchronized升级过程 9.Synchronized如何实现的,底层原理
第三面无手撕算法,确实答得不够好,有点遗憾吧,倒在三面!继续加油!

