2026 Android高级工程师 · 中厂面试题库(难度:⭐⭐⭐⭐)

发布时间:2026/7/22 1:53:41
2026 Android高级工程师 · 中厂面试题库(难度:⭐⭐⭐⭐) 目录一、Kotlin 部分基础与面向对象高阶函数与inline协程重点中厂必问二、Java/JVM 部分基础JVM与内存ClassLoader三、Android Framework中厂高频区Handler 消息机制Binder IPCActivity Application 启动JNI NDKSDK方向重点四、四大组件与 View 体系Activity FragmentService BroadcastView 事件分发绘制优化五、Jetpack 部分中厂使用率极高六、网络部分七、性能优化中厂最看重实战能力启动优化内存优化卡顿与流畅度包体积优化八、架构设计中厂必问项目结构九、项目经验中厂面试重点以下为开放式问题十、C/NDKSDK方向加分项非必问但问了要能答十一、算法中厂难度手写代码十二、开放性/软技能中厂很看重​编辑相关推荐一、Kotlin 部分基础与面向对象val和const val的区别是什么Any和Object有什么区别Unit和Nothing的区别Nothing什么时候用lateinit和lazy分别适用于什么场景lateinit如何判断是否已初始化companion object和 Java 的static完全等价吗编译后是什么data class自动生成了哪些方法什么情况下需要手动重写equals/hashCodesealed class在什么场景下比enum更好举一个实际例子value class有什么用能减少内存开销吗高阶函数与inline什么是高阶函数Android 中你用过哪些高阶函数举例let、apply、run、with、also的区别inline是什么不加inline的高阶函数有什么性能问题reified关键字是做什么的为什么可以获取泛型的Classcrossinline和noinline分别是用来解决什么问题的DSL 是什么你用 Kotlin 写过 DSL 吗比如 Gradle 配置就是 DSL协程重点中厂必问协程是什么它和线程是什么关系协程的launch和withContext有什么区别Dispatchers.Main、Dispatchers.IO、Dispatchers.Default分别用于什么场景在 Activity/Fragment 中如何正确管理协程的生命周期lifecycleScope和viewModelScope怎么用协程如何取消cancel()和ensureActive()的区别协程中的异常怎么处理try-catch和CoroutineExceptionHandler各自在什么场景用多个网络请求并行执行怎么处理async.await()怎么用Flow和LiveData的区别是什么为什么推荐用FlowStateFlow和SharedFlow的区别是什么各自用在什么场景flowOn和launchIn的作用是什么二、Java/JVM 部分基础Java 内存模型JMM是什么volatile能保证原子性吗synchronized和ReentrantLock的区别你在 Android 中用过哪个HashMap和ConcurrentHashMap的区别ConcurrentHashMap为什么线程安全ArrayList和LinkedList的区别什么场景用哪个HashSet如何保证元素不重复JVM与内存JVM 运行时数据区有哪些Stack 和 Heap 分别存什么什么是 GC Root有哪些类型的 GC RootAndroid 中常见的 OOM 有哪些类型怎么排查强引用、软引用、弱引用、虚引用的区别Android 中哪里用到了软/弱引用String为什么设计成不可变的StringBuilder和StringBuffer的区别String.intern()是做什么的什么场景下用ClassLoader双亲委派模型是什么为什么要这样设计热修复的原理是基于什么ClassLoader 在其中扮演什么角色三、Android Framework中厂高频区Handler 消息机制Handler 的工作原理是什么Looper、MessageQueue、Message分别是什么关系主线程的Looper是怎么初始化的为什么不会导致 ANRMessage.obtain()为什么要用对象池Handler内存泄漏怎么解决静态内部类 弱引用IdleHandler是什么可以在什么场景下使用比如延迟加载Handler 的postDelayed是怎么实现的Binder IPCBinder 是什么它和 Socket 比有什么优势AIDL 怎么用in、out、inout是什么意思你用过Messenger吗和 AIDL 比有什么优缺点Binder 的一次拷贝原理能大概讲一下吗Activity Application 启动Application 的onCreate中能做什么不能做什么Activity 启动流程中AMS 做了什么ActivityThread的 main 方法中做了哪些事JNI NDKSDK方向重点JNI 是什么什么场景下需要用 JNIJNI 中FindClass和GetObjectClass的区别JNI 中全局引用和局部引用有什么区别什么时候会内存泄漏SO 库是如何加载的System.loadLibrary做了什么Native Crash 如何定位logcat的 backtrace 怎么看addr2line怎么用ANR Trace 文件中怎么看 Native 调用栈四、四大组件与 View 体系Activity FragmentActivity 的生命周期在屏幕旋转时怎么变化onSaveInstanceState什么时候调用Activity 的四种启动模式分别是什么singleTask和singleInstance有什么区别onNewIntent什么时候调用有什么用Fragment 的生命周期和 Activity 的对应关系Fragment 之间的通信方式有哪些接口回调、ViewModel、LiveDataFragmentManager的add和replace有什么区别Service BroadcaststartService和bindService的区别Service 的生命周期有什么不同IntentService和普通 Service 的区别Android 8.0 后还有吗广播的两种注册方式静态和动态有什么区别静态广播有什么限制本地广播LocalBroadcastManager的原理和全局广播比有什么优缺点View 事件分发View 的measure、layout、draw流程简单说一下onMeasure中MeasureSpec的三种模式是什么自定义 View 和自定义 ViewGroup 分别要重写哪些方法事件分发机制dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent的执行顺序滑动冲突怎么解决外部拦截法、内部拦截法RecyclerView 的缓存机制四级缓存和 ListView 有什么区别RecyclerView 的布局管理器有哪几种RecyclerView 的 Item 动画怎么实现绘制优化什么是过度绘制怎么检测和优化ViewStub、include、merge的作用和区别Choreographer是什么和 VSYNC 有什么关系五、Jetpack 部分中厂使用率极高Lifecycle是怎么感知生命周期变化的OnLifecycleEvent怎么用ViewModel的作用是什么横竖屏旋转时数据如何保存ViewModel可以持有 View 的引用吗为什么LiveData和MutableLiveData的区别postValue和setValue的区别LiveData的粘性事件是什么怎么解决Room的Entity、Dao、Database分别的作用Room 中如何在数据库升级时保留原有数据DataStore和SharedPreferences的区别为什么推荐用 DataStoreWorkManager是做什么的它能保证任务一定执行吗Hilt的HiltAndroidApp、AndroidEntryPoint、Inject分别怎么用Navigation组件怎么管理 Fragment 的返回栈Compose 和传统 View 体系能混用吗ComposeView和AndroidView分别是做什么的Compose 中remember和rememberSaveable的区别六、网络部分HTTP 和 HTTPS 的区别是什么HTTPS 的加密过程简单说一下TCP 三次握手和四次挥手的过程HTTP/2 相比 HTTP/1.1 有哪些改进OkHttp 的拦截器链是怎么工作的你项目中用过哪些自定义拦截器OkHttp 的连接池如何复用连接网络请求失败时如何做重试指数退避策略是什么DNS 解析流程是什么DNS 劫持怎么应对WebSocket 是什么什么场景下用如何做弱网测试你遇到过哪些弱网问题图片加载库Glide/Picasso的缓存机制是怎样的内存缓存磁盘缓存七、性能优化中厂最看重实战能力启动优化冷启动、温启动、热启动的区别启动时间怎么测量adb shell am start -W和Application#onCreate插桩分别测什么启动优化的具体手段有哪些异步初始化、延迟加载、懒加载、启动任务梳理ContentProvider 对启动速度有什么影响怎么处理内存优化内存泄漏的常见场景有哪些Handler、匿名内部类、静态引用、资源未释放LeakCanary 的原理是什么为什么它能检测内存泄漏如何分析内存占用Android Studio Profiler 和 MAT 怎么用Bitmap 的内存占用怎么计算getByteCount()返回的是什么Bitmap 优化策略有哪些inSampleSize、inBitmap、RGB_565图片加载中的Glide是怎么做内存缓存的LRU Cache是什么卡顿与流畅度什么是掉帧Jank16ms 原则是什么如何检测 UI 卡顿BlockCanary 的原理是什么ANR 的类型有哪些如何通过/data/anr/traces.txt定位 ANR布局优化有哪些手段减少层级、使用 ConstraintLayout、过度绘制优化主线程中有哪些耗时操作不能做包体积优化APK 的构成有哪些classes.dex、resources.arsc、lib 等包体积优化手段有哪些资源压缩、图片转 WebP、代码混淆、动态交付什么是 ABI 分包arm64-v8a和armeabi-v7a有什么区别八、架构设计中厂必问项目结构MVC、MVP、MVVM 的区别你项目用的是哪种MVP 中 Presenter 怎么避免内存泄漏MVVM 中 ViewModel 和 LiveData 是怎么联动的什么是 Repository 模式它解决了什么问题你们项目的包结构是怎么样的是按功能分还是按模块分什么是模块化组件化你参与过组件化改造吗组件化中模块间的通信方式有哪些你们项目用了什么依赖注入方案为什么选它常用的设计模式中你项目里用到了哪些单例、工厂、观察者、责任链、建造者Retrofit的动态代理是怎么实现的如何保证单例的线程安全DCL、静态内部类、Kotlin object九、项目经验中厂面试重点以下为开放式问题注意中厂面试官非常关注你实际项目中做的事情而不是背书。介绍一下你负责的模块/项目整体架构是怎样的你在项目中遇到的最难解决的一个 Bug 是什么怎么排查和修复的你们 App 的启动时间大概是多少你参与过启动优化吗优化了多少你做过性能优化吗具体优化了哪方面怎么衡量效果你们项目遇到过内存问题吗怎么发现和解决的线上出现 Crash 后你们是怎么定位和修复的流程是什么你做过 SDK 开发吗SDK 和 App 开发有什么不同你的代码 Review 标准是什么你注重哪些方面如果要重构一个老旧模块你会怎么规划风险点在哪里你最近在技术上的学习规划是什么为什么学这些十、C/NDKSDK方向加分项非必问但问了要能答JNI 中如何把 Java 的byte[]转成 C 的unsigned char*JNI 方法注册有哪两种方式静态注册和动态注册extern C是做什么的为什么 JNI 函数要加它SO 库中的符号表是什么strip命令是做什么的你遇到过 JNI 的Local Reference Table Overflow吗怎么解决ndk-build和 CMake 你用过哪个十一、算法中厂难度手写代码中厂不会太刁难但基础算法要能写出来。排序手写快速排序或归并排序至少会一种链表反转单链表迭代和递归两种写法判断链表是否有环删除链表的倒数第 N 个节点二叉树二叉树的前序遍历递归和迭代二叉树的层序遍历BFS求二叉树的最大深度数组/字符串两数之和HashMap 解法有效括号匹配最长不重复子串滑动窗口设计题实现 LRU 缓存LinkedHashMap 或手写双向链表实现一个线程安全的单例DCL 或静态内部类动态规划中厂常考入门级爬楼梯斐波那契数列最大子序和十二、开放性/软技能中厂很看重你平时怎么学习新技术最近在看什么技术书或博客你如何看待 Kotlin 和 Java 的选择你们的项目用哪种你用什么工具做性能分析说说你用过最顺手的一个工具当你和产品经理/后端对需求有分歧时你怎么处理你希望下一份工作给你带来什么你对加班怎么看你带过团队或指导过初级工程师吗你对自己未来 3-5 年的职业规划是什么相关推荐2026 Android高级工程师 · 大厂面试题库难度⭐⭐⭐⭐⭐文章浏览阅读1.8k次。本文全面覆盖了Android开发面试的关键知识点包括Activity、Fragment、Service、BroadcastReceiver等组件的深入解析以及视图工作机制、内存管理、性能优化等方面的技术要点。https://shuaici.blog.csdn.net/article/details/59504118Android 高级工程师面试参考答案网络、存储与安全-CSDN博客文章浏览阅读855次点赞18次收藏16次。本文探讨了移动开发中网络、存储与安全三大核心模块的常见问题及解决方案。在网络方面分析了HTTP/HTTPS区别、OkHttp价值及弱网优化策略在存储方面比较了SharedPreferences、MMKV和数据库的适用场景并讨论了离线缓存设计在安全方面阐述了签名、混淆、加固的作用以及WebView风险和安全系统工程的重要性。文章强调高级开发者应注重设计思路和风险控制而非仅掌握技术概念。https://shuaici.blog.csdn.net/article/details/160372417