小米社招面试经验java,面试题整理(一面二面)

下面要给大家分享的是一个小米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面经面试题,请继续来本站了解吧。