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

相关新闻

国内企业未来发展的三大战略方向

国内企业未来发展的三大战略方向

目录 背景 一、AI规模化:从“试点热”到“价值冷” 二、ESG:从出海“通行证”到价值“放大器” 三、产业新格局:央企“压舱”与民企“弄潮” 四、总结 背景 从“数字化”到“价值创造”:国内企业未来发展的三大战略方向。 技术…

2026/8/26 10:48:59 阅读更多 →
Qwen3.5-27B大模型的配置参数

Qwen3.5-27B大模型的配置参数

本文详细介绍了vLLM参数配置的四个关键步骤:先配置基础参数确保服务运行,然后逐步调优性能参数,接着通过监控工具调整参数以避免问题,最后强调查阅官方文档的重要性。通过合理配置,可以平衡硬件需求和性能表现。核心模…

2026/8/26 11:15:12 阅读更多 →
tprPix调试与错误处理:开发过程中常见问题与解决方案

tprPix调试与错误处理:开发过程中常见问题与解决方案

tprPix调试与错误处理:开发过程中常见问题与解决方案 【免费下载链接】tprPix a Cross-Platform, 2D Survival Sandbox Game Project. Based on C17/cmake/OpenGL/SQLite3. 项目地址: https://gitcode.com/gh_mirrors/tp/tprPix tprPix作为一款跨平台2D生存沙…

2026/8/26 11:16:05 阅读更多 →

最新新闻

Linux学习8-mysql数据库,主从复制及常用命令

Linux学习8-mysql数据库,主从复制及常用命令

MySQL数据库 mysql安装 官网下载链接 https://downloads.mysql.com/archives/community/ 注意版本和操作系统 wget下载(最好是在虚拟机里复制一份) 解压缩 删除之前的cmake软链接 下载新的cmake压缩包 修改bash档案,把其中的路径后加上:/…

2026/8/27 13:08:29 阅读更多 →
Binder纯理论分析

Binder纯理论分析

今天的主要是来对Binder做一个较全面的介绍,为之后的深入分析做一个预热准备。 Linux IPC 首先Binder是Android中的一种独有的跨进程通信方式,简称IPC。它是专门为Android平台设计的。 那为什么要设计出Binder这个烦人的东西呢?我们都知道…

2026/8/27 13:08:29 阅读更多 →
大揭秘,Android Flow面试官最爱问的7个问题

大揭秘,Android Flow面试官最爱问的7个问题

在Android领域,面试是展示个人技能和经验的重要场合。本文将围绕Android中的Flow相关技巧展开,深入分析高级疑难问题,帮助Android技术人员提升面试水平。 Flow的核心概念 问题: 请解释Flow是什么,与传统的RxJava相比有…

2026/8/27 13:08:29 阅读更多 →
SAP IDoc出站与入站配置

SAP IDoc出站与入站配置

一、发送端配置出站IDoc1、WE31 创建段类型,此处我用标准段类型 E1P0000 演示2、WE30 创建IDoc类型,此处我用标准IDoc类型 HRMD_A09 演示3、WE81 创建消息类型4、WE82 关联消息类型与IDoc类型5、WE21 创建接收端的端口,其中RFC目标为SM59创建…

2026/8/27 13:08:29 阅读更多 →
镶嵌注塑与真空灌胶融合技术:推动新能源零部件可靠性升级

镶嵌注塑与真空灌胶融合技术:推动新能源零部件可靠性升级

#一、新能源制造进入“高集成、高可靠”时代 随着新能源汽车、储能系统、智能电气设备快速发展,新能源零部件正朝着更高电压等级、更小体积设计、更高可靠性以及更长使用寿命方向升级。 传统的金属加工、塑料注塑以及后期装配方式,已经难以满足新能源产品…

2026/8/27 13:08:28 阅读更多 →
第13篇-国内平台集成

第13篇-国内平台集成

【OpenClaw 从入门到精通】第 13 篇:国内平台集成(飞书 / 企业微信 / 钉钉 / QQ) 本系列定位:零基础入门,从安装配置到高级架构全覆盖。 本篇你将学到 飞书 / 企业微信 / 钉钉 / QQ 通道配置Google Chat / Microsoft …

2026/8/27 13:07:28 阅读更多 →

日新闻

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

2026/8/27 0:00:51 阅读更多 →
网盘直链下载助手5分钟解析八大网盘真实地址

网盘直链下载助手5分钟解析八大网盘真实地址

网盘直链下载助手5分钟解析八大网盘真实地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 / 夸…

2026/8/27 1:06:27 阅读更多 →
从零点亮 ESP32:Arduino ESP32 开发环境搭建与首次烧录完整指南

从零点亮 ESP32:Arduino ESP32 开发环境搭建与首次烧录完整指南

从零点亮 ESP32:Arduino ESP32 开发环境搭建与首次烧录完整指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 Arduino ESP32 是乐鑫官方的 ESP32 系列 Ardui…

2026/8/27 1:06:27 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →