小米java后端一面(100分钟)二面(40分钟)

一面
1、手写快排
2、手写LRU算法
两个算法题看起来简单,但是写的过程中面试官一步一步地提出一些新的要求,问了一些非常细致的问题,比如如何让LRU线程安全,我回答的直接加Synchronized,或者使用读写锁,还可以使用分段锁。又问分段的话分多少合适?我不会,他就给普及了一下最好与cpu内核数量一致,又讲了一下原因,学到了。写完算法的话一共40分钟过去了。
3、MySQL的事务隔离级别?MVCC怎么解决的可重复读和读已提交?MySQL默认隔离级别是什么?可重复读级别怎么解决了幻读问题?
4、了解redis的数据结构吗?讲一下跳表?
5、Dubbo的注册中心只能是zookeeper吗?(我说不是,redis理论上也可以)
6、为什么不用redis做注册中心?(我只答了zookeeper稳定性更高,原因没说出来)
7、GC有关的能想到多少讲多少?为什么CMS并发标记后还要有个重新标记阶段?重新标记为什么不能跟用户线程并发?
8、讲一下STW(GC中的stop the world)?
9、有看过jdk源码吗?说一下hashmap的扩容,以及你读源码的时候的自己的收获?
10、又聊了一下线程池
反问环节:对我评价一下吧
答:基础还不错,LRU算法我给你扩展了很多问题,都答的比较到位,这是比较加分的。建议的话对于redis、zookeeper、spring这些有时间还是自己读一下源码,不要只停留在会用的程度,而且也不建议只通过网上的博客来学习。回去等二面电话吧。
(整体感受:非常不错,面试官非常耐心,对于我回答的问题,他能及时反馈答得好不好,如果没答到点上,还会亲自讲解一下,学到了很多知识)
二面
1、自我介绍
2、你的分布式项目当中有用到分布式session吗?讲一下。
3、分布式锁你用的redis,为什么不用MySQL,这不是更简单吗?
4、有一个接口要查询数据库当中三张表,假设有十万个数据要查询,速度特别慢,用户容忍不了,你怎么解决?
5、redis缓存热点数据时为什么要设置随机的超时时间?
6、项目当中用的Dubbo的某个provider挂了怎么办?
7、http的get和post区别?post请求客户端如何知道请求已经到达服务端了?
8、数据库中原本有个A索引,现在想直接加个B索引,变成AB索引,能直接添加成功吗?
9、介绍一下你对线程池了解多少?如果往无界队列一直添加任务会发生什么?如何排查?
#面经##小米##校招##Java工程师#
全部评论
base?北京吗?lz
点赞 回复 分享
发布于 2021-08-19 17:34
好强!😂
点赞 回复 分享
发布于 2021-08-19 18:05
LZ太强了,膜拜
点赞 回复 分享
发布于 2021-08-24 17:15
你好,有提到不建议看博客学习,给过别的学习渠道的建议吗?求解
点赞 回复 分享
发布于 2021-09-03 14:37
太强了LZ 我想问下,LRU算法是整个类都给他实现了么
点赞 回复 分享
发布于 2021-09-08 20:55
老哥HR面了吗?oc了吗
点赞 回复 分享
发布于 2021-09-10 20:02
第8点那个是说变成AB复合索引吗?
点赞 回复 分享
发布于 2021-09-28 15:22
二面到oc多久时间
点赞 回复 分享
发布于 2021-09-28 21:54

相关推荐

11-29 11:21
门头沟学院 Java
点赞 评论 收藏
分享
评论
2
40
分享
牛客网
牛客企业服务