Skip to content

华为测试开发面经(按一二三面拆分 · 可背诵标准回答版)

每题包含:题目 + 标准回答思路 + 加分回答示例,可直接背诵使用。


一、一面(45~60 分钟 · 基础 + 项目 + 手撕代码)

一面关键词:项目扎实、基础过关、代码能写出来 华为一面通常很重项目,会问得很细


1. 自我介绍

【标准结构 · 1~2 分钟】

面试官好,我叫 XXX,XX 学校 XX 专业硕士/本科在读。

我有 X 段测试相关经历:
- 在 XX 公司实习期间,负责 XX 模块的功能测试和接口自动化测试
- 独立搭建过 pytest 接口自动化框架,编写用例 XX 条

技术栈方面,我熟悉 Python,能独立编写测试脚本和自动化工具。

我对华为的技术氛围和企业文化非常认可,希望能加入华为的测试团队。
谢谢。

2. 项目介绍(必问,会被深挖)

【STAR 法则】

我负责的是 XX 系统的测试工作。

背景:该系统主要解决 XX 问题,用户规模 XX。
任务:我负责 XX 模块的测试用例设计和执行。
行动:
  1. 用 Xmind 梳理测试点,编写测试用例 XX 条
  2. 执行功能测试,发现 Bug XX 个
  3. 搭建接口自动化框架,编写自动化用例 XX 条
结果:主流程覆盖率达到 XX%,回归时间缩短了 XX%。

常见追问:

  • "项目中遇到的难点是什么?怎么解决的?"
  • "你说的 XX 技术方案,为什么选这个而不是另一个?"
  • "如果再来一次,你会怎么优化?"

3. TCP 和 UDP 的区别

1. 连接性:TCP 面向连接(三次握手),UDP 无连接
2. 可靠性:TCP 可靠(确认、重传、排序),UDP 不可靠
3. 传输效率:UDP 更快(没有确认和重传开销)
4. 场景:TCP 适合文件传输、网页、邮件;UDP 适合视频通话、直播、DNS

追问:TCP 三次握手过程是什么?

1. 客户端发 SYN → 服务端(请求建立连接)
2. 服务端回 SYN+ACK → 客户端(确认并同意)
3. 客户端发 ACK → 服务端(确认收到)

为什么是三次:防止历史连接请求被服务端接受(网络延迟的老旧 SYN 包)

4. TCP/IP 七层模型 / 四层模型

【七层模型】

应用层:HTTP、HTTPS、FTP、DNS、SMTP
表示层:数据格式转换、加密解密
会话层:会话管理
传输层:TCP、UDP
网络层:IP、ICMP、ARP
数据链路层:以太网、WiFi
物理层:网线、光纤

【四层模型(实际使用)】

应用层:HTTP、FTP、DNS
传输层:TCP、UDP
网络层:IP、ICMP
网络接口层:以太网

5. 手撕代码:最后一个单词的长度

python
def lengthOfLastWord(s):
    # 从后往前找,跳过末尾空格
    i = len(s) - 1
    while i >= 0 and s[i] == ' ':
        i -= 1
    # 统计最后一个单词长度
    length = 0
    while i >= 0 and s[i] != ' ':
        length += 1
        i -= 1
    return length

6. 手撕代码:反转字符串中的单词

python
def reverseWords(s):
    # 方法1:Python 简洁写法
    return ' '.join(s.split()[::-1])

    # 方法2:手动实现
    words = []
    word = ''
    for c in s:
        if c != ' ':
            word += c
        else:
            if word:
                words.append(word)
                word = ''
    if word:
        words.append(word)
    return ' '.join(words[::-1])

7. 手撕代码:找出字符串中第一个只出现一次的字符

python
def firstUniqChar(s):
    # 用字典统计每个字符出现次数
    count = {}
    for c in s:
        count[c] = count.get(c, 0) + 1
    # 找第一个次数为1的
    for c in s:
        if count[c] == 1:
            return c
    return -1

8. 手撕代码:合并两个有序数组

python
def merge(nums1, m, nums2, n):
    p1, p2, p = m - 1, n - 1, m + n - 1
    while p2 >= 0:
        if p1 >= 0 and nums1[p1] > nums2[p2]:
            nums1[p] = nums1[p1]
            p1 -= 1
        else:
            nums1[p] = nums2[p2]
            p2 -= 1
        p -= 1

9. 黑盒测试和白盒测试的区别

黑盒测试:不关心代码内部实现,只看输入和输出。
         从用户角度出发,验证功能是否符合需求。
         方法:等价类划分、边界值分析、因果图、场景法

白盒测试:基于代码内部逻辑进行测试,如语句覆盖、分支覆盖、路径覆盖。
         需要了解代码结构。
         方法:语句覆盖、判定覆盖、条件覆盖、路径覆盖

10. 如何设计测试用例?

【标准回答框架】

1. 需求分析:理解功能需求和非功能需求
2. 测试方法选择:
   - 等价类划分:有效等价类、无效等价类
   - 边界值分析:边界上、边界附近
   - 场景法:正常流程、异常流程
3. 用例要素:用例编号、测试步骤、预期结果、优先级
4. 覆盖率:功能覆盖、场景覆盖、异常覆盖

11. 如何测试一个计算器?

【功能测试】
- 基本运算:加减乘除、小数运算、负数运算
- 边界值:最大值、最小值、溢出
- 异常:除以零、非法输入(字母、符号)

【性能测试】
- 连续计算响应时间
- 大数字计算性能

【兼容性测试】
- 不同操作系统、不同分辨率

【用户体验】
- 界面布局、按钮大小、错误提示

12. 进程和线程的区别

1. 定义:进程是资源分配的基本单位,线程是 CPU 调度的基本单位
2. 资源:进程有独立地址空间,线程共享进程资源
3. 通信:进程间通信需要 IPC(管道、消息队列、共享内存),线程间可直接读写共享变量
4. 开销:进程创建开销大,线程创建开销小

13. 死锁是什么?怎么避免?

死锁:两个或多个进程互相等待对方释放资源,导致都无法继续执行。

产生条件:
1. 互斥条件
2. 请求与保持条件
3. 不剥夺条件
4. 循环等待条件

避免方法:
1. 破坏循环等待:按顺序申请资源
2. 设置超时时间
3. 死锁检测和恢复

二、二面(45~60 分钟 · 项目深挖 + 技术深度 + 手撕代码)

二面关键词:项目经得起追问、技术有深度、能解决实际问题


1. 项目深挖:你负责的模块是怎么测试的?

我负责的是 XX 模块:

1. 功能测试:先用 Xmind 梳理测试点,再设计测试用例
   - 正常流程:XX → XX → XX
   - 异常流程:XX 失败、XX 超时

2. 接口测试:用 Postman 验证接口返回,检查边界情况

3. 自动化测试:搭建 pytest 框架,数据驱动,覆盖主流程

4. 性能测试:用 Jmeter 压测关键接口,关注 QPS 和响应时间

2. 实习中遇到的困难是什么?怎么解决的?

【STAR 法则】

困难:接口之间有强依赖,A 接口返回的数据是 B 接口的入参,
      线下环境数据不稳定,导致自动化用例经常失败。

解决:
1. 用 mock 拦截依赖接口,返回预设数据
2. 搭建独立的测试数据准备接口

结果:用例稳定性从 60% 提升到 95%。

3. 如何设计一个定时任务调度平台?

核心模块:
1. 任务管理:任务的增删改查、定时规则配置
2. 调度引擎:根据定时规则触发任务执行
3. 执行器:实际执行任务的模块
4. 结果收集:任务执行结果、日志、告警

关键问题:
1. 任务还没执行完,又到调度时间怎么办?
   - 方案1:跳过本次执行
   - 方案2:排队等待
2. 如何保证任务不丢失?
   - 持久化存储任务信息
3. 如何处理任务失败?
   - 重试机制 + 告警通知

4. 如何保证测试用例的全面性?

1. 需求分析:理解所有功能点和业务流程
2. 测试方法:
   - 等价类划分:覆盖有效和无效输入
   - 边界值分析:测试边界情况
   - 场景法:覆盖正常流程和异常流程
   - 错误猜测法:根据经验猜测可能的缺陷
3. 评审:和开发、产品一起评审测试用例
4. 覆盖率统计:功能覆盖、代码覆盖、场景覆盖

5. 为什么选择测试而不是开发?

1. 我对质量保障工作有兴趣,喜欢从用户角度思考问题
2. 测试需要既懂技术又懂业务,能更全面地理解产品
3. 我细心、耐心,适合做质量保障工作
4. 测试开发的岗位能兼顾测试和开发能力,符合我的职业规划

6. 手撕代码:无重复字符的最长子串

python
def lengthOfLongestSubstring(s):
    char_set = set()
    left = 0
    max_len = 0
    for right in range(len(s)):
        while s[right] in char_set:
            char_set.remove(s[left])
            left += 1
        char_set.add(s[right])
        max_len = max(max_len, right - left + 1)
    return max_len

7. 手撕代码:最长回文子串

python
def longestPalindrome(s):
    def expand(left, right):
        while left >= 0 and right < len(s) and s[left] == s[right]:
            left -= 1
            right += 1
        return s[left + 1:right]

    result = ''
    for i in range(len(s)):
        # 单中心
        s1 = expand(i, i)
        # 双中心
        s2 = expand(i, i + 1)
        result = max(result, s1, s2, key=len)
    return result

8. Python 的特点是什么?和 C/Java 的区别?

Python 特点:
1. 语法简洁,易于学习
2. 动态类型,不需要声明变量类型
3. 解释型语言,跨平台
4. 丰富的第三方库

和 C 的区别:
- Python 解释型,C 编译型
- Python 动态类型,C 静态类型
- Python 有垃圾回收,C 需要手动管理内存

和 Java 的区别:
- Python 语法更简洁
- Python 动态类型,Java 静态类型
- Python 运行速度较慢,Java 较快

三、三面(30~45 分钟 · 主管面 / 综合面)

三面关键词:稳定性、动机、抗压能力、价值观匹配


1. 对华为的了解?为什么选择华为?

华为是全球领先的 ICT 基础设施和智能终端提供商,
在通信、云计算、智能终端等领域都有很强的技术实力。

我选择华为的原因:
1. 华为的技术氛围好,能学到很多东西
2. 华为的企业文化强调奋斗和成长,和我的价值观匹配
3. 华为的平台大,发展空间广阔

2. 对加班怎么看?

我认为加班要分情况:
1. 项目紧急时,加班是必要的,我可以接受
2. 但长期来看,应该通过提高效率来减少不必要的加班
3. 我会尽量在工作时间内高效完成任务

3. 如何排解压力?

1. 运动:跑步、健身,释放压力
2. 和朋友聊天,倾诉一下
3. 看书、听音乐,放松心情
4. 把大任务拆分成小任务,逐个解决,减少焦虑

4. 你的优缺点是什么?

【优点】

我做事细心、有责任心。
比如做测试的时候,我会主动考虑边界情况和异常场景,
设计覆盖全面的测试用例。

【缺点】

我有时候追求完美,会在细节上花较多时间。
但我现在会先用优先级排序,先完成核心功能,再优化细节。

5. 职业规划是什么?

短期(1~2 年):
- 扎实掌握测试技术,能独立负责模块测试
- 学习自动化测试和性能测试

中期(3~5 年):
- 成为核心测试开发,能设计和优化测试方案
- 深入某一领域(如自动化测试平台)

长期:
- 测试架构师或测试团队负责人

6. 和领导/同事意见不合怎么办?

1. 先沟通,了解对方的想法和理由
2. 用数据说话,列出各自的优缺点
3. 如果是技术问题,可以做个小实验验证
4. 如果是方向问题,尊重领导的决定,但保留自己的意见
5. 最终目标是团队目标达成,不是个人输赢

7. 你有什么问题要问我?

1. 这个岗位主要负责什么业务?
2. 团队的技术栈是什么?
3. 新人进入后有什么培训?
4. 部门的业务发展方向是什么?

四、华为高频手撕代码汇总

题目难度出现频率
最后一个单词的长度⭐⭐⭐⭐⭐
反转字符串中的单词★★⭐⭐⭐⭐⭐
第一个只出现一次的字符★★⭐⭐⭐⭐
无重复字符的最长子串★★★⭐⭐⭐⭐
合并两个有序数组★★⭐⭐⭐
最长回文子串★★★⭐⭐⭐
翻转字符串⭐⭐⭐
两数之和★★⭐⭐⭐

五、华为面试特点总结

华为一面:项目 + 基础 + 手撕代码
重点:项目要能讲清楚,基础要扎实,代码要能写

华为二面:项目深挖 + 技术深度 + 手撕代码
重点:项目经得起追问,技术有深度,能解决实际问题

华为三面:综合面(主管面)
重点:稳定性、动机、抗压能力、价值观匹配

建议:华为面试很重项目,一定要把简历上的项目吃透,每一个细节都要能讲清楚。

Powered by VitePress

🔒 需要口令解锁

关注微信公众号
回复关键词 「」 获取口令

解锁后本浏览器长期有效