华为相关面经汇总
概览
- 笔试流程:3 道编程题,限时完成,支持 Java/C++/Python
- 整体难度:第 1 题经典题(⭐⭐),第 2 题组合型难题(⭐⭐⭐⭐),第 3 题中等 DP(⭐⭐⭐)
- 风格特点:第 2 题题干偏业务化,需要快速抽象为算法模型
- 面试流程:通常为 2-3 轮技术面 + 1 轮主管面,部分岗位有 HR 面
- 光产品线特点:偏重 C++、底层知识、项目深挖,算法题难度中等
面经列表
面经 12 | 光产品线 通用软件 实习一面+二面 | 2026-07
来源:牛客网 - 爱吃烤肠的牛肉丸在刷题 链接:https://www.nowcoder.com/feed/main/detail/1d3a39f31e0143f0a558b036bf7e75ea 时间:2026-07 职位:通用软件开发(实习) 轮次:一面技术面(1h30min)+ 二面主管面(37min) 结果:通过 ✅
一面(技术面)
Q1:自我介绍
Q2:基类和派生类的构造、析构调用顺序?
A:构造顺序:先基类构造 → 再派生类构造;析构顺序:先派生类析构 → 再基类析构。虚析构函数确保通过基类指针删除派生类对象时能正确调用派生类析构。
Q3:虚函数表动态绑定机制?
A:每个有虚函数的类都有一张虚函数表(vtable),对象内存布局中第一个成员是虚函数表指针(vptr)。调用虚函数时,通过 vptr 找到 vtable,再根据函数在表中的索引找到实际函数地址,实现运行时多态。
Q4:派生类以 public 继承基类,可以访问基类哪些成员?
A:public 继承下,基类的 public 成员在派生类中仍是 public,protected 成员仍是 protected,private 成员不可直接访问(但可通过基类的 public/protected 成员函数间接访问)。
Q5:浅拷贝、深拷贝,为什么要用深拷贝?
A:浅拷贝只复制对象的值,包括指针地址,导致两个对象指向同一块内存,析构时会重复释放。深拷贝会重新分配内存并复制指针指向的内容,每个对象拥有独立的资源,避免 double free 和数据共享问题。
Q6:什么是内联函数?和普通函数有什么区别?
A:内联函数在编译时将函数体代码直接嵌入到调用处,省去函数调用的压栈、跳转、返回开销。区别:① 内联函数没有函数调用开销;② 内联函数没有地址,不能取函数指针;③ 内联只是给编译器的建议,不一定都会内联(递归、函数体过大等不会内联);④ 从压栈角度,普通函数调用需要将参数、返回地址等压入栈帧,内联函数不需要。
Q7:二分查找法怎么实现的?它的使用条件是什么?
A:二分查找要求数组有序且支持随机访问。实现思路:维护左右指针,每次取中间位置与目标值比较,缩小一半搜索范围。时间复杂度 O(log n)。
Q8:项目和成果介绍
- 讲了 2 个实验室项目,面试官没挖太深技术细节
- 介绍了授权专利
Q9:笔试复盘
- 面试官共享屏幕打开笔试提交的代码,逐行提问
- 只复盘拿分多的题,能讲顺就行
Q10:手撕算法
- 力扣 T35 改编(搜索插入位置),基于二分查找
二面(主管面)
Q1:自我介绍
Q2:以前本科不是现在这专业的,为什么跨考?
Q3:专利已经授权了?是一作吗?
Q4:可以说说你的性格吗?你有什么性格优势?
Q5:家里情况怎么样?
Q6:希望从实习中收获什么?如果实习完了还会有意愿留下吗?
Q7:反问环节
- 实习生怎么安排?公司对实习生抱什么态度或希望?
备注
- 一面基本全是 C++ 八股,计网、数据结构、操作系统没怎么问
- 面完几分钟就出结果,整体流程很快
面经 11 | 光产品线 通用软件开发 一面+二面+三面 | 2026
来源:牛客网 - 线下速通华子光产品线 时间:2026 职位:通用软件开发 轮次:一面(50min)+ 二面(50min)+ 三面(50min) 结果:通过 ✅(二十分钟后通知二面,五分钟后通知三面)
一面(技术面)
Q1:自我介绍
Q2:深挖项目
Q3:根据项目问八股
- 进程、线程
- TCP、UDP
- 对称加密、非对称加密
- HTTPS
Q4:手撕算法 — 手动实现 sqrt,控制精度
A:二分迭代法或牛顿迭代公式。
- 二分法:在 [0, x] 范围内二分查找 mid,比较 mid² 与 x 的大小,缩小区间直到满足精度要求
- 牛顿迭代法:利用公式
x_{n+1} = (x_n + a/x_n) / 2迭代逼近平方根,收敛更快
二面(技术面)
Q1:自我介绍
Q2:根据简历从上到下逐个词抠简历
- 根据个人技能问八股
- 根据项目难点、实现方式提问
Q3:手撕算法 — 根据字符串实现四则运算器
A:经典栈实现表达式求值。思路:
- 中缀转后缀(逆波兰表达式),或直接双栈(数字栈+运算符栈)
- 处理运算符优先级:乘除 > 加减
- 遇到数字压数字栈,遇到运算符时比较栈顶优先级,栈顶优先级高则先计算
三面(HR 面 / 综合面)
Q1:自我介绍
Q2:HR 问题
- 项目难点
- 遇到最有压力的事情
- 最有挫败感的事情
- 团队怎么合作,怎么分配任务
- 有没有加过班
- 之前实习收获
- 怎么看待加班
- 怎么看待华为
- 期望薪资
- 是否单身
- 有没有其他意向
面经 10 | ICT BG 光产品线 通用软件实习生 | 2026-07
来源:本人亲历(在线笔试) 时间:2026-07 职位:通用软件实习生(实习) 轮次:笔试(在线编程 3 题) 结果:部分通过 ⚠️(第 1 题全过,第 2 题未通过,第 3 题通过 20%)
面试问题与解答
Q1:接雨水(隔板积水问题)—— ✅ 顺利通过
给定长度为 n 的整数数组 height,数组数值代表隔板高度,相邻隔板间的凹槽可积存雨水。计算整体能承接的雨水总量。
A:经典双指针题,对应 LeetCode 42。维护左右指针和两侧最大高度,每次移动较小的一侧并计算积水量。时间复杂度 O(n),空间复杂度 O(1)。
本人当场利用最值数组以及离散化水面高度公式写出解答并全量通过。
Q2:互斥频带载波选优(业务背包 DP 题)—— ❌ 未通过
现有 N 个载波,每个载波有固定带宽、归属某一频带。约束:最多选 K 个载波;同一频带只能选一个;给定 C 组互斥频带对,互斥关系具备传递性。求满足全部约束下总带宽最大的组合。
A:核心思路是 并查集 + 分组背包 DP。
- Step 1:每个频带只保留带宽最大的载波(贪心)
- Step 2:用并查集处理互斥关系的传递性,将频带划分为若干"互斥组"
- Step 3:分组背包 DP,每个互斥组是一个"物品组",组内只能选一个频带(或不选)
对应 LeetCode 知识点:并查集(LC 547 / 684 / 721)+ 分组背包(LC 1155)。
❌ 本人当时的失误:题干偏业务化,没能在限时内抽象出"并查集 + 分组背包"模型,互斥的传递性也没意识到要用并查集处理。
完整 Java 解答已收录于 AlgorithmPractice:
- 📂 代码:
AlgorithmPractice/java/src/dp/999_carrier_selection.java - 📂 笔记:
AlgorithmPractice/docs/07-动态规划/999-carrier_selection.md
Q3:字符串最少插入字符(子序列 LCS 问题)—— ⚠️ 仅通过 20%
输入原字符串 S 和目标字符串 T,仅允许对 S 执行插入操作。求最少插入多少个字符,使 T 成为处理后 S 的子序列。
A:本质是求 LCS(S, T),答案 = len(T) - LCS(S, T)。用滚动数组优化空间的 DP,时间 O(|S|×|T|),空间 O(|T|)。对应 LeetCode 1143。
❌ 本人当时的失误:核心思路(LCS)可能是对的,但只过了 20%,推测是边界情况(空串、T 已是子序列等)没处理全,或者空间/时间复杂度没优化到位。笔试时没做充分的边界自测。
完整 Java 解答已收录于 AlgorithmPractice:
- 📂 代码:
AlgorithmPractice/java/src/dp/998_min_insertions.java - 📂 笔记:
AlgorithmPractice/docs/07-动态规划/998-min_insertions.md
经验教训
组合型问题建模是短板:第 2 题涉及并查集 + 分组背包的组合,题干一业务化就抽象不出来。后续需专项练习"读题→抽象模型"的能力,看到"互斥/连通/传递性"要立刻想到并查集,看到"每组选一个/容量限制"要立刻想到分组背包。
边界测试意识严重不足:第 3 题有思路却只过 20%,说明核心算法可能对了,但空串、极端长度等边界没覆盖。以后每道题写完必须先用 3 组测试自测:正常情况、边界情况、极端情况。
题海深度不够:并查集和分组背包单独都会,但组合到一起就懵了。需刷更多"多知识点组合"的题目,如 LC 1697、洛谷 P1757 等。
行动项:
面经 9 | ICT 光产品线 通软 实习技术面+主管面 | 2023-05
来源:牛客网 - zAurora(青出于蓝,门头沟学院 C++) 时间:2023-05-19 职位:通用软件(实习) 轮次:技术面(2h)+ 主管面(50min) 结果:通过 ✅(面完十多分钟短信通知)
技术面
Q1:项目介绍
Q2:项目延伸出来的一个场景题(不会)
Q3:使用 STL 过程中感受到的优缺点?
A:优点:① 封装了常用数据结构和算法,开箱即用;② 模板编程,泛型支持好;③ 经过充分测试,稳定性高。缺点:① 部分容器底层实现细节隐藏深,性能调优困难;② 迭代器失效问题需要注意;③ 编译错误信息晦涩难懂;④ 某些场景下性能不如手写定制化数据结构。
Q4:能够使用 sort 的容器需要满足什么条件?
A:① 容器的迭代器必须是随机访问迭代器(RandomAccessIterator),因为 sort 需要 O(1) 时间访问任意位置元素;② 元素必须支持 < 比较运算符,或提供自定义比较函数;③ 元素必须是可交换的(swappable)。满足条件的容器:vector、deque、array。list 用自己的 sort 成员函数。
Q5:n 个序列的最长公共子序列(写了一个多小时,两个版本都有逻辑问题,最后说了暴力思路)
A:两个序列的 LCS 用经典二维 DP:dp[i][j] 表示第一个序列前 i 个和第二个序列前 j 个的 LCS 长度。n 个序列的 LCS 是 NP-hard 问题,n 较小时可用 n 维 DP,n 较大时通常用启发式方法或先求两两 LCS 再合并。
Q6:评估一下代码中的问题,逻辑以及编码习惯方面的
Q7:记不记得笔试代码,有什么可以改进的(不记得)
主管面
Q1:项目介绍,代码量多少之类的
Q2:你认为怎么样才算是好的代码?
Q3:评价一下你在实验室中的代码水平
Q4:为啥求职不找本专业的方向,期望通过实习学习到什么
Q5:华子近几年处境不好会不会有顾虑,工作时长之类的
Q6:反问:新人培养机制
备注
- 手撕好难,只写过 2 个序列的最长公共子序列
- 投的通软,面试官说主要做嵌入式,不完全匹配
- 面完十几分钟就发短信通过了
面经 8 | 光产品线 一面+二面+主管面 | 2022-09
来源:牛客网 - 豁达的鲸鱼希望奇迹发生(飞黄腾达,北京理工大学 C++) 时间:2022-09-26 职位:光产品线(校招,末流 985 硕) 轮次:一面(9.24)+ 二面(9.26)+ 主管面(9.26) 结果:通过 ✅(二十分种收到通过短信)
笔试
- 9.21 运气比较好,题目相对不难,拿了三百多分
一面
Q1:主要针对项目问,实验室项目问的很细
Q2:手撕 — 678. 有效的括号字符串
A:经典栈/贪心题。可以用两个栈分别存左括号和星号的索引,遇到右括号时优先匹配左括号,再匹配星号。最后检查剩余左括号能否被星号匹配。
二面
Q1:主要还是针对于做过的项目,项目里的细节纠得很细
Q2:手撕 — 240. 搜索二维矩阵 II
A:从矩阵右上角(或左下角)开始搜索,目标值大于当前值则向下走,小于则向左走,时间复杂度 O(m+n)。
主管面
Q1:聊技术、聊项目相关
Q2:在项目中觉得成就感最大的时候是什么时候?
备注
- 一面通过当晚通知周一二面和主管面,整体流程很快
- 进池子只是开始,祈愿能被捞
面经 7 | 华子 一面+二面+主管面(Java 方向) | 2022-09
来源:牛客网(9月面经) 时间:2022-09 职位:软件开发(Java 方向,部门偏底层) 轮次:一面(9月1日)+ 二面(9月14日)+ 主管面(9月14日) 结果:通过 ✅(9月21日显示主管面已通过)
一面(9月1日 下午 3:00 - 4:50)
Q1:自我介绍
Q2:哪个项目对你印象比较深刻,为什么?
Q3:项目中主要充当什么角色?如何安排工作?
Q4:项目中前后端同学如何进行合作?
Q5:项目中如何判断出来 QPS 已经到达了性能瓶颈?
A:可以从以下指标判断:① CPU 使用率持续高位(>80%);② 响应时间(RT)显著上升,P99/P999 飙升;③ 错误率上升(超时、5xx 错误);④ 线程池/连接池打满;⑤ 数据库慢查询增多;⑥ 吞吐量(QPS)不再随压力增加而上升甚至下降。
Q6:优化之后主要是哪一个方面发生了较大的变化?
Q7:TCP 三次握手和四次挥手?
A:三次握手:客户端发 SYN → 服务端回 SYN+ACK → 客户端发 ACK。四次挥手:主动方发 FIN → 被动方回 ACK → 被动方发 FIN → 主动方回 ACK。四次是因为被动方可能还有数据要发送,不能同时发 FIN 和 ACK。
Q8:URL 输入浏览器经历了哪些过程?
A:DNS 解析 → 建立 TCP 连接(三次握手)→ 发送 HTTP 请求 → 服务器处理并返回响应 → 浏览器解析 HTML 渲染页面 → 断开连接(四次挥手)。
Q9:说一说 SSM 吧?(Spring SpringMVC Mybatis 全都介绍了一遍)
Q10:博客中都写了些什么?
Q11:算法题 — 子集 II(LeetCode 90)
A:回溯 + 去重。先排序,遇到重复元素时,如果前一个相同元素没有被选中则跳过,避免重复子集。
算法题做了一个小时,面试官还不断鼓励
二面(9月14日 下午 3:00 - 4:00)
部门更加偏底层一些,面试官更多是使用 C++,对 Java 估计不是很熟,所以 Java 问得比较少
Q1:自我介绍
Q2:项目中的难点?
Q3:项目中优化的地方,你是如何发现瓶颈的?
Q4:做项目的体会?
Q5:项目中如何保证线程的同步?
A:Java 中保证线程同步的方式:① synchronized 关键字(方法/代码块);② ReentrantLock 可重入锁;③ volatile 关键字(保证可见性,不保证原子性);④ 原子类(AtomicInteger 等);⑤ 线程安全容器(ConcurrentHashMap 等);⑥ 信号量 Semaphore、CountDownLatch 等工具类。
Q6:Mysql 中的索引?B+ 树的结构?
A:MySQL 索引主要用 B+ 树。B+ 树特点:① 非叶子节点只存键值,不存数据,单个节点能存更多索引项,树更矮;② 叶子节点存所有数据,且通过链表相连,支持范围查询;③ 查找效率稳定,都是 O(log n)。
Q7:本科学习的数据结构和设计模式主要在项目中哪些地方有使用到?
Q8:算法题 — 无重复字符的最长子串
A:滑动窗口经典题。用哈希表存字符最后出现的位置,维护左右指针,遇到重复字符时移动左指针。时间 O(n),空间 O(min(m, n)),m 为字符集大小。
主管面(9月14日 下午 3:00 - 4:00)
个人以为华子主管面就是简单聊几句,没想到压力面了一个小时
Q1:自我介绍
Q2:如何看待华为的文化?
Q3:自己平时的工作强度?能接受的工作强度?
Q4:有什么一直坚持的兴趣爱好?
Q5:介绍实习的工作内容?以及有什么印象深刻的事情?
Q6:如何看待项目突然要加班的事情?
Q7:通宵过吗?如何看待通宵的?
Q8:项目如果做到了最后发现方法有些错误,该怎么办?
Q9:如何解决和看待未来行业的不确定性?
Q10:自己压力最大的一次是什么时候?如何解决的?
Q11:自己最自豪的事情是什么,为什么?
Q12:未来的职业规划?
Q13:工作地点的选择?
Q14:更看重平台还是更加看重薪资?
Q15:反问?
备注
- 二面整体都是围绕项目来问,没有问具体的八股文
- 主管面感觉主管人比较激情澎湃
- HR 愿意帮忙跟进的话,总体流程会比较快,实验室有两天就三面全面完的同学
面经 6 | 华为 一面+二面(八股+手撕+情景设计) | 2022
来源:牛客网 时间:2022 职位:软件开发 轮次:一面 + 二面 结果:未知
一面
Q1:自我介绍
Q2:手撕 — 给定两数组 arr1、arr2,arr2 中的元素是 arr1 对应元素的父节点(通过该关系可以形成一个多叉树),以不构建树的形式遍历这些节点(前中后序均可)
A:可以用哈希表建立 父节点→子节点列表 的映射,然后用递归/迭代进行 DFS 遍历,本质上还是构建了一个邻接表而不是完整的树结构。或者用并查集的思路?
Q3:一些八股
- 指针和引用的区别以及引用有什么优势? A:指针是变量,存的是地址,可以重新赋值,可以为空;引用是别名,必须初始化,不能重新绑定,不能为空。引用更安全、语法更简洁,函数传参时不需要解引用。
- const 关键字的作用? A:① 修饰变量:只读,不能修改;② 修饰指针:const int* p(指向的值不可变)和 int* const p(指针本身不可变);③ 修饰函数参数:防止参数被修改;④ 修饰成员函数:保证函数不会修改成员变量;⑤ 修饰返回值:返回值不能被修改。
- 多态实现原理? A:编译时多态(函数重载、模板)+ 运行时多态(虚函数+虚函数表)。运行时多态通过基类指针/引用调用虚函数时,根据对象实际类型查找虚函数表中对应的函数地址。
二面
Q1:自我介绍
Q2:手撕 — 直接写出二叉树层序遍历的实现
A:用队列实现。根节点入队,循环中每次出队一个节点并访问,然后将左右子节点入队。可以用 size 变量控制每层的节点数,实现分层输出。
Q3:情景设计题一
现一个项目以你作为负责人,你有一些同事一起参与项目,你如何安排项目的实施和进行,要求以项目软件质量为首要。
追问:如果到了项目交付截止前夕,开发出现了一系意外的问题,如程序出现重大 bug 等,你如何安排?
A:项目安排思路:① 需求分析与评审,明确质量标准;② 制定详细计划,划分里程碑;③ 代码规范 + Code Review 制度;④ 单元测试、集成测试、回归测试体系;⑤ 持续集成/持续部署(CI/CD);⑥ 风险识别与预案。 交付前出问题:① 评估影响范围和严重程度;② 优先修复 P0/P1 级 bug;③ 必要时申请延期或降级交付;④ 组织加班攻坚,但要保证质量不妥协;⑤ 及时同步 stakeholders,透明沟通。
Q4:情景设计题二
你如何构建一个内存池?构建完成后你最多有 100 条线程进行安排分配内存,现在每天都有一批请求,且这些请求集中在中午,上午和下午只有极少数请求,问怎么操作合理安排这些请求?
A:内存池设计:① 预先分配一大块内存;② 分成不同大小的内存块(slab 分配器思想);③ 空闲链表管理可用块;④ 分配时找合适大小的块,回收时放回链表。 多线程+流量不均:① 每个线程私有内存池(thread-local),减少锁竞争;② 高峰期前预分配更多内存块;③ 任务队列+线程池,削峰填谷;④ 非核心请求可以延迟到低峰期处理;⑤ 加锁保护共享内存池,或用无锁数据结构。
Q5:情景设计题三
你曾经只解决过表面,而没有解决根本的问题有哪些?
Q6:情景设计题四
用面向对象的思想实现开关控制灯泡状态的问题。(涉及到设计模式)
A:可以用命令模式(Command Pattern)。Switch(调用者)、Command(命令接口)、LightOnCommand/LightOffCommand(具体命令)、Light(接收者)。开关按下时执行对应命令,符合开闭原则,易于扩展新命令。
Q7:一些 SQL 相关(看到简历上写使用过 MySQL)
- 一条语句查询 1-100 范围内随机给定的 ID 值的数据(in)
- 原本插入数据前会先检测数据是否存在再进行插入操作,现要求一条语句实现无数据时插入,有数据时则修改的功能。(insert for update)
A:① SELECT * FROM table WHERE id IN (1, 5, 23, ...); 注意 IN 列表过长会影响性能。 ② INSERT INTO table (id, col1, col2) VALUES (1, 'a', 'b') ON DUPLICATE KEY UPDATE col1='a', col2='b';(MySQL 语法),或 PostgreSQL 的 INSERT ... ON CONFLICT (id) DO UPDATE ...
面经 5 | 武研所 光产品线 通用软开 正式批 一面+二面+主管面 | 2022-09
来源:牛客网 时间:2022-09(9.15 一面,9.16 二面,9.18 主管面) 职位:通用软件开发(正式批) 轮次:一面(50min)+ 二面(80min)+ 主管面(25min) 结果:通过 ✅(每面面完后 10 分钟内出结果)
一面(50min)
Q1:复盘笔试
- 面试官说出一道跟笔试类似的题
- 运气比较好面试官出了道简单题,能写出来
Q2:项目问题
Q3:最后手撕
二面(80min)
Q1:主要问了项目
Q2:手撕题不难,就是犯迷糊边界条件那里磕住了
Q3:写完了面试官会让再优化一下写法
主管面(25min)
Q1:考察综合素质
Q2:实习学到了什么
Q3:如果让你进华为你的优势是什么
Q4:你对华为的了解用三个词语概括(说了民心,面试官还特地问怎么理解这个词)
Q5:学生工作中遇到最有挑战的问题如何解决的
备注
- 每一面都是面完后 10 分钟内出结果,可以看官网申请进度的小绿灯
- 前面两面技术面,问技术问项目,最后手撕
- HR 说 10 月 11 月才会有结果
面经 4 | 光产品线 软开二面(八股+手撕) | 2022-09-22
来源:牛客网 时间:2022-09-22 职位:光产品线 软件开发(二面) 轮次:二面 结果:未知
二面(八股+手撕,无项目)
Q1:自我介绍
Q2:说一说操作系统
Q3:说一说进程和线程的区别?并发和并行?
A:进程是资源分配的基本单位,线程是 CPU 调度的基本单位。进程有独立地址空间,线程共享进程地址空间。进程切换开销大,线程切换开销小。 并发是宏观上同时进行,微观上交替执行(单核);并行是真正同时执行(多核)。
Q4:说一说计算机网络五层协议
A:应用层 → 传输层 → 网络层 → 数据链路层 → 物理层。
Q5:说一说 JAVA 的集合
A:Collection 接口下有 List(ArrayList、LinkedList、Vector)、Set(HashSet、TreeSet、LinkedHashSet)、Queue;Map 接口下有 HashMap、TreeMap、LinkedHashMap、HashTable、ConcurrentHashMap 等。
Q6:HashMap 和 HashSet 的区别?
A:HashMap 实现 Map 接口,存储键值对;HashSet 实现 Set 接口,存储不重复元素。HashSet 底层就是用 HashMap 实现的,value 用一个固定的 Object 占位。
Q7:Linux 了解吗?说一说它的一些指令
A:常用指令:ls、cd、pwd、cat、grep、find、ps、top、kill、chmod、chown、tar、vim、awk、sed 等。
Q8:手撕(思路对但是结果一直出不来)
Q9:为什么选择来东莞这边的光产品线?
面经 3 | 光产品线 技术一面(动态规划题) | 2022-09-16
来源:牛客网 时间:2022-09-16 职位:光产品线(技术一面,1h) 轮次:一面 结果:未知
一面
Q1:自我介绍
Q2:手撕算法 — 最大正方形(土地破坏问题)
小孙经过多年的奋斗,终于在家乡买下了一大块地皮。然而糟心的是黑心的开发商在某些地皮上造成了极大的破坏,以至于不能在上面建设。
输入:第一行为两个整数 n, m 表示这个土地的长宽。接下来 n 行,每行 m 个整数,用空格隔开,0 表示该块土地被破坏,1 表示该块土地完好。 数据范围:1 <= n, m <= 1000 输出:一个整数,最大正方形的边长。
样例: 输入样例: 4 4 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 输出样例:2
A:经典 DP 题,对应 LeetCode 221。
dp[i][j]表示以 (i,j) 为右下角的最大正方形的边长- 递推公式:如果
matrix[i][j] == 1,则dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1 - 否则
dp[i][j] = 0 - 时间 O(n×m),空间 O(n×m),可以用滚动数组优化到 O(m)
面经 2 | 华为通软 一面技术面+主管面 | 2022
来源:牛客网 时间:2022 职位:通用软件 轮次:一面技术面 + 几十分钟后主管面 结果:未知
一面技术面
Q1:一上来就手撕 — 岛屿问题变种(BFS)
脑子不清醒知道 bfs 没写出来,暴力把俩测试用例过了,和面试官说了一下 bfs 思路,算我过了
A:岛屿问题经典 BFS/DFS。遍历网格,遇到 1 时用 BFS/DFS 标记所有连通的 1,计数岛屿数量。
Q2:机试复盘
Q3:聊实习和产出
Q4:agent 项目
主管面
Q1:自我介绍
Q2:项目
Q3:实习
Q4:对 AI 的看法
Q5:测开经历对开发的帮助
备注
- HR 说帮我约的下午,结果是早上 9 点……
面经 1 | 华为一面(凉经) | 2022
来源:牛客网 - 实习过也莫得感情 时间:2022 职位:华为一面 轮次:一面 结果:挂 ❌
一面
Q1:手撕 — 通过删除字母匹配到字典中的最长单词
没有做过这题,加上紧张和胃痛,看题就看了两三分钟,虽然思路秒有而且也写得比较快,但是不知道哪里有 bug 硬是调不通。 没想到能死在一道这么简单的题上面。
A:对应 LeetCode 524。思路:遍历字典中的每个单词,用双指针判断该单词是否是 s 的子序列(可以通过删除 s 中的字符得到),记录最长且字典序最小的单词。
备注
- 估计要么直接挂要么被泡死,应该是没机会去松山湖卡 bug 了
- 没心情玩了,结束秋招了,希望联调给我开高一点吧