Android 高级工程师面试速记版

这一篇不是展开讲原理,而是给你面试前快速过脑子用。建议搭配前面的系列正文一起看。

一、面试回答总模板

看到题目后,优先按这个顺序组织答案:

  1. 先给结论
  2. 再讲原理或链路
  3. 再讲适用场景和边界
  4. 最后补项目案例、收益和取舍

短句记忆:

结论 -> 原理 -> 场景 -> 取舍 -> 项目

二、语言与并发速记

  • HashMap 不安全:并发写入会导致数据覆盖、扩容冲突、结构异常。
  • ConcurrentHashMap 核心:降低锁粒度,读尽量无锁,写通过 CAS + synchronized 控制并发。
  • volatile:保证可见性和有序性,不保证复合操作原子性。
  • synchronized vs ReentrantLock:前者简单稳妥,后者适合可中断、超时、公平锁、多个条件队列。
  • 线程池不要只背参数,要会讲:线程数、队列、拒绝策略为什么这样配。
  • 协程不是线程,是轻量异步抽象;它不会自动把阻塞代码变非阻塞。
  • launch 适合无返回任务,async 适合并发结果,withContext 适合切线程并等待结果。
  • 协程取消是协作式的,不检查取消或没有挂起点时不会及时停。
  • StateFlow 适合状态,SharedFlow 适合事件,普通 Flow 适合数据处理链。

三、Framework 速记

  • Activity 启动:应用发起请求,系统服务参与调度,必要时先拉进程,最后回到主线程完成生命周期。
  • 冷启动、温启动、热启动差别:是否要新建进程、是否要重建页面、是否已有实例。
  • Handler / Looper / MessageQueue:发送消息、消息循环、消息存储三件套。
  • 主线程不退出,本质上是一直在跑消息循环。
  • ANR 本质:关键响应超时,不只是"卡"。
  • onSaveInstanceState() 只适合保存轻量 UI 状态,不适合大对象和完整业务数据。
  • 事件分发关键链路:dispatchTouchEvent -> onInterceptTouchEvent -> onTouchEvent
  • 滑动冲突本质:父子容器都想消费同一组事件。
  • 绘制三步:measure -> layout -> draw
  • requestLayout() 偏重新测量布局,invalidate() 偏重绘。
  • RecyclerView 优势:复用、缓存、布局解耦、局部刷新。
  • Binder 是系统级 IPC 核心,优势是权限模型、服务治理、调用模型更贴合 Android。

四、架构与 Jetpack 速记

  • 不要只说用了 MVVM,要说解决了什么复杂度。
  • ViewModel 价值:跨配置变更保留状态,承载页面逻辑,降低 UI 容器负担。
  • 状态和事件必须分离:稳定状态用 StateFlow,一次性事件别混进状态。
  • Room 解决本地结构化数据治理,WorkManager 解决受系统约束的可靠后台任务。
  • 依赖注入价值不是少写 new,而是依赖清晰、生命周期统一、测试替换容易。
  • 单向数据流适合复杂页面,因为它把状态来源收敛了。

五、Compose 速记

  • Compose 本质:声明式 UI,状态驱动渲染。
  • 重组不是坏事,关键是范围是否合理。
  • remember 解决组合内记忆,rememberSaveable 解决可恢复状态。
  • 状态提升:让状态放在更高层统一管理,组件尽量无状态。
  • 副作用 API:
    • LaunchedEffect:启动协程
    • DisposableEffect:注册并清理资源
    • SideEffect:把组合结果同步到外部
  • 避免无意义重组:缩小状态影响范围、保持数据稳定、别在组合函数里做重逻辑。

六、性能优化速记

  • 启动优化第一步不是异步,而是先找首帧关键路径。
  • 卡顿排查要分层:主线程、布局绘制、列表绑定、图片加载、锁等待。
  • 掉帧是渲染问题,卡顿是体感问题,ANR 是响应超时问题。
  • 内存泄漏看引用链,内存抖动看分配频率。
  • OOM 先分类型,再看聚合,再找大对象来源和缓存策略。
  • 图片优化分四层:网络、解码、内存、渲染。
  • 包体积优化要讲收益,也要讲代价和兼容风险。
  • 电量优化核心:少唤醒、少轮询、任务合并、交给系统调度。

七、网络、存储、安全速记

  • HTTPS 解决传输链路安全,不代表客户端整体安全。
  • OkHttp 价值:拦截器链、连接复用、调度、缓存、超时治理。
  • 弱网优化不是简单重试,要先分失败类型和幂等性。
  • 存储选型别只看快慢,要看数据模型、一致性、迁移和排障成本。
  • 离线缓存先问目标:提速、离线可用还是减压。
  • 签名解决身份和完整性,混淆提高逆向成本,加固提高攻击门槛。
  • 移动端安全本质:减少暴露面、提高攻击成本、服务端不轻信客户端。
  • WebView 重点风险:桥接暴露、URL 校验、文件访问、证书策略。

八、工程化与系统设计速记

  • 组件化目标:控边界、降耦合、提协作效率,不是为了看起来高级。
  • 模块边界优先按职责稳定性和变更频率划,不是按想象中的完美分层划。
  • 依赖治理核心:依赖方向清晰、公共模块收敛、版本统一、边界不被绕过。
  • 构建优化先找瓶颈位置,再谈缓存、增量编译和模块治理。
  • 稳定性治理不是修一个 crash,而是监控、排序、止损、修复、预防闭环。
  • 系统设计题一定讲 trade-off,不要只讲优点。

九、项目题速记

项目题统一用这个结构:

  1. 业务背景
  2. 问题是什么
  3. 你负责什么
  4. 怎么定位
  5. 方案和取舍
  6. 结果和收益
  7. 风险和复盘

短句记忆:

背景 -> 问题 -> 职责 -> 分析 -> 方案 -> 收益 -> 复盘

十、最值得死磕的 12 个高频题

  1. Handler / Looper / MessageQueue 原理
  2. Activity 启动流程
  3. 事件分发与滑动冲突
  4. Binder / AIDL / IPC
  5. 协程取消、异常传播、结构化并发
  6. Flow / StateFlow / SharedFlow
  7. ViewModel 与页面状态管理
  8. Compose 重组与副作用
  9. 启动优化完整案例
  10. 卡顿 / OOM / ANR 排查案例
  11. 组件化或复杂架构改造案例
  12. 线上事故止损与复盘案例

十一、面试前最后 30 分钟看什么

按这个顺序看:

  1. 本文速记版
  2. 《性能优化》
  3. 《Framework、生命周期、View 与 Binder》
  4. 《架构设计、Jetpack 与 Compose》
  5. 《项目经历、自我介绍与实战案例表达》

原因很简单:高级岗位最容易拉开差距的,通常不是基础定义,而是 Framework 理解、性能案例、架构取舍和项目表达。

相关推荐
独自归家的兔2 小时前
OCPP 1.6 协议详解:ClearCache 清除缓存指令
java·后端·spring
sjsjsbbsbsn2 小时前
OpenAI 接口协议 & 大模型Java调用 核心总结
java·开发语言
AI玫瑰助手2 小时前
Python基础:字典的键值对结构与增删改查操作
android·开发语言·python
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第16题:HashMap中Key为null时,元素存放的位置
java·开发语言·面试·哈希算法·散列表
我登哥MVP2 小时前
【SpringMVC笔记】 - 12 - 全注解开发
java·spring boot·笔记·spring·tomcat·intellij-idea
我命由我123452 小时前
Android 开发问题:Raw use of parameterized class ‘Class‘
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
鹏程十八少2 小时前
8. 2026金三银四 Android别再说你会用 RecyclerView了!20道面试题测测你的真实水平
前端·后端·面试
橙子圆1232 小时前
SpringMVC5.0
java·spring·servlet
黄林晴2 小时前
根治协程陋习!官方级协程Skill发布
android·kotlin