一面
视频面20分钟。。
1.详细讲一下你觉得做得好的一个项目。用Redis和Kafka做了什么?
2.缓存失效了该怎么办?
3.缓存雪崩是什么?该如何处理?
4.消息队列的作用?项目中削峰是如何体现的?
5.Redis的几种数据类型。列表相关的数据结构。SKIPLIST是怎么样的?
6.Kafka的组件了解吗?
7.Java并发中的线程池是什么?怎么创建?分类?
8.进程和线程的区别?
9.进程通信
10.写个排序算法。讲一下归并算法的思想,复杂度是多少?
11.算法题:判断链表中是否有环,要求用O(1)的空间。原题为LeetCode141. 环形链表。
反问
1.Kafka深入学习有什么方向? 答:结合大数据相关,要看源码。
3.26二面
视频面35分钟
1.聊一下SpringBoot的作用。
2.Spring的IOC是什么?bean是怎么加载的(或者说怎么初始化一个bean)?
3.接上题,那JVM是怎么加载一个类的?怎么找到字节码文件的,去哪些文件夹定位的?
4.双亲委托模式是什么?那现在可以回答bean的加载吗?
5.项目中Kafka怎么使用的?消息队列中消息一直堆积该怎么办?相比用Redis来做消息队列有什么好处?
6.ES做搜索的原理?倒排索引了解吗?关键词对应多个文档该怎么办?
7.项目中用到的线程池是什么?怎么创建的?为什么选FixedThreadPool?
8.你说饱和策略采用的是抛弃的方法,那当遇到同时产生大量线程的场景,你的网站页面会有什么样的表现?为什么不用将线程排队的方法?
9.Java的线程有没有对应os上的线程?
10.项目中Redis是怎么使用的?热点数据是怎么在缓存中生成的? 答:定时任务实时地统计热度值,在内存中进行堆排序取TopN,存到缓存中。
11.假如Redis中有多个KV要更新,KV1更新了,KV2失败了怎么办?Redis不支持回滚,那要怎么设计? 答:版本号机制。
反问
1.怎么把基础知识应用到实际项目中? 答:学习优秀的工具和中间件的解决方案,比如Redis内存加单线程就是速度快,所以就有了Nodejs这种技术,就是一样的单线程。技术就是用来解决问题的,始终是绕不开这些基础问题的核心思想的。
全部评论
(14) 回帖