欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2020安卓开发面试总结

程序员文章站 2022-03-28 17:49:49
2020安卓面试总结基础知识Java基础Android基础网络基础Android常用框架源码1,ViewModel和LiveData2,Kotlin3,LeakCanary的实现原理4,RxJava5,EventBus6,fresco和glide项目经历1,你觉得最有难度的项目,最成功的项目2,你做过什么性能优化相关的工作3,遇到问题的时候,怎么解决今年因为公司的一些变动,深思熟虑后决定出来重新找工作。刚开始以为找工作会一帆风顺,也没多做准备,结果发现现实狠狠的给了我一耳光。所以,找工作之前还是要把面试相...

今年因为公司的一些变动,深思熟虑后决定出来重新找工作。刚开始以为找工作会一帆风顺,也没多做准备,结果发现现实狠狠的给了我一耳光。所以,找工作之前还是要把面试相关的知识点仔细的准备才行。一般的面试会有以下几个方面的面试题,基础知识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,遇到问题的时候,怎么解决

本文地址:https://blog.csdn.net/zero9988/article/details/107357829

相关标签: 面试 android