小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • 手撕代码精华文章

    • 手撕代码精华文章
    • 1. 测试岗手撕代码怎么准备
    • 2. 数组题常见解法怎么总结
    • 3. 字符串题常见解法怎么总结
    • 4. 字典 Map 在算法题中怎么用
    • 5. 双指针题怎么理解
    • 6. 滑动窗口题怎么入门
    • 7. 链表题面试怎么讲
    • 8. 排序算法怎么准备
    • 9. 二分查找怎么写不容易错
    • 10. 手撕代码面试表达技巧
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

7. 链表题面试怎么讲

链表题是手撕代码中比较容易让测试同学紧张的题型,因为它不像数组有下标,核心是节点和指针变化。测试岗面试通常不会考特别复杂的链表题,但反转链表、判断是否有环、合并两个有序链表、找中间节点这些基础题要会讲、会写、会验证。

链表题的关键不是背代码,而是画清楚指针变化。面试时可以边画边讲:当前节点是谁、前驱节点是谁、下一个节点怎么保存、什么时候移动。只要指针关系清楚,代码就不难。

一、链表基础结构

单链表节点通常包含 value 和 next。

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

链表通过 next 串起来,不能像数组一样直接按下标访问。

二、链表题先确认什么

拿到链表题先确认:

  • 链表是否可能为空;
  • 是否只有一个节点;
  • 是否需要原地修改;
  • 是否可能有环;
  • 返回头节点还是布尔值;
  • 是否允许额外空间。

空链表和单节点是最常见边界。

三、反转链表

经典题:把 1 -> 2 -> 3 反转成 3 -> 2 -> 1。

def reverse_list(head):
    prev = None
    curr = head
    while curr:
        next_node = curr.next
        curr.next = prev
        prev = curr
        curr = next_node
    return prev

解释:

  • prev 保存已反转部分的头;
  • curr 是当前节点;
  • next_node 先保存下一个节点,避免断链;
  • 改 curr.next 指向 prev;
  • prev 和 curr 向后移动。

四、判断链表是否有环

用快慢指针。快指针每次走两步,慢指针每次走一步。如果有环,二者会相遇。

def has_cycle(head):
    slow = fast = head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
        if slow == fast:
            return True
    return False

边界:空链表、单节点无环、单节点自环、多节点有环。

五、找链表中间节点

也用快慢指针。

def middle_node(head):
    slow = fast = head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
    return slow

快指针走到末尾时,慢指针在中间。

六、合并两个有序链表

使用虚拟头节点 dummy。

def merge_two_lists(l1, l2):
    dummy = ListNode(0)
    curr = dummy
    while l1 and l2:
        if l1.val <= l2.val:
            curr.next = l1
            l1 = l1.next
        else:
            curr.next = l2
            l2 = l2.next
        curr = curr.next
    curr.next = l1 if l1 else l2
    return dummy.next

dummy 可以简化头节点处理。

七、链表题常见技巧

1. dummy 虚拟头节点

适合删除节点、合并链表,避免头节点特殊判断。

2. 快慢指针

适合找中点、判断环。

3. 保存 next

反转链表时一定要先保存 next,否则会断链。

4. 画图

链表题建议面试时画图辅助说明。

八、链表题常见错误

  • 忘记处理空链表;
  • 忘记保存 next;
  • 返回了原 head 而不是新 head;
  • while 条件写错;
  • 快指针没有判断 fast.next;
  • 修改指针后丢失后续节点。

九、面试回答模板

如果面试官问“链表题面试怎么讲”,可以这样回答:

链表题我会先画节点关系,再写代码。重点关注空链表、单节点和指针断链问题。反转链表时用 prev、curr、next_node 三个变量,先保存 next,再把 curr.next 指向 prev,最后移动指针;判断是否有环用快慢指针,快指针每次两步,慢指针每次一步,相遇说明有环;合并两个有序链表可以用 dummy 虚拟头节点简化头节点处理。链表题最重要的是讲清指针变化和返回值。

十、练习清单

  1. 定义链表节点;
  2. 遍历链表;
  3. 反转链表;
  4. 判断是否有环;
  5. 找中间节点;
  6. 合并两个有序链表;
  7. 删除指定节点;
  8. 使用 dummy 节点;
  9. 画图解释指针变化;
  10. 准备链表面试表达。

链表题不要硬背。把指针关系画清楚,处理好空节点和返回值,大多数基础链表题都能稳住。

配套刷题:

  • 手撕代码
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
6. 滑动窗口题怎么入门
Next
8. 排序算法怎么准备