下面要给大家分享的是一个小米java社招的面试经验,内容包括了一面二面的面试题,对小米java社招感兴趣的小伙伴可以来了解一下。
面试题(一面)
1、volatile关键字的作用是什么?原理是什么?
volatile在Java并发编程中常用于保持内存可见性和防止指令重排序
2、常用Java集合类
List 列表,有序,可重复;Queue 队列,有序,可重复;Set 集合,不可重复;Map 映射,无序,键唯一,值不唯一每种集合类型下都包含多个具体的实现类。
3、Java synchronized关键字的作用是什么?原理,锁升级、锁粗化、锁消除
4、二分查找(递归和非递归)
5、反转链表(递归和非递归)
6、事务的ACID,每一项是怎样保证的?
7、HashMap为什么长度是2的n次幂,数据结构,扩容(包括元素移动的细节),线程不安全的问题
8、ConcurrentHashMap怎么保证线程安全,1.7和1.8有什么变化,为什么要要这么优化
9、CopyOnWriteList怎么保证线程安全,为什么这么做?
10、MVCC
11、MySQL的索引结构,为什么是B+树而不是B树?
B树在提高IO性能的同时,并没与解决元素遍历时效率低下的问题,正是为了解决这个问题,B+数应运而生。
B+数只需遍历叶子节点即可实现整棵树的遍历,而B树必须使用中序遍历按序扫库,B+树支持范围查询非常方便。这才是数据库选用B+树的主要原因。
面试题(二面)
1、求递增数组中相加等于10的元素对
2、先升序后降序的数组排序
3、一个url对应一个random值,要求设计一个系统,依据url查询random值,具体到表如何设计?索引如何加?代码如何写?
4、17^400-19100计算结果能不能被10整除
5、讲项目,画架构图,为什么这么设计?哪一块是你做的?为什么这么做?做了多久?
以上就是小米java社招面试经验的分享了,更多小米java面经面试题,请继续来本站了解吧。