随着 Android 技术发展的成熟,Kotlin、大前端技术 Flutter、RN、小程序等一下子就进入了我们的视野内,同时,Android 自身的技术栈也正在不断扩展,比如在国外大热的 Jetpack。因此,Android 开发者们越来越焦虑,越来越迷茫,每个人的时间和精力是有限的,我们到底应该学什么才能有效地提高自身的竞争力呢?
其实,首先我们应该优先深入学习工作中用到的技术,其次,关注这 2 年来 Android 最新面试题所涉及的知识点,根据自身的实际情况有选择地进行针对性的学习和提升。只有这样,自身才不会被所谓的“互联网寒冬”吓倒。本专栏结合一线及二线互联网公司最常出现的面试题,进行系统化梳理,希望能让大家反复学习,以快速提升自己。
Android 面试中常涉及的问题主要有以下几方面:
- 计算机基础:TCP/IP、HTTP/HTTPS、Socket、(Linux)操作系统、数据库相关。
- Java 基础:面向对象、反射、泛型、集合类库相关。
- Java 并发:线程/线程池、volatile、悲观锁/乐观锁等。
- JVM 虚拟机:执行过程、JMM 模型、Java 的 GC 回收原理、类加载器。
- 数据结构和算法:剑指 Offer + LeetCode 高频题集。
- Android 基础:启动模式、动画、自定义 View。
- Android 进阶:性能优化、Binder、AIDL、进程间通信、AMS/WMS/PMS、事件分发、滑动冲突、View 的绘制流程、重要的 Android 源码和开源库分析。
- Android 高新技术:模块化、组件化、热更新、插件化实现原理。
- 加分项:Flutter、ReactNative、Python、前后端开发等。
专栏目录导航
-
[专栏导读] 2026年Android中高级面试题专栏
计算机网络基础核心面试题
Q1: 深度对比 HTTP 1.0/1.1/2.0/3.0 的演进历程与核心特性
核心回答:
-
HTTP 1.0 vs 1.1:
-
长连接:HTTP 1.0 默认短连接(每次请求新建 TCP);HTTP 1.1 默认启用
Keep-Alive长连接,复用 TCP 通道。 -
管道化(Pipelining) :HTTP 1.1 支持批量发送请求,但响应必须按顺序返回,存在队头阻塞(Head-of-Line Blocking)问题。
-
-
HTTP 2.0 突破:
-
二进制分帧:将文本传输改为二进制帧(Headers 帧与 Data 帧),解析更高效。
-
多路复用(Multiplexing) :单个 TCP 连接上支持并发交错收发多个 Stream 请求,从根本上解决了 HTTP 层的队头阻塞。
-
头部压缩(HPACK) :通过静态/动态哈希表压缩重复的 Request Header,显著降低开销。
-
-
HTTP 3.0 (QUIC) :
-
基于 UDP 协议:基于谷歌自研的 QUIC 协议,彻底解决了 TCP 协议层的队头阻塞(单个数据包丢包不会挂起其他独立流)。
-
零 RTT 建连:将 Transport 握手与 TLS 握手合并,极大地缩短了建连耗时。
-
连接迁移:使用 Connection ID 代替传统的“IP+端口”四元组,手机网络在 Wi-Fi 和 4G/5G 切换时连接不断连。
-
Q2: 详细拆解 HTTP 与 HTTPS 的区别?TLS 1.2/1.3 握手全流程
核心回答:
-
HTTP vs HTTPS:
| 对比维度 | HTTP | HTTPS |
|---|---|---|
| 安全性 | 明文传输,易被窃听/篡改/伪造 | 身身份认证 + 加密传输 + 防篡改 |
| 默认端口 | 80 | 443 |
| 协议层结构 | 应用层直接基于 TCP | 应用层 TLS/SSL 层 TCP |
-
HTTPS TLS 1.2 握手流程(2 RTT) :
Client Server
│ ── 1. Client Hello (支持的TLS版本/加密套件/随机数C) ──> │
│ <─ 2. Server Hello (选定套件/随机数S/数字证书) ──────── │
│ │
│ [校验 CA 证书合法性] │
│ ── 3. Client Key Exchange (用公钥加密预主密钥 Pre-Master) ──> │
│ │
│ [双方通过 随机数C + 随机数S + Pre-Master 生成主对称密钥 Key] │
│ ── 4. Client Finished (加密握手摘要) ─────────────────> │
│ <─ 5. Server Finished (加密握手摘要) ───────────────── │
│ │
│ <========== 6. 使用对称密钥 Key 进行密文通信 ===========> │
-
TLS 1.3 极速握手(1 RTT) :
Client Hello 直接附带密钥交换参数(ECDHE),Server 回复 Server Hello 时即可直接生成对称密钥并开始发送加密数据,相比 TLS 1.2 节省了 1 个 RTT 往返时延。
Q3: 深度剖析 TCP 与 UDP 的区别、TCP 三次握手/四次挥手及流量/拥塞控制
核心回答:
-
TCP 与 UDP 深度对比:
-
TCP:面向连接、可靠交付(不丢包/按序到达)、面向字节流、点对点单播。
-
UDP:无连接、不可靠尽力交付、面向报文、支持单播/多播/广播,开销极低。
-
-
三次握手与四次挥手:
-
三次握手:Client 发送
SYNServer 回复SYN+ACKClient 回复ACK(确认双方收发能力正常)。 -
四次挥手: Client 发送
FIN(主动关闭) Server 回复ACKServer 数据发完后发送FINClient 回复ACK并进入TIME_WAIT(等待 2MSL) ,确保 Server 收到最后一个 ACK 并防止旧连接数据包干扰新连接。
-
-
TCP 流量控制与拥塞控制:
-
流量控制:使用滑动窗口(Sliding Window)机制,接收方通过
ACK报文告知发送方当前缓冲区剩余大小(rwnd),防止发送方发包过快压垮接收方。 -
拥塞控制:防止过多数据注入网络导致路由器瘫痪。包含四大算法:慢启动(指数级增长)、拥塞避免(加法递增)、快速重传(收到 3 个重复 ACK 立即重传)以及快速恢复。
-
Q4: WebSocket 与 HTTP 的长轮询(Long Polling)有何区别?双工通信实现原理
核心回答:
-
双工通信技术方案对比:
| 技术方案 | 实现原理 | 资源开销 | 实时性 |
|---|---|---|---|
| 短轮询 (Short Polling) | 客户端定时用 HTTP 频繁请求服务器 | 极高(大量无意义 HTTP 报头与建连) | 差(依赖轮询间隔) |
| 长轮询 (Long Polling) | 服务器收到 HTTP 请求后挂起,直到有新数据或超时才返回 | 中等(连接频繁断开重连) | 较好 |
| WebSocket | 经过一次 HTTP 握手升级为 TCP 全双工长连接 | 极低(建立连接后帧头仅 2~10 字节) | 最高(毫秒级双向实时推送) |
-
WebSocket 建连与协议升级流程:
-
客户端发起标准 HTTP GET 请求,Header 中携带:
-
Upgrade: websocket -
Connection: Upgrade -
Sec-WebSocket-Key: <随机 base64>
-
-
服务器校验后返回
101 Switching Protocols状态码。 -
此后双方脱离 HTTP 协议限制,直接基于 underlying TCP Socket 进行双向帧数据(Frame)通信,支持文本和二进制传输。
-
最后,祝愿每一位正在备战面试的 Android 开发者:
- 能够在反复的梳理与思考中打破瓶颈,将知识真正融会贯通;
- 在接下来的每一场面试中发挥出色、对答如流,展现出自己最出色的技术硬实力;
- 拨云见日,顺利斩获心仪的大厂与中高级职位 Offer,在移动开发的技术道路上披荆斩棘、一路高歌!