小米社招Java岗一二面
一面
1、常用Java集合类。
(1)Java 中的集合主要分为四类:
•List 列表,有序,可重复;
•Queue 队列,有序,可重复;
•Set 集合,不可重复;
•Map 映射,无序,键唯一,值不唯一每种集合类型下都包含多个具体的实现类;
2、HashMap为什么长度是2的n次幂,数据结构,扩容(包括元素移动的细节),线程不安全的问题。
3、ConcurrentHashMap是如何保证线程安全的?
4、1.7和1.8有什么变化?为什么要做这样的优化?
5、CopyOnWriteList怎么保证线程安全,为什么这么做?
6、Java synchronized关键字的作用,原理,锁升级、锁粗化、锁消除。
7、volatile关键字的作用,原理。
8、MVCC;
9、事务的ACID,每一项是如何保证的?
10、MySQL的索引结构,为什么是B+树而不是B树?
11、手撕代码:二分查找;这道牛客题霸上有原题,大家可以去看看:NC105二分查找
12、手撕代码:反转链表;这道牛客题霸上也有原题,大家可以去看看:NC78反转链表
二面
1、求递增数组中相加等于10的元素对。
2、17^400 - 19100计算结果能不能被10整除。
3、先升序后降序的数组排序。
4、一个url对应一个random值,要求设计一个系统,根据url查询random值,具体到表怎么设计,索引怎么加,代码怎么写?
5、讲项目,画架构图,为什么这么设计,哪一块是你做的,为什么这么做,做了多久。
三面
1、自我介绍。
2、单例模式的几种写法,并解释一下为什么。
3、tcp握手挥手过程,以及socket的状态变化。
4、线程的状态,以及变化的时机。
5、Java内存模型,堆的组成,gc过程。
6、synchronized修饰同一个类的两个静态方法同步吗,为什么?
7、线程池设置了coreSize和maxSize之后,如果线程数量已经达到了coreSize,8、这个时候进来一个任务,会怎么处理?
9、SQL查询优化怎么做?
10、镜像二叉树(递归和非递归)
11、删除二叉搜索树的某一个节点。
12、给定数组,求第k大的数字
13、你的优点是什么,缺点是什么?
14、最快什么时间入职,薪资要求。
15、你有什么要问我的吗?
#小米##社招##Java工程师##面经#