3年Java程序员奔着20k跳槽惨别虐,小米+360三面面试题揭露

482 阅读4分钟

小米

一面

1. 线程池用过哪些,线程池有哪些参数,然后问我几个常用线程池的用法和实际场景问题。

2. 集合框架的知识,hashmap,ArrayList,LinkedList源码相关知识,基本整个介绍了一遍,与hastable,concurrenthashmap相互的关联和区别

3. 说几个垃圾回收器,cms回收器有哪几个过程,停顿几次,会不会产生内存碎片。老年代产生内存碎片会有什么问题。

4. 讲讲快速排序,分析一下时间复杂度?

5. 双亲委派模型介绍一下

6. java中同步、volatile关键字

7. jvm内存分区,为什么要有新生代和老年代

8. 有做个JVM内存优化吗?

9. 数据库索引 主键和唯一索引有什么区别

10. 聚集索引和非聚集索引的区别?

11. MySQL存储引擎innoDB和MyISAM的区别?

12. innoDB的B+树索引叶子节点的Data域存储的是什么?MyISAM的B+树索引叶子节点的Data域存储的是主键还是物理地址?


二面

1. MySQL innodb的b+树索引,主键索引,聚簇索引有什么区别。

2. 数据库四大特性

3. 事务的四大隔离级别

4. jvm场景问题, 标记清除多次后老年代产生内存碎片,引起full gc,接下来可能发生什么问题。

5. MySQL里有哪些锁,行锁表锁,乐观锁呢

6. MySQL的死锁怎么产生的,举了两个例子。

7. dubbo里的zookeeper是做什么的

8. aio,nio,bio的了解,NIO的核心概念有哪些?

9. 常用的NIO框架有哪些?优劣势


三面(总监面)

1. 分布式下redis如何保证线程安全

2. redis持久化的方式以及区别

3. zookeeper如何实现分布式锁、其他分布式锁怎么实现

4. kafka的架构,如何用kafka保证消息的有序性

5. 数据库的优化包含哪些?MySQL的优化,谈两个你优化的例子。

6. 最有技术难度的项目,介绍下相关核心设计流程。

7. 工作中,遇见了技术瓶颈无法解决,你的解决思路?

8. 未来你的职业规划是怎么样?



360

一面

1. 简短自我介绍

2. 事务的ACID,其中把事务的隔离性详细解释一遍

3. 脏读、幻影读、不可重复读

4. 红黑树、二叉树的算法

5. 平常用到哪些集合类?ArrayList和LinkedList区别?HashMap内部数据结构?ConcurrentHashMap分段锁?

6. jdk1.8中,对hashMap和concurrentHashMap做了哪些优化

7. 如何解决hash冲突的,以及如果冲突了,怎么在hash表中找到目标值

8. synchronized 和 ReentranLock的区别?

9. ThreadLocal?应用场景?

10. Java GC机制?GC Roots有哪些?

11. MySQL行锁是否会有死锁的情况?


二面

1. 乐观锁和悲观锁了解吗?JDK中涉及到乐观锁和悲观锁的内容?

2. Nginx负载均衡策略?

3. Nginx和其他负载均衡框架对比过吗?

4. Redis是单线程?

5. Redis高并发快的原因?

6. 如何利用Redis处理热点数据

7. 谈谈Redis哨兵、复制、集群

8. 工作中技术优化过哪些?JVM、MySQL、代码等都谈谈


三面

1. Spring Cloud用到什么东西?如何实现负载均衡?服务挂了注册中心怎么判断?

2. 网络编程nio和netty相关,netty的线程模型,零拷贝实现

3. 分布式锁的实现你知道的有哪些?具体详细谈一种实现方式

4. 高并发的应用场景,技术需要涉及到哪些?怎样来架构设计?

5. 接着高并发的问题,谈到了秒杀等的技术应用:kafka、redis、mycat等

6. 最后谈谈你参与过的项目,技术含量比较高的,相关的架构设计以及你负责哪些核心编码



总结

面试之前一定要准备后再去面试。LeetCode题目也要刷。基础知识要熟悉。

切记面试前一定要刷题和准备(刚开始在上面栽了跟头),简历上的项目不熟悉的千万不要写上去,写上去的项目备好2-3个技术方案。

我个人认为,作为技术人就要保持终生学习的态度,让学习力成为核心竞争力,才能不被时代所淘汰,而高效的时间支配能让你变得更加优秀,所以,我在这里将这份耗时两个月整理出来的核心技能知识点,送给有需要的人,希望这份资料能对大家有所帮助

需要这些资料的可以点击免费获取

更多资料展示