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 理解、性能案例、架构取舍和项目表达。

相关推荐
m0_738120726 分钟前
渗透测试基础——PHP 序列化数据结构与反序列化机制详解
android·服务器·网络·数据结构·安全·php
一个儒雅随和的男子7 分钟前
限流算法详细剖析
java·服务器·算法
我是一颗柠檬10 分钟前
【Java项目技术亮点】分布式锁实现与优化:从Redisson到ZooKeeper,彻底搞懂分布式锁的底层原理
java·redis·分布式·中间件·java-zookeeper
ANnianStriver11 分钟前
PetLumina 04 — 管理后台 UI 全面升级
java·ui·ai编程
winlife_14 分钟前
全程用 AI 做一款商业级手游 · EP9 收尾与复盘:做到了哪,没做到哪,边界在哪
java·开发语言·人工智能·unity·ai编程·游戏开发·mcp
云恒要逆袭19 分钟前
Hello World背后的秘密:Java程序是这样运行的
java·后端·程序员
JAVA96521 分钟前
JAVA面试-并发篇 09-LockSupport 和 waitnotify 的区别
java·开发语言·面试
蝎子莱莱爱打怪23 分钟前
XZLL-IM干货系列 01|万字拆解分布式 IM 架构:7 个微服务 + 自研 Flutter SDK
java·后端·面试
故渊at30 分钟前
第二板块:Android 四大组件标准化学理 | 第十一篇:组件间通信(IPC)与 Binder 深度解析
android·binder·组件化·组件间通信
程序员小羊!30 分钟前
07Java IO 流
java·开发语言