面灵AI

携程后端Agent开发一面面经

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 请介绍实习经历。
  2. 平时使用哪些 AI Coding 工具?如何提升生成代码的质量?
  3. 多线程执行 count++ 1000 次,结果为什么可能小于 1000?至少给出两种修复方案。
  4. 两个线程进行读、改、写时,丢失更新是如何发生的?
  5. s1 == "abc"s2 = new String("abc")s3 = s1 + "" 的比较结果分别是什么?第三个结果一定为 true 吗?
  6. 浏览器输入携程域名并回车后会发生什么?请从网络协议分层说明。
  7. 公网传输的数据包没有 HTTP Header 还能传输吗?HTTP Header 是传输所必需的吗?
  8. TCP 三次握手时数据是如何传输的?

《参考解析》

  1. 并发自增count++ 是读取、计算、写回的复合操作,线程可能读取同一个旧值后相互覆盖。可以用 synchronized 或锁保护临界区,也可使用 AtomicInteger.incrementAndGet();高并发统计还可考虑 LongAdder,但读取是弱一致汇总。
  2. 字符串比较:字符串字面量通常复用常量池对象,new String 会创建新对象。编译期可确定的常量表达式可能被折叠,但变量拼接是否复用常量池取决于变量是否为编译期常量,因此不能脱离声明方式判断 s3
  3. 浏览器访问链路:通常依次经历 URL 解析、缓存与代理判断、DNS 解析、链路层寻址、TCP 或 QUIC 建连、TLS 握手、HTTP 请求响应、资源解析与渲染。每层封装自己的头部,路由器主要处理网络层,不要求理解 HTTP。
  4. 握手数据:TCP 三次握手通过带 SYN、ACK 标志和序列号的 TCP 报文段完成,报文仍封装在 IP 包和链路层帧中。HTTP 属于连接建立后的应用层协议,不参与 TCP 建连本身。