字节跳动社招后端三面:链表倒数第 K 个节点与项目深挖
- 轮次
- 三面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 自我介绍。
- 介绍一下你所在部门的业务。
- 算法题:返回链表的倒数第 K 个节点。
- 针对简历问两个深入的问题。
- 介绍一个你最熟悉的项目,并接受追问。
- 反问。
《参考解析》
链表倒数第 K 个节点
用快慢指针一次遍历:快指针先走 K 步,然后快慢指针同时前进,快指针走到链表末尾时,慢指针正好指向倒数第 K 个节点。边界要处理 K 大于链表长度、K ≤ 0、空链表。时间复杂度 O(n),空间 O(1)。
ListNode findKthFromEnd(ListNode head, int k) {
if (head == null || k <= 0) return null;
ListNode fast = head, slow = head;
for (int i = 0; i < k; i++) {
if (fast == null) return null; // k 超过链表长度
fast = fast.next;
}
while (fast != null) {
fast = fast.next;
slow = slow.next;
}
return slow;
}
项目深挖怎么准备
面试官通常会沿一条主线往下追:你负责哪部分 → 为什么这么设计 → 有没有别的方案 → 指标怎么来的 → 出了问题怎么排查。提前为每个项目准备四样东西:业务背景和用户价值、你个人的具体动作、可验证的结果指标、一次失败或取舍的复盘。数字要能解释口径,不能只写「提升 30%」却说不清基线。
介绍部门业务
用「服务谁、解决什么问题、核心链路是什么、你所在团队负责哪一段」四句话讲清,避免背组织架构。如果对部门了解不深,就讲自己从面试沟通和公开资料里确认的部分,不编内部信息。
反问
优先问能帮助判断岗位质量的问题:团队当前最重要的目标是什么、这个岗位进来后前三个月要解决什么问题、技术栈和协作方式、绩效如何评估。少问官网能查到的信息。