- handler机制,sendMessage和post(Runnable)的区别。
- ThreadLocal原理,底层实现
- HashMap底层,扩容,LinkedHashMap
- Service的onBind和onStart差别
- Activity启动生命周期,A跳转B
- Android持久化方案,SharedPreference是否可以跨进程通讯。ContentProvider
- ClassLoader机制,双亲委派。如果我要写一个Activity类,那怎么保证加载的是我自己写的Activity
- 算法题,约瑟夫环
- 反问
字节跳动二面
- 自我介绍
- 项目技术点详解
- 写过什么自定义View
- OkHttp代码看过吗,用了什么设计模式
- MVC、MVP区别,项目中的实现。
- LiveData和EventBus的相关讨论,真的是讨论,畅所欲言
- 看过哪些源码
- SharedPreference相关
- Android动画了解吗,用过什么
- TCP、UDP区别,面试时的语音用的是什么,为什么要这么用。
- 代码题,5个线程对一个int进行累加到1000.
- 反问
字节跳动三面
让我们来一起看看字节跳动第三面,面试官都问了什么呢?你又能答上来多少?
-
ArrayList的使用,然后问他ArrayList使用过程中有没有遇到过坑;
-
还问了HashMap,问了差不多20分钟。还有aba问题,GC算法,泛型的边际这些东西;
-
接着问了Handler中loop方法为什么不会导致线程卡死,还有就是动画的原理,问他有没有实战过补间动画;bugly上面收集到的最难的bug是怎样的,如何解决的?
-
还有MeasureSpec的意义,问了一般怎样计算MeasureSpec;自定义View和自定义ViewGroup的区别;onmeasure,onLayout,onDraw的调度流程;自定义View的measure时机;有没有写过自定义View;
-
问了Glide使用过程中的坑,EventBus使用过程中的坑;
-
多线程开发中你都在哪些地方使用过sleep,wait,分别怎么使用的;
-
还有网络协议okhttp中的缓存机制,dex加载流程,组件化的原理;
-
还有就是Fragment的生命周期管理过程中遇到的坑和解决办法;
-
还有排序算法,还有观察者模式和单例模式,还问了抽象类和接口的关系;
-
还有就是应用启动流程,activity 启动流程,为什么要每个应用有一个自己的虚拟机,这个虚拟机和JVM的关系。
-
databinding原理,binder原理;
-
多进程通信问题;binder优势;aidl生成的java类细节;多进程遇到过哪些问题?
-
子线程中维护的looper,消息队列无消息时候的处理节省性能的处理方案;
-
你遇到的最难的技术问题和解决方案;
朋友跟我吐槽:“我靠,现在面试高级工程师都这么难的吗?”
是的,安卓高级工程师要求就是这么高,待遇也高啊!
大厂面试真题必问
要想成为高级工程师,Binder和Handler是必须掌握的!从字节跳动面试官提的这些问题,也可以看出,现在面试问的很多都是原理。
一线企业的app都是多线程和多进程的,而Android的进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点!
那么Binder和Handler的原理应该怎么学,应该学到什么程度?
你可以看看这两个大厂面试真题:
1)你知道广播有哪几种吗?(是不是觉得很傻逼…)
- 那么广播的注册方式有哪几种?(侮辱你了,对不对?)
最后
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**