面灵AI→

10.28 腾讯 WXG 面委二轮:开源项目的加解密与 P2P 穿透

轮次
二面(面委)
时间
2026-10
来源
牛客网

《面试题目》

  1. 讲一讲你项目里认为最难的点。
  2. 你开源项目里的加解密是怎么做的?
  3. P2P 穿透是怎么实现的?
  4. 丢包怎么办?

《参考解析》

加解密方案:说清「传输加密 + 身份认证 + 密钥交换」三件事。常见做法是 TLS 1.3 做通道加密,应用层再用对称加密(AES-GCM)保护敏感载荷,密钥用 ECDH 协商,消息带 nonce 防重放,用 HMAC 或 AEAD 的 tag 做完整性校验;端到端场景下服务端只转发密文。要能解释「为什么不用 RSA 加密大消息」(性能)和「nonce 为什么不能复用」(GCM 复用会泄露密钥)。

P2P 穿透:先通过信令服务器交换公网地址和 NAT 类型,尝试直连;NAT 严格时用 STUN 拿映射地址,失败则用 TURN 中继;UDP 打洞靠双方同时向对方公网地址发包,TCP 打洞更难;对称 NAT 基本只能中继。要提一句「打洞成功率取决于 NAT 类型组合,工程上必须有中继兜底」。

丢包处理:实时音视频用 FEC(前向纠错)+ NACK(丢包重传)+ jitter buffer + 拥塞控制(如 GCC/BBR),语音可以丢帧但要不刺耳;文件传输用分块 + 校验 + 重传;TCP 场景靠重传和拥塞控制,但会有队头阻塞,实时场景更常用 UDP 自建可靠层。