前言
这是《拔剑金九银十》的第二篇文章,本文主要为面试三年多的安卓开发者高级开发工程师而整理。 3年以下的合作伙伴请走下一步:这是面向0-3年安卓开发者的面试宝典,收录于2020年一线互联网大厂的面试正题系统!
希望对你们有帮助。 少说废话,进入正题。
目录:
Java中高级
计算机网络
安卓高级面试-性能优化
安卓卓越的第三方库
安卓框架相关
其他安卓高频问题
一、Java中高级
1,谈谈对java多态性的理解吧?
2、你知道的设计模式是什么?
3、静态代理和动态代理的区别用于什么场合?
5、简单工厂、工厂方法、抽象工厂、生成器的模式不同?
6、装饰模式和代理模式的区别是什么? 与桥接模式相比?
7、集合框架、list、map、set有哪些具体的实现类,区别是什么?
8、HashMap和HashTable的主要区别是什么?两者的基础数据结构是什么?
9、HashMap、ConcurrentHashMap、hash ()相关原理的解析?
10、谈谈你对Java反射的理解吗?
11、介绍一下java的总称、总称消去以及相关的概念、分析和分配?
12、Java的char是2字节,怎么存储Utf-8的文字?
13、你对字符串存储器内的存储形式有很深的了解吗
14、java虚拟机命令的识别(高度) ) ) ) )
15、什么是线程池? 怎么使用? 为什么要使用线程池?
16、同步的原理?
17、多线程的使用场景?
18、对JVM内存模型的理解?
19、要说明GC的原理和回收战略吗?
20、类加载器、tdbd机制、安卓类加载器。
21、Java的虚拟机JVM的两个内存:堆栈内存和堆内存的区别是什么?
22、JVM、Art、Dalvik的区别、比较
23、JVM调谐常见的命令行工具是什么? JVM常见的调谐参数是什么?
.
二、计算机网络
1、HTTP和HTTPS的区别是什么?
2、将HTTP2.0与HTTP1.X进行比较的新特性
3、Https请求慢的解决方案
4、由Http的请求和响应的协议组成
5、谈谈http缓存。
6、Https加密的原理。
7、客户端如何验证CA证书?
8、HTTPS下的SSL握手过程
9、HTTPS如何防止中间人攻击?
10、为什么tcp经过3次握手,挥手4次?
11、TCP可靠传输原理的实现(滑动窗口)。
12、Tcp和Udp的区别?
13、插座断线重新连接是如何实现的,心跳机制是如何实现的?
14、Cookie和Session的作用和原理。
15、浏览器输入地址反馈结果发生了什么?
.
三、性能优化
1、在哪些APP的稳定性方面进行过优化?
2、业务稳定性如何保障?
3、如果发生异常情况,如何迅速赔钱?
4、如何进行启动优化?
5、怎么不同步? 异步有问题吗?
6、对于版本迭代导致启动延迟有没有好的解决方法?
7、做内存优化最大的感受是什么?
8、如何避免内存抖动? (代码注意事项)
9、如何解决内存泄漏10、在进行布局优化的过程中使用了什么工具?
11、布局为什么会导致卡顿? 怎么优化的?
12、如何自动获取纸箱信息?
13、TextView setText需要时间的原因、TextView绘图层对源代码的理解?
14、谈移动端获取网络数据优化的几点
15、提高APP安全性的方法是什么?
16、安卓的APP加固怎么办?
17、安卓的混淆原理是什么?
18、谈谈你对安卓签名的理解。
19、优化自定义视图的方法
20、分析跟踪视图的实现原理、数据的误差来源。
.
四、第三方库
1、网络基础框架: OkHttp的实现原理
2、OKhttp是如何针对网络层进行优化的
?
3、网络请求缓存处理,okhttp如何处理网络缓存的?
4、从网络加载一个10M的图片,说下注意事项?
5、网络封装框架:Retrofit实现原理6、响应式编程框架:RxJava实现原理
7、图片加载框架:Glide实现原理
8、Glide如何确定图片加载完毕?
9、Glide内存缓存如何控制大小?
10、加载bitmap过程(怎样保证不产生内存溢出)
11、Android中软引用与弱引用的应用场景。
12、LruCache原理
13、Fresco与Glide的对比
14、Bitmap如何处理大图,如一张30M的大图,如何预防OOM?
15、事件总线框架EventBus实现原理
16、内存泄漏检测框架:LeakCanary实现原理
17、leakCannary中如何判断一个对象是否被回收?如何触发手动gc?c层实现?
18、依赖注入框架:ButterKnife实现原理
19、依赖全局管理框架:Dagger2实现原理
20、数据库框架:GreenDao实现原理
…
五、Android Framework相关
1、简单说下Android系统架构
2、View的事件分发机制?滑动冲突怎么解决?
3、如何解决View的事件冲突?举个开发中遇到的例子?
4、View的绘制流程?
5、LinearLayout的onLayout方法实现解析(layoutVertical核心源码)
6、Requestlayout,onlayout,onDraw,DrawChild区别与联系?
7、Android中进程和线程的关系?区别?
8、如何开启多进程?应用是否可以开启N个进程?
9、Android中IPC方式、各种方式优缺点?为何需要IPC?多进程通信可能会出现的问题?
10、讲讲AIDL?如何优化多模块都使用AIDL的情况?
11、为什么选择Binder?Binder机制的作用和原理?
12、Binder框架中ServiceManager的作用?
13、Android系统启动流程是什么?
14、AMS家族
15、App启动流程(Activity的冷启动流程)
16、ActivityThread工作原理?
17、说下四大组件的启动过程,四大组件的启动与销毁的方式。
18、广播发送和接收的原理
19、AMS是如何管理Activity的?
20、大体说下一个应用程序安装到手机上时发生了什么?
21、Android的打包流程?
六、其他高频面试题
1、MVC MVP MVVM原理和区别?
2、可以说一下MVC->MVP->MVVM演进过程吗?
3、热修复原理?插件化原理?
4、ARouter路由原理?
5、Gradle生命周期
6、如何保证一个后台服务不被杀死?比较省电的方式是什么?
7、Android动画框架实现原理。
8、低版本SDK如何实现高版本api?
9、说说你对Context的理解?
10、Android的生命周期和启动模式
11、ListView和RecyclerView系列
12、如何实现一个推送,消息推送原理?推送到达率的问题?
13、对谷歌新推出的Room架构有了解吗?
14、Debug跟Release的APK的区别?
15、Android中进程内存的分配,能不能自己分配定额内存?
16、SurfaceView和View的最本质的区别?
17、曲面屏的适配。
18、TextView调用setText方法的内部执行流程。
19、怎么控制另外一个进程的View显示(RemoteView)?
20、对文件描述符怎么理解?
…
附答案解析的话文章篇幅实在太长了,所以将面试系列文章上传在GitHub了。需要的小伙伴自行获取就好了:https://github.com/Timdk857/Android-Architecture-knowledge-2-(文末扩展链接)也可以关注后私信我【面试】即可获取答案
文末
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
点个关注呗,后续更腾讯、阿里、百度、字节跳动等一线互联网大厂的面试真题集锦。
也不想说太多的鸡汤,就写到这里吧,希望可以收到三两个赞。住大家面试顺利