2026年Android中高级面试题专栏

73 阅读6分钟

随着 Android 技术发展的成熟,Kotlin、大前端技术 Flutter、RN、小程序等一下子就进入了我们的视野内,同时,Android 自身的技术栈也正在不断扩展,比如在国外大热的 Jetpack。因此,Android 开发者们越来越焦虑,越来越迷茫,每个人的时间和精力是有限的,我们到底应该学什么才能有效地提高自身的竞争力呢?

其实,首先我们应该优先深入学习工作中用到的技术,其次,关注这 2 年来 Android 最新面试题所涉及的知识点,根据自身的实际情况有选择地进行针对性的学习和提升。只有这样,自身才不会被所谓的“互联网寒冬”吓倒。本专栏结合一线及二线互联网公司最常出现的面试题,进行系统化梳理,希望能让大家反复学习,以快速提升自己。

Android 面试中常涉及的问题主要有以下几方面:

  1. 计算机基础:TCP/IP、HTTP/HTTPS、Socket、(Linux)操作系统、数据库相关。
  2. Java 基础:面向对象、反射、泛型、集合类库相关。
  3. Java 并发:线程/线程池、volatile、悲观锁/乐观锁等。
  4. JVM 虚拟机:执行过程、JMM 模型、Java 的 GC 回收原理、类加载器。
  5. 数据结构和算法:剑指 Offer + LeetCode 高频题集。
  6. Android 基础:启动模式、动画、自定义 View。
  7. Android 进阶:性能优化、Binder、AIDL、进程间通信、AMS/WMS/PMS、事件分发、滑动冲突、View 的绘制流程、重要的 Android 源码和开源库分析。
  8. Android 高新技术:模块化、组件化、热更新、插件化实现原理。
  9. 加分项:Flutter、ReactNative、Python、前后端开发等。

专栏目录导航

计算机网络基础核心面试题

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

对比维度HTTPHTTPS
安全性明文传输,易被窃听/篡改/伪造身身份认证 + 加密传输 + 防篡改
默认端口80443
协议层结构应用层直接基于 TCP应用层 \rightarrow TLS/SSL 层 \rightarrow 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 发送 SYN \rightarrow Server 回复 SYN+ACK \rightarrow Client 回复 ACK(确认双方收发能力正常)。

    • 四次挥手: Client 发送 FIN(主动关闭) \rightarrow Server 回复 ACK \rightarrow Server 数据发完后发送 FIN \rightarrow Client 回复 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 建连与协议升级流程

    1. 客户端发起标准 HTTP GET 请求,Header 中携带:

      • Upgrade: websocket

      • Connection: Upgrade

      • Sec-WebSocket-Key: <随机 base64>

    2. 服务器校验后返回 101 Switching Protocols 状态码。

    3. 此后双方脱离 HTTP 协议限制,直接基于 underlying TCP Socket 进行双向帧数据(Frame)通信,支持文本和二进制传输。

最后,祝愿每一位正在备战面试的 Android 开发者:

  • 能够在反复的梳理与思考中打破瓶颈,将知识真正融会贯通;
  • 在接下来的每一场面试中发挥出色、对答如流,展现出自己最出色的技术硬实力;
  • 拨云见日,顺利斩获心仪的大厂与中高级职位 Offer,在移动开发的技术道路上披荆斩棘、一路高歌!