Android 面试官:这些经验要记录好,面试途中会遇到,做了 6 年的 Android
了解清楚候选人背景后,要根据简历,有针对性的准备问题,可以是他作品或做过项目里的某个技术细节的实现方式,也可以是他声称精通的某些领域的相关问题。总之不要等到面试过程中现想问题,特别是刚开始面试别人的同学,往往经验不足稍带紧张导致大脑短路,其实也是很尴尬的,把要问的问题提前写下来,准备充分。
面试官通常会问哪些深度与广度并存的 Android 面试题呢?
因文章篇幅长度有限,我就在这里简单的列举几类很经典的 Android 面试题更大家进行分享一下,如果大家想要了解更多 Android 大厂面试题,可以直接去我 GitHub:https://github.com/733gh/Android-T3 参考学习。
第一章 Android FrameWork
Android 中多进程通信的方式有哪些? 进程通信你用过哪些?原理是什么?(字节跳动、小米)
描述下 Binder 机制原理?(东方头条)
Binder 线程池的工作过程是什么样?(东方头条)
Handler 怎么进行线程通信,原理是什么?(东方头条)
Handler 如果没有消息处理是阻塞的还是非阻塞的?(字节跳动、小米)
handler.post(Runnable) runnable 是如何执行的?(字节跳动、小米)
handler 的 Callback 和 handlemessage 都存在,但 callback 返回 true handleMessage 还会执行么?(字节跳动、小米)
Handler 的 sendMessage 和 postDelay 的区别?(字节跳动)
IdleHandler 是什么?怎么使用,能解决什么问题?
为什么 Looper.loop 不阻塞主线程?Looper 无限循环为啥没有 ANR(B 站)
Looper 如何在子线程中创建?(字节跳动、小米)
Looper、handler、线程间的关系。例如一个线程可以有几个 Looper 可以对应几个 Handler?(字节跳动、小米)
如何更新 UI,为什么子线程不能更新 UI?(美团)
ThreadLocal 的原理,以及在 Looper 是如何应用的?(字节跳动、小米)
Android 有哪些存储数据的方式?
SharedPreference 原理,commit 与 apply 的区别是什么?使用时需要有哪些注意?
如何判断一个 APP 在前台还是后台?
如何做应用保活?
一张图片 100x100 在内存中的大小?(字节跳动)
Intent 的原理,作用,可以传递哪些类型的参数?
如果需要在 Activity 间传递大量的数据怎么办?
打开多个页面,如何实现一键退出?
LiveData 的生命周期如何监听的?(B 站)
第二章 Android 组件
Activity 的 4 大启动模式,与开发中需要注意的问题,如 onNewIntent() 的调用;
Activity A 跳转 B,B 跳转 C,A 不能直接跳转到 C,A 如何传递消息给 C?(美团)
Activity 如何保存状态的?
请描诉 Activity 的启动流程,从点击图标开始。(B 站)
APP 是怎么启动的?
启动一个 Activity 的流程分析
Service 的生命周期是什么样的?Service 两种生命周期以及区别
你会在什么情况下使用 Service?
startServer 和 bindServier 的区别?(美团)
Service 和 Thread 的区别?
IntentService 与 Service 的区别?
ContentProvider 如何自定义与使用场景是什么?
BroadcastReciver 的静态注册与动态注册的区别?
广播的分类与工作原理
可以再 onReceive 中开启线程么,会有什么问题?
什么是有序广播?
Application、Activity、Service 中 context 的区别?能否启动一个 activity、dialog?
Fragment 的生命周期? (美团)
Fragment 的构造函数为啥不让传参?(B 站)
Fragment add 与 replace 的区别,分别对 Fragment 的生命周期影响(美团)
第三章 View System
View 绘制流程与自定义 View 注意点。(东方头条、美团)
Android 中的每一个 UI 控件都是集成自 View,然后这些 View 都具有相同的绘制流程,必须经过 measure,layout 和 draw. view 的绘制流程是在 Window 添加过程中,ViewRootImpl 类的 setView 方法开始的
在 onResume 中可以测量宽高么
事件分发机制是什么过程?(东方头条)
事件冲突怎么解决?(东方头条)
View 分发反向制约的方法?(字节跳动)
自定义 Behavior,NestScroll,NestChild。(东方头条)
View.inflater 过程与异步 inflater(东方头条)
inflater 为什么比自定义 View 慢?(东方头条)
onTouchListener onTouchEvent onClick 的执行顺序。(58 京东)
怎么拦截事件 onTouchEvent 如果返回 false onClick 还会执行么?(58 京东)
事件的分发机制,责任链模式的优缺点 (美团)
动画的分类以及区别(车和家)
属性动画与普通的动画有什么区别?(车和家)
插值器 估值器的区别(车和家)
RecyclerView 与 ListView 的对比,缓存策略,优缺点。(美团)
WebView 如何做资源缓存?(字节跳动)
WebView 和 JS 交互的几种方式与拦截方法。(字节跳动)
自定义 view 与 viewgroup 的区别
View 的绘制原理
View 中 onTouch,onTouchEvent 和 onClick 的执行顺序
View 的滑动方式
invalidate() 和 postInvalicate() 区别
View 的绘制流程是从 Activity 的哪个生命周期方法开始执行的
Activity,Window,View 三者的联系和区别
如何实现 Activity 窗口快速变暗
ListView 卡顿的原因以及优化策略
ViewHolder 为什么要被声明成静态内部类
Android 中的动画有哪些? 动画占用大量内存,如何优化
自定义 View 执行 invalidate()方法,为什么有时候不会回调 onDraw()
DecorView, ViewRootImpl,View 之间的关系,ViewGroup.add()会多添加一个 ViewrootImpl 吗
如何通过 WindowManager 添加 Window(代码实现)?
为什么 Dialog 不能用 Application 的 Context?
WindowMangerService 中 token 到底是什么?有什么区别
RecyclerView 是什么?如何使用?如何返回不一样的 Item
RecyclerView 的回收复用机制
如何给 ListView & RecyclerView 加上拉刷新 & 下拉加载更多机制
如何对 ListView & RecycleView 进行局部刷新的?
ScrollView 下嵌套一个 RecycleView 通常会出现什么问题?
一个 ListView 或者一个 RecyclerView 在显示新闻数据的时候,出现图片错位,可能的原因有哪些 & 如何解决?
Requestlayout,onlayout,onDraw,DrawChild 区别与联系
如何优化自定义 View
Android 属性动画实现原理,补间动画实现原理
内存优化,内存抖动和内存泄漏。 什么时候会发生内存泄漏?举几个例子(美团)
Bitmap 压缩,质量 100%与 90%的区别?(东方头条)
TraceView 的使用,查找 CPU 占用(东方头条)
内存泄漏查找 (酷我音乐)
ANR 是什么,怎么解决?ANR 查找(美团)
CPU 波动
当前项目中是如何进行性能优化分析的
冷启动、热启动的概念(酷我音乐)
View 层次过深怎么优化,选择哪个布局比较好?(美团)
怎样检测函数执行是否卡顿 (字节跳动)
LeakCanray 2.0 为啥不需要在 application 里调 install?(B 站)
OkHttp 的原理(B 站)
Glide 缓存机制(B 站)
评论