6.集合框架,list,map,set都有哪些具体的实现类,区别都是什么。
7.concurrentHashmap原理,原子类。
8.volatile原理。
9.Binder机制。
10.View的绘制流程,事件传递机制,Handler异步消息机制。
11.Interger中的128(-128~127),这里考的是常量池的概念,这个没回答上来。
12.线程池的相关知识。
13.Handler机制,HandlerThread实现等等。
14.LRUCache算法是怎样实现的。
就这样第一面基本结束。一共问了14个问题,其中美团的手写算法在业界算是比较出名,很多小伙伴可能卡在手写算法上。然后就是一些Android和Java的细节性东西,这些基础内容只要有1年经验的都基本能说出个一二三。
第二面
**面试官可能没注意我是海外党有时差,凌晨四点来了通电话约时间,还好顺利的约到第二天上午~
二面面试官感觉专业了很多,问问题也比较灵活。有时候会有点像在怼的打断然后追问,但是有答得不好的地方也会很耐心的引导**
1.写个快速排序
2.生产者消费者伪代码(因为和面试官思路不同加上紧张,代码反反复复改了很久,面试官也一直在写代码引导我)
3.顺带讲了一下wait() await()这一系列方法
**4.如何用数组实现队列(直接说抽象的环,但面试官一直在引导细
资料获取→专栏
节如何更优化,比如怎么判断队满,决定插入位置怎么省去if…感觉面试官真的很耐心)**
5.如何用数组实现栈
6.弱引用,有什么用?有没有用过?
7.如果写一个库中存在的类,包也一样,会怎么样?
8.提到类加载要确保类的唯一性,怎么确保?
9.三次握手,为什么要三次
10.TCP怎么保证可靠
11.如果包乱序到达会发生什么
12.进程和线程的区
别
13.追问进程之间为什么会相对比较独立?电脑上看起来运行着很多进程,是怎么隔离的?
14.如果一个进程需要一直读写内存,会影响其他进程吗?(这里我开始结结巴巴瞎说了…面试官安慰了一下)
15.知道几种单例模式的写法?有什么优缺点
16.Hashmap原理
17.扩容具体是怎么做的?原本的元素要怎么放进新数组?
第三面
1. 自我介绍
2. 项目(项目怼了挺久的,一直深挖。建议大家要非常熟悉简历上的项目,一些细节也要注意到,这个环节差点被怼哭🤣)
3. 有没有了解过插件化?插件化和组件化什么区别?
4. Applicatipn Context在什么情况下不能使用。(面试官提示dialog了我还不会,这个需要重点注意一下)
5. 加载一张特别大的图片,该如何操作?(一面面试官也问了这个问题!回答的特别流畅哈哈哈)
**6. 一定要在主线程中更新UI吗?能不能在子线程更新?(这个我有一点印象,最后是面试官疯狂提示才想出来的
surfaceView)**
7. LRU的底层数据结构?双向链表如何提高查询效率?
8. kotlin是如何兼容Java的(这个我真不会,没想到连这都问)
9. 你觉得你最大的优势是什么?(balabala讲了一堆,主要讲自己的学习能力强,团队合作能力强)
10. 反问环节
三面总结: 三面主要是围绕项目,然后面试官问的特别特别深。相比之下,二面比较注重广度,考察你对整个安卓体系的知识。三面比较注重深度,考察你对安卓底层源码以及框架源码有没有深入的研究。
hr面
1. 自我介绍
2. 实习在做什么项目?有没有遇到什么困难,如何解决?
3. 除了实习,有没有其他安卓项目,如何分工。和组员有矛盾如何解决?
4. 你觉得你应聘这个岗位最大的优势是什么?
5. 反问环节
hr面总结:其实hr面大家基本上如实回答就可以了,hr只是想要通过聊天对你有一个基本的了解,不要回答的太偏激太离谱就行。最终刷人也是综合一二三面的成绩排序。
总结
这次面试感觉还不错,美团的开发同学待人方面很随和。很喜欢这种氛围。结果不重要,重要的是过程。只要你有实力,就别担心。如果不好好学习,就算背了面试题,又能如何?一样会在面试中PASS。所以说,平时写代码的时候需要多多思考,不一定用到才去Google,对于一些新的技术,要不断追求同时别忘记了基础很重要,基础,基础,基础,重要的事说3遍。
在接下来的学习和工作中,需要学习继续探索以下问题。
1 Java基础知识。线程,java虚拟机,内存模型等。
2 Android基础知识。官方API,常用控件源码,自定义控件,动画,性能分析等。
3 app层面:第三方开源框架(okHttp,Retrofit,ButterKnife),热修复技术(Andfix,Robust,Tinker等),崩溃处理,日志处理,内存溢出内存泄漏定位等。
4 网络基础:TCP/IP,Http/Https,UDP,七层网络协议等等。
2 Android基础知识。官方API,常用控件源码,自定义控件,动画,性能分析等。
3 app层面:第三方开源框架(okHttp,Retrofit,ButterKnife),热修复技术(Andfix,Robust,Tinker等),崩溃处理,日志处理,内存溢出内存泄漏定位等。
4 网络基础:TCP/IP,Http/Https,UDP,七层网络协议等等。