岗位题目
后端开发相关面试题第 5 页
Agent 和传统大模型有什么区别?
Agent 和传统大模型的核心区别在于是否具备面向目标的规划、工具调用、状态管理和执行闭环。回答时要把 LLM 说成能力底座,把 Agent 说成围绕任务运行的系统。
有哪些限流算法?
限流算法常见有固定窗口、滑动窗口、漏桶和令牌桶。面试回答要讲清每种算法解决什么问题、是否允许突发流量、实现复杂度和分布式一致性取舍。
netstat 中的 Recv-Q 和 Send-Q 有什么区别?
netstat 的 Recv-Q 和 Send-Q 分别反映 socket 接收队列和发送队列中的未处理数据。回答要区分监听 socket、已建立连接、应用是否及时读写,以及网络或对端是否导致堆积。
如何通过后端和大模型实现司机智能接单助手?
司机智能接单助手可以按网约车接单辅助的后端系统设计题回答,重点不是只调用大模型,而是把订单特征、司机状态、规则风控、模型推理和可解释建议串成稳定闭环。
Claude Code 使用 grep 检索与 RAG 检索有什么区别?
grep 检索和 RAG 检索的区别在于前者是确定性的文本匹配工具,后者是面向语义召回、上下文组织和生成回答的检索增强流程。
是否遇到过大模型定位错误代码的幻觉问题?
大模型定位错误代码的幻觉通常来自上下文不完整、检索错误、调用链理解偏差或模型过度生成,需要用证据约束、引用校验和工具闭环来控制。
堆栈分析到代码定位链路中,大模型调用应采用单轮还是多轮?
堆栈分析到代码定位适合采用受控多轮流程:单轮适合简单摘要,多轮适合逐步检索、验证和收敛,但必须限制步骤和工具输出。
计算机视觉模型与 ChatGPT 这类大模型的网络有什么区别?
计算机视觉模型和 ChatGPT 类大模型的差异主要在输入形态、主干结构、训练目标、上下文建模方式和推理生成范式。
如何用链表实现两个大数字相加?
链表大数相加要逐位处理两个链表和进位,核心是对齐位序、维护 carry,并在末尾补上最后的进位节点。
逻辑回归的原理和推导过程是什么?
逻辑回归的原理和推导过程是什么?这道腾讯牛客题的关键是围绕“逻辑回归推导”讲清概念、机制、取舍和边界。逻辑回归用线性函数 z=w^Tx+b 得到 logit,再经 sigmoid 得到正类概率 p。把 y 看作 Bernoulli 分布,最大化似然,取负对数后得到二分类交叉熵损失。
缓存与数据库如何保证一致性?
缓存与数据库如何保证一致性?这道腾讯牛客题的关键是围绕“缓存与数据库一致性”讲清概念、机制、取舍和边界。缓存和数据库通常很难做到强一致,工程上多采用 Cache Aside 并接受短暂最终一致。常见写法是先更新数据库,提交成功后删除缓存;删除失败要有重试、消息补偿或 binlog/CDC 修正。
redis如何保证高可用的?
redis如何保证高可用的?这道腾讯牛客题的关键是围绕“Redis 高可用”讲清概念、机制、取舍和边界。Redis 高可用通常由主从复制、Sentinel 或 Cluster 实现。主从复制提供副本,Sentinel 负责监控和自动故障转移,Cluster 通过 slot 分片和副本接管提升容量与可用性。
redis与mysql如何保持一致的?
redis与mysql如何保持一致的?这道腾讯牛客题的关键是围绕“缓存与数据库一致性”讲清概念、机制、取舍和边界。缓存和数据库通常很难做到强一致,工程上多采用 Cache Aside 并接受短暂最终一致。常见写法是先更新数据库,提交成功后删除缓存;删除失败要有重试、消息补偿或 binlog/CDC 修正。
redis过期key是如何处理的?
redis过期key是如何处理的?这道腾讯牛客题的关键是围绕“Redis 过期 key 处理”讲清概念、机制、取舍和边界。Redis 过期 key 通过惰性删除和定期删除结合处理。访问 key 时先检查 TTL,过期则删除;后台周期性从 expires 字典抽样检查过期 key,控制单次删除耗时,避免阻塞主线程太久。
java内存泄露怎么排查?
java内存泄露怎么排查?这道腾讯牛客题的关键是围绕“Java 内存泄漏排查”讲清概念、机制、取舍和边界。Java 内存泄漏排查要先确认堆内存是否持续增长、Full GC 后是否无法回落,再用 heap dump 和对象引用链定位被意外持有的对象。重点不是 free 失败,而是对象仍被 GC Roots 间接引用。
redis缓存击穿、穿透、雪崩及其解决方法?
redis缓存击穿、穿透、雪崩及其解决方法?这道腾讯牛客题的关键是围绕“缓存异常流量防护”讲清概念、机制、取舍和边界。缓存穿透、击穿和雪崩都是缓存层保护后端数据源时常见的异常流量问题。穿透是请求的数据本身不存在导致反复打到后端;击穿是热点 key 过期瞬间大量请求回源;雪崩是大量 key 同时失效或缓存集群不可用导致整体回源压力暴涨。
为什么redis这么快?
为什么redis这么快?这道腾讯牛客题的关键是围绕“Redis 单线程与高性能”讲清概念、机制、取舍和边界。Redis 快主要因为数据在内存中、数据结构高效、命令执行主路径单线程避免锁竞争、事件循环配合 I/O 多路复用处理大量连接。Redis 单线程通常指命令执行线程,后台持久化、异步删除、网络 I/O 线程等并不都在同一个线程。
mysql索引类型有哪些?
mysql索引类型有哪些?这道腾讯牛客题的关键是围绕“MySQL 索引类型”讲清概念、机制、取舍和边界。MySQL 常见索引类型可按用途分为主键索引、唯一索引、普通索引、联合索引、前缀索引、全文索引和空间索引;在 InnoDB 中还要区分聚簇索引和二级索引。
mysql中的数据类型有哪些?
mysql中的数据类型有哪些?这道腾讯牛客题的关键是围绕“MySQL 数据类型选择”讲清概念、机制、取舍和边界。MySQL 数据类型可以按数值、字符串、日期时间、JSON/空间等类别回答。高质量答案不只是列类型名,还要说明存储范围、精度、排序比较、索引长度、隐式转换和业务语义。
数据库索引为什么快?
数据库索引为什么快?这道腾讯牛客题的关键是围绕“数据库索引为什么快”讲清概念、机制、取舍和边界。数据库索引快的核心是减少扫描行数和磁盘页访问。以 InnoDB B+ 树为例,高扇出让树高很低,等值查询只需从根页定位到叶子页;叶子页有序且链表相连,范围查询可以顺序扫描。
Redis 有哪些数据结构?
Redis 有哪些数据结构?这道腾讯牛客题的关键是围绕“Redis 数据结构与底层编码”讲清概念、机制、取舍和边界。Redis 常用对外数据结构包括 String、List、Hash、Set、ZSet、Bitmap、HyperLogLog、Geo 和 Stream。回答时还要区分对外类型和底层编码,例如 SDS、listpack、quicklist、dict、intset 和 skiplist。
synchronized锁,以及其和juc包中的锁有什么区别、差异?
synchronized锁,以及其和juc包中的锁有什么区别、差异?这道腾讯牛客题的关键是围绕“synchronized 与 JUC 锁差异”讲清概念、机制、取舍和边界。synchronized 是 JVM 内置监视器锁,围绕对象 monitor、进入/退出临界区和锁优化工作;JUC 中 ReentrantLock 等锁通常基于 AQS,用 state、CAS 和等待队列实现更丰富的锁语义。
Mysql索引,怎样防止回表查询?
Mysql索引,怎样防止回表查询?这道腾讯牛客题的关键是围绕“MySQL 二级索引回表与覆盖索引”讲清概念、机制、取舍和边界。防止回表的核心是让查询所需字段都能从同一个二级索引中取到,也就是覆盖索引。InnoDB 二级索引叶子节点保存索引列和主键值,如果 SELECT 或过滤条件还需要非索引列,就要按主键回到聚簇索引读取完整行。
简介 JVM 的可达性分析过程?
简介 JVM 的可达性分析过程?这道腾讯牛客题的关键是围绕“JVM 可达性分析”讲清概念、机制、取舍和边界。JVM 可达性分析从一组 GC Roots 出发,沿对象引用关系遍历对象图;能从 Roots 到达的对象判定为存活,不可达对象才有机会被回收。它解决的是对象是否还被程序间接使用的问题。
当遇到大批量数据查询时,怎么优化数据库,提高查询效率?
当遇到大批量数据查询时,怎么优化数据库,提高查询效率?这道腾讯牛客题的关键是围绕“大批量数据库查询优化”讲清概念、机制、取舍和边界。大批量数据查询优化要先定位慢 SQL 和执行计划,再从索引、分页方式、批处理、字段裁剪、流式读取、冷热数据和读写分离等方向降低扫描、排序和传输成本。
如果数据库是分布式的,如何保证数据一致性呢?
如果数据库是分布式的,如何保证数据一致性呢?这道腾讯牛客题的关键是围绕“分布式数据库一致性”讲清概念、机制、取舍和边界。分布式数据库一致性要先说明一致性目标:强一致、读己之写、单调读或最终一致。常用机制包括 Raft/Paxos 共识、quorum 读写、主从复制、2PC/TCC/Saga、幂等重试、版本冲突解决和异步对账补偿。
redis是单线程还是多线程,为什么用单线程?
redis是单线程还是多线程,为什么用单线程?这道腾讯牛客题的关键是围绕“Redis 单线程与高性能”讲清概念、机制、取舍和边界。Redis 快主要因为数据在内存中、数据结构高效、命令执行主路径单线程避免锁竞争、事件循环配合 I/O 多路复用处理大量连接。Redis 单线程通常指命令执行线程,后台持久化、异步删除、网络 I/O 线程等并不都在同一个线程。
redis是单线程还是多线程,为什么用单线程,为什么不用多线程?
redis是单线程还是多线程,为什么用单线程,为什么不用多线程?这道腾讯牛客题的关键是围绕“Redis 单线程与高性能”讲清概念、机制、取舍和边界。Redis 快主要因为数据在内存中、数据结构高效、命令执行主路径单线程避免锁竞争、事件循环配合 I/O 多路复用处理大量连接。Redis 单线程通常指命令执行线程,后台持久化、异步删除、网络 I/O 线程等并不都在同一个线程。
Mysql可串行化怎么实现的?
Mysql可串行化怎么实现的?这道腾讯牛客题的关键是围绕“MySQL Serializable 实现”讲清概念、机制、取舍和边界。MySQL InnoDB 的 Serializable 目标是让并发事务结果等价于串行执行。它会让普通读更倾向于加锁读,通过共享锁、next-key lock 和范围锁阻止其他事务插入或修改会影响当前读结果的数据。
分布式数据库怎么保证一致性?
分布式数据库怎么保证一致性?这道腾讯牛客题的关键是围绕“分布式数据库一致性”讲清概念、机制、取舍和边界。分布式数据库一致性要先说明一致性目标:强一致、读己之写、单调读或最终一致。常用机制包括 Raft/Paxos 共识、quorum 读写、主从复制、2PC/TCC/Saga、幂等重试、版本冲突解决和异步对账补偿。
动态规划与贪心有什么区别?
动态规划与贪心有什么区别?这道腾讯牛客题的关键是围绕“动态规划与贪心区别”讲清概念、机制、取舍和边界。动态规划通过状态表保存子问题结果,依靠状态转移枚举可能选择;贪心每一步只做当前最优选择,并且必须能证明局部最优能导向全局最优。
Mysql两种引擎知道吗,他们的索引有什么区别?
Mysql两种引擎知道吗,他们的索引有什么区别?这道腾讯牛客题的关键是围绕“InnoDB 与 MyISAM 索引区别”讲清概念、机制、取舍和边界。这题通常重点比较 InnoDB 和 MyISAM。InnoDB 使用聚簇索引组织数据,主键索引叶子保存完整行,二级索引叶子保存主键值;MyISAM 数据文件和索引文件分离,索引叶子通常保存数据文件地址。
tcp如何保证数据可靠性?
tcp如何保证数据可靠性?这道腾讯牛客题的关键是围绕“TCP 可靠传输机制”讲清概念、机制、取舍和边界。TCP 保证可靠传输依靠序列号、确认应答、超时重传、快速重传、校验和、滑动窗口、拥塞控制和有序重组。它保证的是可靠有序的字节流,不保证应用层消息边界。
Linux中,如何查询系统负载情况?
Linux中,如何查询系统负载情况?这道腾讯牛客题的关键是围绕“Linux 系统负载查询”讲清概念、机制、取舍和边界。Linux 查询系统负载常用 uptime、top、w 或 cat /proc/loadavg。load average 的 1/5/15 分钟值表示一段时间内处于可运行 R 或不可中断睡眠 D 状态的任务平均数。
实现消息队列(多生产者,多消费者)?
实现消息队列(多生产者,多消费者)?这道腾讯牛客题的关键是围绕“多生产者多消费者消息队列”讲清概念、机制、取舍和边界。实现多生产者多消费者队列,要先确定有界还是无界、阻塞还是非阻塞、是否需要关闭语义和背压。经典阻塞队列可用 mutex + condition variable 保护环形缓冲区或链表队列。
数据库索引的作用?
数据库索引的作用?这道腾讯牛客题的关键是围绕“数据库索引的作用”讲清概念、机制、取舍和边界。数据库索引的作用是为查询提供更高效的访问路径,减少全表扫描。它可以加速等值查询、范围查询、排序、分组和连接条件,在覆盖索引场景下还能减少回表。
如果定时任务多了单个线程处理不了,要使用多线程怎么处理?
如果定时任务多了单个线程处理不了,要使用多线程怎么处理?这道腾讯牛客题的关键是围绕“多线程任务调度与线程数配置”讲清概念、机制、取舍和边界。多线程处理任务要先把任务放进队列,再由线程池消费,避免无限创建线程。CPU 密集型线程数通常接近 CPU 核数或核数加一;I/O 密集型可以按 cores*(1+wait/compute) 估算,并通过压测校准。
如何实现多线程?
如何实现多线程?这道腾讯牛客题的关键是围绕“多线程实现方式”讲清概念、机制、取舍和边界。实现多线程要讲创建线程、任务执行、同步共享状态和生命周期收尾。C/C++ 常用 pthread_create 或 std::thread,Java 可用 Thread、Runnable、ExecutorService,Go 用 goroutine 但它是 runtime 调度的轻量协程。
要线程安全用什么Map?
要线程安全用什么Map?这道腾讯牛客题的关键是围绕“Java 线程安全 Map 选择”讲清概念、机制、取舍和边界。Java 线程安全 Map 通常优先考虑 ConcurrentHashMap。它通过分段或桶级别并发控制、CAS、volatile 和局部锁降低全表互斥成本,比 Hashtable 或 Collections.synchronizedMap 在高并发读写下更适合。
Redis 的常见数据结构有哪些?
Redis 的常见数据结构有哪些?这道腾讯牛客题的关键是围绕“Redis 数据结构与底层编码”讲清概念、机制、取舍和边界。Redis 常用对外数据结构包括 String、List、Hash、Set、ZSet、Bitmap、HyperLogLog、Geo 和 Stream。回答时还要区分对外类型和底层编码,例如 SDS、listpack、quicklist、dict、intset 和 skiplist。
协程和进程和线程的区别?
协程和进程和线程的区别?这道腾讯牛客题的关键是围绕“进程、线程与 Go 协程差异”讲清概念、机制、取舍和边界。进程是资源隔离单位,线程是内核调度实体,Go 协程 goroutine 是由 Go runtime 管理的轻量用户态执行单元。goroutine 不是 OS 线程,而是通过 GMP 调度模型以 M:N 方式复用到少量内核线程上运行。
索引是如何实现的?
索引是如何实现的?这道腾讯牛客题的关键是围绕“MySQL 索引实现与 B+ 树”讲清概念、机制、取舍和边界。MySQL InnoDB 索引主要基于 B+ 树实现。B+ 树的非叶子节点保存 key 和子页指针,叶子节点保存完整行或主键值,并按 key 有序链接,适合等值查询、范围查询和排序扫描。
io密集型和cpu密集型如何分配线程,多分配线程数量还是少?
io密集型和cpu密集型如何分配线程,多分配线程数量还是少?这道腾讯牛客题的关键是围绕“CPU 密集与 I/O 密集线程数配置”讲清概念、机制、取舍和边界。CPU 密集型任务线程数通常接近 CPU 核数或 cores+1,避免过多线程争抢 CPU;I/O 密集型任务有大量等待时间,可以按 cores*(1+wait/compute) 估算更高线程数,再用压测校准。
为什么高并发场景下用unfair锁而不是fair?
为什么高并发场景下用unfair锁而不是fair?这道腾讯牛客题的关键是围绕“高并发下非公平锁取舍”讲清概念、机制、取舍和边界。高并发场景常用非公平锁,是因为它允许刚到达的线程在锁释放瞬间直接竞争成功,减少严格排队带来的线程唤醒、挂起和上下文切换成本。它牺牲一部分公平性,换取更高吞吐和更低平均调度开销。
fair锁如何实现的?
fair锁如何实现的?这道腾讯牛客题的关键是围绕“公平锁实现机制”讲清概念、机制、取舍和边界。公平锁的核心是按等待顺序授予锁,通常通过同步队列维护排队线程。以 ReentrantLock 公平模式为例,线程获取锁前会检查队列中是否已有前驱节点,有前驱就不插队,获取失败后进入 AQS 队列等待唤醒。
TCP 黏包是什么,如何处理?
TCP 黏包是什么,如何处理?这道腾讯牛客题的关键是围绕“TCP 粘包与消息边界”讲清概念、机制、取舍和边界。TCP 粘包的根因是 TCP 提供连续字节流,不保留应用层一次 write 和一次 read 的消息边界。多个应用消息可能被合并读取,一个消息也可能被拆成多次读取,这不是 TCP 错误,而是应用协议需要定义帧边界。
MySQL 索引常用什么数据结构实现?
MySQL 索引常用什么数据结构实现?这道腾讯牛客题的关键是围绕“MySQL 索引实现与 B+ 树”讲清概念、机制、取舍和边界。MySQL InnoDB 索引主要基于 B+ 树实现。B+ 树的非叶子节点保存 key 和子页指针,叶子节点保存完整行或主键值,并按 key 有序链接,适合等值查询、范围查询和排序扫描。
为什么会使用 Redis 实现消息队列?它适合哪些场景?
为什么会使用 Redis 实现消息队列?它适合哪些场景?这道腾讯牛客题的关键是围绕“Redis 实现消息队列场景”讲清概念、机制、取舍和边界。Redis 可以做轻量消息队列,适合延迟敏感、吞吐中等、业务可接受 at-least-once 和重复消费的场景。常见实现包括 List、Pub/Sub 和 Streams,其中 Streams 更适合可靠消费。