前言
去年11月份因为家里出了一些事情,从老东家辞职,在家待了一段时间。本想着年后再出来找工作,但是“梦想是美好的现实是残酷的”年底爆发了疫情,直接把我的计划打乱了,直到3月中旬才出来找工作。
因为疫情原因整个Android开发行业都受到了打击,一些公司也开始裁员,竞争压力变大,刚开始找了十几个大大小小的公司,面试了十几次都没通过,要不就是过了,自己却不满意的。
于是我决定把这段时间面试所遇到的问题总结起来,沉淀一段时间,把所有面试中遇到的Android知识点都学习一遍,沉淀了一段时间学习后终于是“皇天不负有心人”在5月初拿到了爱奇艺的offer。
BAT面试专题
1、要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?
2、对于Android 的安全问题,你知道多少
3、如何缩减APK包大小?
4、Android与服务器交互的方式中的对称加密和非对称加密是什么?
5、设备横竖屏切换的时候,接下来会发生什么?
6、Android启动Service的两种方式是什么? 它们的适用情况是什么?
7、谈谈你对Android中Context的理解?
8、Service的onCreate回调在UI线程中吗?
9、请介绍下AsyncTask的内部实现,适用的场景是?
10、谈谈你对binder机制的理解?
11、Android中进程间通信有哪些实现方式?
12、介绍下实现一个自定义view的基本流程
13、Android中touch事件的传递机制是怎样的?
14、Android多线程的实现方式有哪些?
15、Android开发中何时使用多进程?使用多进程的好处是什么?
16、ANR是什么?怎样避免和解决ANR?
17、Android下解决滑动冲突的常见思路是什么?
18、如何把一个应用设置为系统应用?
19、Android内存泄露研究
20、内存泄露检测有什么好方法?
线程、多线程和线程池面试专题
1、开启线程的三种方式?
2、run()和start()方法区别
3、如何控制某个方法允许并发访问线程的个数?
4、在Java中wait和seelp方法的不同
5、谈谈wait/notify关键字的理解
6、什么导致线程阻塞?
7、线程如何关闭?
8、讲一下java中的同步的方法
9、如何保证线程安全?
10、两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
11、线程间操作List
12、Java中对象的生命周期
13、static synchronized 方法的多线程访问和作用
14、同一个类里面两个synchronized方法,两个线程同时访问的问题
15、volatile的原理
16、synchronized原理
17、谈谈NIO的理解
网络编程面试专题
1.网络分层
2.TCP/IP五层模型
3.三次握手与四次挥手
4.TCP为什么三次握手不是两次握手,为什么两次握手不安全
5.为什么TCP是可靠的,UDP早不可靠的?为什么UDP比TCP快?
6.http协议
7.http的get和post的区别
8.socket和http的区别
9.TCP与UDP区别
10.https
11.加密算法
12.Volley
13.OKHttp
14.Retrofit原理
15.Retrofit流程
16.Retrofit优点
要如何成为Android架构师?
搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;
对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,在这里点击GitHub免费分享,希望能帮你突破瓶颈,跳槽进大厂;
最后我必须强调几点:
1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境
吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境