面试题:后端
后端工程师岗位相关的接口设计、服务端基础、并发、存储和稳定性面试准备。
如何反转单链表,并说明时间复杂度和边界节点处理?
反转单链表时维护前驱、当前和后继三个引用,逐个改变 next 指针;空链表和单节点链表应直接返回。
后端手写题后端中频题
如何合并两个有序链表,并避免遗漏尾部节点?
用一个虚拟头节点逐步选择两个链表中较小的节点,某一条链表耗尽后把另一条的剩余部分直接接上。
后端手写题后端中频题
如何实现 LRU 缓存,并保证读写都是 O(1)?
HashMap 用于按 key O(1) 找节点,双向链表维护最近使用顺序;访问或写入时把节点移动到头部,淘汰尾部节点。
后端手写题后端中频题
如何在海量数据中求 Top K,并根据数据是否可一次加载选择算法?
数据能放入内存时可排序或用最小堆;数据流或数据量很大时维护大小为 K 的最小堆,必要时做分片统计再合并。
后端手写题后端中频题
如何实现二分查找的第一个大于等于目标值的位置?
在有序数组中维护左闭右开区间,遇到大于等于目标值时收缩右边界,否则收缩左边界,循环结束的 left 即答案。
后端手写题后端中频题
如何用滑动窗口求连续子数组或字符串窗口问题,并解释窗口收缩条件?
右指针扩展窗口,窗口违反约束时移动左指针恢复合法性;每个元素最多进出窗口一次,通常是 O(n)。
后端手写题后端中频题
如何实现二叉树的层序遍历,并扩展为按层聚合结果?
用队列保存待处理节点,每轮记录当前队列长度作为一层边界,依次取出节点并加入左右子节点。
后端手写题后端中频题
如何实现线程安全计数器,并比较锁与原子操作的适用边界?
简单计数器可用原子加法保证递增不可分割;涉及多个字段或需要复合不变式时仍需锁、事务或消息串行化。
后端手写题后端中频题
如何实现固定容量的有界生产者—消费者队列,支持关闭和异常处理?
队列需要容量、入队等待、出队等待和关闭状态;关闭后禁止新生产,消费者按策略处理剩余任务并最终退出。
后端手写题后端中频题
如何实现令牌桶限流器,并说明突发流量与平均速率的关系?
令牌按固定速率补充并限制桶容量,请求消耗令牌;桶容量决定允许的最大突发,补充速率决定长期平均速率。
后端手写题后端中频题