2020安卓开发面试总结
Posted zero9988
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020安卓开发面试总结相关的知识,希望对你有一定的参考价值。
2020安卓面试总结
今年因为公司的一些变动,深思熟虑后决定出来重新找工作。刚开始以为找工作会一帆风顺,也没多做准备,结果发现现实狠狠的给了我一耳光。所以,找工作之前还是要把面试相关的知识点仔细的准备才行。一般的面试会有以下几个方面的面试题,基础知识,Android和常用框架的源码,项目经历。记录以下面试过程中遇到的一些方向和问题。
基础知识
可以细分为Java基础,android基础和网络基础
Java基础
1,集合相关:SparseArray,ArrayMap,HashMap,ConcurrentHashMap。
1-1,SparseArray和ArrayMap,与HashMap相比的优点是什么?
1-2,SparseArray的get操作时间复杂度?
1-3,什么时候适合使用SparseArray替代HashMap
1-4,HashMap的put方法
1-5,ConcurrentHashMap的get和put方法,如何实现同步的
2,多线程和锁相关
2-1,sychornized修饰静态方法和非静态方法的区别?
2-2,volatile关键字
2-3,线程状态转换,wait和sleep的区别
2-4,java的4个线程池的工作流程
3,虚拟机相关,gc,内存,引用
3-1,标记清楚marked-sweep算法,复制coying算法,标记压缩算法
3-2,内存分布,新生代(Eden,Survivor1,Survivor2),老年代,永久代
3-3,art的gc算法
3-4,强引用,弱引用,软引用,虚引用(这个好像用不到)的区别
3-5,daivik和art的区别
3-6,dex文件为什么有最大方法数限制
4, 设计模式
4-1,单例的实现,如何防止被反射调用。
Android基础
1,进程间通信
1-1,有哪些进程间通信的方式
1-2,对Binder的理解
1-3,Binder的优势
2,Handler机制的理解
2-1,描述Handler机制
2-2,postDelay是如何实现的
2-3,HandlerThread的理解
2-4,Messenger的理解
3,事件分发机制move,down,up,cancel
3-1,描述点击事件分发机制,这个一定要搞的很清楚,会有各种问题。
3-2,有一个LinearLayout-A,里面有一个Button-B,按住B,然后移动到B外,事件是如何分发的。
4,activity相关
4-1,activity启动模式
4-2,activity启动过程
4-3,activity生命周期,与fragment嵌套的时候,启动过程生命周期,销毁过程的生命周期,启动一个透明的activity生命周期,返回上一层时的生命周期
4-4,window,decorView的理解
4-5,如何实现activity在不同应用之间的转移(taskAffinity + allowTaskReparenting)
4-6,taskAffinity的理解
单纯使用 taskAffinity 不能导致 Activity 被创建在新的任务栈中,需要配合 singleTask 或者 singleInstance
5,Service
5-1,start和bind的区别,多次start和多次bind的生命周期
6,其他
6-1,SurfaceView和View
6-2,apk安装过程
6-3,插件化的理解
6-4,统计方法执行时间的方法,安卓AOP相关知识(APT, AspectJ, Javassist,Javapoet,TransformAPI,JVMTI,ASM)
6-5,webview相关知识,如何设置cookie
6-6,卡顿检测的两种方法MainLooper的setMessageLogging和Choreographer.getInstance().postFrameCallback
6-7,anr的原理(postdelay延迟消息,埋炸弹 拆炸弹 引爆炸弹)
网络基础
1,https的过程解析
2,http状态码206等
3,http请求头和响应头的相关参数,range,host等
4,http的缓存机制:expire cache-control last-modify E-tag
5,tcp三次握手
Android常用框架源码
1,ViewModel和LiveData
1-1,LiveData的生命周期是如何实现的,旧版本的Activity如何实现Liveda的生命周期
1-2,LiveData会有什么问题吗-粘性的,生命周期resume时才会生效。
1-3,LiveData如何让他不要粘性
1-4,ViewModel的数据什么时候会销毁,例如手机屏幕旋转导致activity销毁时,ViewModel的数据会怎么样
2,Kotlin
2-1,Kotlin的协程
2-2,常用关键字
2-3,object关键字
2-4,kotlin中的静态方法的理解
3,LeakCanary的实现原理
4,RxJava
4-1,背压
4-2,线程池管理
4-3,为什么subscribeOn第一次执行生效
5,EventBus
5-1,EventBus的实现原理
5-2,粘性事件是怎么实现的
6,fresco和glide
6-1,fresco和glide的缓存机制
项目经历
1,你觉得最有难度的项目,最成功的项目
2,你做过什么性能优化相关的工作
3,遇到问题的时候,怎么解决
以上是关于2020安卓开发面试总结的主要内容,如果未能解决你的问题,请参考以下文章