很久没有写博客了。
2018年12月18号,从上家公司离职,然后给自己放了个假,然后是过年。年后来了北京重新找找工作,深感就业的艰难。终于,在2019年4月9号,入职了新的公司。
在上家公司干了3年,有3年没有面试过了,刚开始,很不适应。遇到过坑。现在,把面试,总结一下。希望,对正在找工作和即将要找工作的人有所帮助。
我算法方面,很差。我没有刷过算法题,基本就是面试遇到了,记下来,回家了学一下。所以,这个面试系列博客,算法很少,追求、注重算法的,可以忽略了。
面试相关问题:
要会 kotlin!kotlin!kotlin!
1、handler源码分析
引申问题:
send、post区别
延迟消息处理流程
2、HashMap、ConcurrentHashMap源码分析,注意区分 jdk 1.8 之前和 1.8 及以后
3、ArrayList、LinkList、SparseArray
4、Activity启动流程、view绘制流程
引申问题:
为什么Activity中,onCreate、onStart、onResume方法,都拿不到xml布局中,控件的实际宽高
拿到实际宽高的方法:view.post、视图树
对比 runOnUIThread、view.post、handler区别和联系
5、源码分析
OkHttp、Retrofit2、RxJava2、EventBus、Glide、RecycleView。。。
引申、相关问题:
对比不同的图片库:如,对比 Gilde、Picasso
OkHttp的拦截器链是怎么实现的?
RxJava2 是链式调用的,数据传递流程是什么样的?
EventBus是这么管理、切换线程的
Glide请求图片用的什么网络框架?Glide怎么拿到图片宽高的?
6、事件分发
引申问题:ScrollView、EditText滑动冲突解决
7、图文混排:SpannableString
引申问题:
TextView有行间距的时候,emoji表情会错位(下沉),如何解决
8、WebView优化、内存泄漏
引申问题:
shouldInterceptRequest
shouldOverrideUrlLoading
js(H5)、webview相互调用(原生代码)
JSBridge(js(H5)、webview相互调用的三方库)源码
外部浏览器唤醒APP,跳转到指定界面
9、自定义view相关
引申问题:
canvas.save()、canvas。restore()
强制控件展示正方形
invalidate()、postInvalidate()、requestLayout()比较
10、内存、性能优化
11、布局优化:
分析RelativeLayout、LinearLayout源码,对比其性能
ConstraintLayout使用
merge、include、viewStub使用
引申:ViewStub 源码分析
12、动画
各种动画的区别
引申:属性动画原理
内存问题:属性动画的无限动画,如果界面销毁时不停止,会造成内存泄漏
13、Java内存模型、GC机制
14、网络协议
HTTP、Https、TCP/IP
三次握手、四次挥手
引申:为什么是三次握手?2次行不行?4次行不行?为什么?
15、Activity的启动模式,对应的适用场景
引申问题:
Intent的Flag
16、单例、锁、线程、线程安全
引申问题:
有5种单例写法,都要会
乐观锁、悲观锁
wait、sleep、yield、join
volatile关键字的作用
双重判断+volatile,一定可以保证数据的线程安全么?理由、证明
17、异常
引申问题
ANR
那些情况,可以导致APP闪退、崩溃,举例说明
try{...}catch(){...}finally{...} 中
catch可以捕获Error吗?理由、证明
finally一定可以走到吗?理由、证明
对比:final、finally、finalized
18、设计模式、框架
单例、工厂、Builder、代理。。。。。。
MVC、MVP、MVVM
19、泛型擦除
20、安卓中,Dalvik、ART虚拟机对比
21、进程间通信
22、算法、现场设计功能
23、热修复、逆向。(加分项)