面灵AI

佑驾创新服务端一面:网络、分布式基础与数组交集

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

《面试题目》

  1. 能否介绍实习经历?
  2. DDD 有什么好处,了解哪些软件开发模式?
  3. TCP/IP 四层模型各层负责什么,常见 HTTP 状态码表示什么?
  4. Thrift RPC 的原理和特点是什么?
  5. TCP 和 UDP 有哪些区别?
  6. HTTP/1.1、HTTP/2、HTTP/3 有什么区别,采用 QUIC 时要考虑哪些限制?
  7. Linux 排查网络故障常用哪些命令?
  8. 一台交换机连接五台电脑,它们如何在局域网内通信?
  9. 浏览器输入域名后,直到页面出现经历了什么?
  10. Java 注解的原理是什么?
  11. 如何用 Java 反转字符串?
  12. 如何求两个数组的交集?
  13. Java 中怎样排查死锁?
  14. Go map 的实现原理是什么?
  15. 常见查找树有哪些?
  16. 分布式主键有哪些生成方案,雪花算法怎样工作?
  17. 跨服务的分布式事务如何处理?
  18. MySQL 存储引擎有哪些区别,主键如何设计?
  19. MySQL 死锁如何定位和处理?
  20. Redis 常用来解决哪些问题?
  21. Kafka 的核心机制是什么,ELK 的各部分如何协作?
  22. Docker 有什么好处,容器与虚拟机有什么区别?
  23. 常见加密算法有哪些类别,原理和用途有什么区别?
  24. AI 编程有哪些优点,AI 应用从需求到上线有哪些步骤?

《参考解析》

数组交集先问重复值算不算

如果结果只保留不同元素,可以把较短数组放进哈希集合,再扫描另一个数组;命中后加入结果并从集合删除,避免重复输出。平均时间复杂度为 O(m+n),额外空间为 O(min(m,n))。若重复次数也要保留,改用计数表,每输出一次就减少计数。

已排序数组可以用双指针:相等时记录并一起前进,不等时移动较小的一侧。是否跳过重复项仍由题意决定。

反转字符串要明确字符范围

普通 ASCII 字符串可以转为字符数组,首尾双指针交换,时间 O(n)。如果输入可能含补充平面的 Unicode 字符,Java 的一个 char 不一定代表一个完整字符,直接交换 char 可能拆散代理对。面试时先确认输入范围,再决定按代码单元还是码点处理。

数据库死锁与执行慢要分开查

死锁是事务互相等待对方持有的锁形成环。先看死锁记录中的 SQL、索引、加锁顺序,再用具体事务顺序复现。常见调整是统一更新顺序、缩短事务、让条件命中合适的索引。数据库回滚一个事务后,业务可以有限重试,但需要重新执行完整事务并保证业务动作幂等。

容器共享宿主机内核

容器用进程隔离与资源限制封装应用;虚拟机运行自己的客户操作系统。容器镜像可以减少环境差异,但持久化数据、网络、资源上限和故障恢复仍要单独安排。回答部署收益时,可以用自己遇到过的依赖冲突或环境不一致举例。