小米二面已OC(offer已接,还愿)
小米二面(1小时22分钟)
1小时零2分面试提问,20分钟做笔试
SpringBoot的启动过程。
@SpringBootAppliction注解的了解,里面有三个重点的注解
基于项目,简单谈对微服务的理解。
Set的实现HashSet、TreeSet、LinkedHashSet,HashSet底层实现和Treeset的排序方式
Map死挖HashMap的底层、1.7和1.8,为什么要链表转为红黑树,什么情况下红黑树?红黑树优点?对于插入一个元素,考虑rehash的过程为O(n),但是平均时间复杂度就是O(1)。
Redis的数据结构,zset的底层实现和跳跃表的实现原理,Redis是单线程还是多线程,为什么单线程,持久化问题,RDB和AOF和混合持久化。
线程与进程区别:多线程是如何通信,多线程中volatile,如何实现单例模式,饿汉和懒汉,深究如何实现,为什么这样懒汉和饿汉。写个死锁,如何解决死锁。(四个条件,破坏四个条件。使用jps -l找到当前运行java的进程号,jstack -l 进程号,查看死锁的地方)
乐观锁和悲观锁的区别。MySQL共享锁和排他锁,共享锁如何实现,如何确保ACID特性?乐观锁有没有对数据加锁(没有)。还有三个log,binlog、redolog和rudolog,主要掌握binlog和redolog的实现和作用。如何实现主从一致性,我答的不太好,可自行百度大牛的。数据库的优化(SQL语句的优化、索引的使用还有缓存命中等,掌握几个常见的分析,explain 语句、show variables like ‘COM’ 和 show variables like ‘handler',建议看书)
网络相关:TCP与UDP,为什么三次不是两次,四次挥手为什么要等待两个最长消息时间。DNS的协议是哪个(TCP和UDP的使用场景不同),ping的协议是哪个(ICMP)。
操作系统:Linux的线程间通信和进程间通信,常见的指令。netstat,top,free,df,ifstat,ps -mp等
JVM:JVM调优,Java里一些指令,好像从死锁的时候展开问的。jinfo、jinfo -flag等等。三类参数:标配、X参数和XX参数(重要)。
手写一个TopK问题,最快的方式。比较简单,快排可以实现。我算法写的没毛病,就是因为快排的一个等号边界问题调了半天就是没发现,前一天做美团的面试也有类似的,但是真就1个多小时的提问有点懵,脑子短路就是搞不定。面试官最后善意提醒了才解决,太尴尬了。
记得不太清,比较乱,凑合看,因为小米的面试官问的确实比较开发和深入,不是说按着八股分类问的,而是你自己讲到一些点,他觉得重要会深挖,所以自己给自己挖的坑,一定要填上。
base武汉,薪资高于华为,可能是sp,给的offer已接。期待大家都能如愿。
#小米##面试题目#