佑驾创新服务端一面:网络、分布式基础与数组交集
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 能否介绍实习经历?
- DDD 有什么好处,了解哪些软件开发模式?
- TCP/IP 四层模型各层负责什么,常见 HTTP 状态码表示什么?
- Thrift RPC 的原理和特点是什么?
- TCP 和 UDP 有哪些区别?
- HTTP/1.1、HTTP/2、HTTP/3 有什么区别,采用 QUIC 时要考虑哪些限制?
- Linux 排查网络故障常用哪些命令?
- 一台交换机连接五台电脑,它们如何在局域网内通信?
- 浏览器输入域名后,直到页面出现经历了什么?
- Java 注解的原理是什么?
- 如何用 Java 反转字符串?
- 如何求两个数组的交集?
- Java 中怎样排查死锁?
- Go map 的实现原理是什么?
- 常见查找树有哪些?
- 分布式主键有哪些生成方案,雪花算法怎样工作?
- 跨服务的分布式事务如何处理?
- MySQL 存储引擎有哪些区别,主键如何设计?
- MySQL 死锁如何定位和处理?
- Redis 常用来解决哪些问题?
- Kafka 的核心机制是什么,ELK 的各部分如何协作?
- Docker 有什么好处,容器与虚拟机有什么区别?
- 常见加密算法有哪些类别,原理和用途有什么区别?
- AI 编程有哪些优点,AI 应用从需求到上线有哪些步骤?
《参考解析》
数组交集先问重复值算不算
如果结果只保留不同元素,可以把较短数组放进哈希集合,再扫描另一个数组;命中后加入结果并从集合删除,避免重复输出。平均时间复杂度为 O(m+n),额外空间为 O(min(m,n))。若重复次数也要保留,改用计数表,每输出一次就减少计数。
已排序数组可以用双指针:相等时记录并一起前进,不等时移动较小的一侧。是否跳过重复项仍由题意决定。
反转字符串要明确字符范围
普通 ASCII 字符串可以转为字符数组,首尾双指针交换,时间 O(n)。如果输入可能含补充平面的 Unicode 字符,Java 的一个 char 不一定代表一个完整字符,直接交换 char 可能拆散代理对。面试时先确认输入范围,再决定按代码单元还是码点处理。
数据库死锁与执行慢要分开查
死锁是事务互相等待对方持有的锁形成环。先看死锁记录中的 SQL、索引、加锁顺序,再用具体事务顺序复现。常见调整是统一更新顺序、缩短事务、让条件命中合适的索引。数据库回滚一个事务后,业务可以有限重试,但需要重新执行完整事务并保证业务动作幂等。
容器共享宿主机内核
容器用进程隔离与资源限制封装应用;虚拟机运行自己的客户操作系统。容器镜像可以减少环境差异,但持久化数据、网络、资源上限和故障恢复仍要单独安排。回答部署收益时,可以用自己遇到过的依赖冲突或环境不一致举例。