小米安卓开发一二面面经
秋招结束辽,把之前整理的面经发出来分享分享
小米感觉面得不错,收到恭喜函,可惜没等到开奖,今年每家都有池子啊
一面9.29
1、手撕:使用一个固定长度数组实现队列,包括添加和取数据的功能
2、时间复杂度、空间复杂度,如何优化
3、链表如何优化,可以降低查询的时间复杂度?
4、hashmap插入数据的流程?
5、如何计算hashmap数据插入的位置?
6、如何解决哈希冲突?
7、多线程如何解决线程冲突?
8、手撕:手写一个单例模式
9、volatile 和 synchronized 有什么区别?
10、synchronized 和 lock 有什么区别?
11、synchronized 底层是如何实现加锁操作的?
12、对象、锁、对象监视器相互之间的关系?
13、乐观锁如何实现?缺点有哪些?
14、ThreadLocal 是如何存储的?
15、ThreadLocalMap中遇到冲突是如何处理的?
16、框架部分是如何学习的?遇到问题如何解决?
17、如果转安卓开发,将怎样制定学习路线?
18、对小米的了解?(我说我老米粉了,给面试官整笑了)
反问
(面试之前沟通时我说不会安卓,他也就没问我安卓的东西,面试官人还挺好的)
二面9.30
1、为什么会转码?(…每次面试必问)
2、有一千个键值对的数据,如何设计HashMap的初始容量大小?
3、HashMap的扩容机制是什么样的?
4、ConcurrentHashMap 是如何实现线程安全的?如果让你设计锁的数量你会怎么设计来提高效率?
5、synchronized 底层是如何实现的?
6、ReentrantLock 如何实现公平锁与非公平锁?
7、公平锁与非公平锁的释放有什么区别?
8、线程的 wait 和 block 有什么区别?和 sleep 有什么区别?
9、JVM 中创建一个对象的过程是什么样的?
10、JVM 如何判断一个对象需要被回收?
11、如果电脑内存是4G,已经使用了3G,现在启动一个程序需要超过1G的内存,会发生什么?(内存回收)
12、SpringBoot相比于Spring有什么优势?
13、Spring中控制反转和依赖注入有什么区别和联系?为什么要进行控制反转?有什么好处?
14、单例模式的好处有哪些?应用场景有哪些?
15、三种工厂模式有什么区别?
16、类加载过程是什么样的?
17、双亲委派模型有什么作用?
18、项目中如何设计单点登录?如何实现你这边登陆,另一边强制下线的功能?
19、OSI七层模型介绍一下?应用层有什么协议?
20、三次握手变成两次可不可以?为什么?
21、手撕:二叉搜索树第 k 小的节点
小米面试官感觉都挺好的,不会的问题会进行引导,二面多问些场景题。
#面经分享##小米22届秋招面试#