携程后端Agent开发一面面经
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 请介绍实习经历。
- 平时使用哪些 AI Coding 工具?如何提升生成代码的质量?
- 多线程执行
count++1000 次,结果为什么可能小于 1000?至少给出两种修复方案。 - 两个线程进行读、改、写时,丢失更新是如何发生的?
s1 == "abc"、s2 = new String("abc")、s3 = s1 + ""的比较结果分别是什么?第三个结果一定为true吗?- 浏览器输入携程域名并回车后会发生什么?请从网络协议分层说明。
- 公网传输的数据包没有 HTTP Header 还能传输吗?HTTP Header 是传输所必需的吗?
- TCP 三次握手时数据是如何传输的?
《参考解析》
- 并发自增:
count++是读取、计算、写回的复合操作,线程可能读取同一个旧值后相互覆盖。可以用synchronized或锁保护临界区,也可使用AtomicInteger.incrementAndGet();高并发统计还可考虑LongAdder,但读取是弱一致汇总。 - 字符串比较:字符串字面量通常复用常量池对象,
new String会创建新对象。编译期可确定的常量表达式可能被折叠,但变量拼接是否复用常量池取决于变量是否为编译期常量,因此不能脱离声明方式判断s3。 - 浏览器访问链路:通常依次经历 URL 解析、缓存与代理判断、DNS 解析、链路层寻址、TCP 或 QUIC 建连、TLS 握手、HTTP 请求响应、资源解析与渲染。每层封装自己的头部,路由器主要处理网络层,不要求理解 HTTP。
- 握手数据:TCP 三次握手通过带 SYN、ACK 标志和序列号的 TCP 报文段完成,报文仍封装在 IP 包和链路层帧中。HTTP 属于连接建立后的应用层协议,不参与 TCP 建连本身。