今天我就结合自己在华为面试的经历,谈谈华为面试的流程。因为是举例,可能不是100%准确,但也结合了在华为参加过面试的几位同学同事的反馈和目前华为研发的情况;d工程师,总结如下。
1.性格测试。性格测试成绩绑定身份证号,如果通过,有效期是一年(或者一年以上,反正有效期很长);不通过就有第二次机会,但是不通过第二次就比较麻烦了。除非业务对你有强烈要求,否则人力资源部会拒绝你,如果你性格测试不合格,会有有效期。
2.计算机测试。计算机考试的情况变化很大。正常情况是面试官或者HR直接发测试平台的网页链接,进入测试平台在自己的电脑上做编程题。另一种情况是我被两个不同的部门面试过。第一系面试的时候在测试平台上做编程题,有时候转到第二系面试的时候要求再做一遍。但是二系的编程题不一定在测试平台上做,比较松散。另外,如果是需要数学的职位,会有面试官给出数学公式推导的问题。
3.技术上可能有1~2发。技术面试和一般互联网公司的技术面试没有太大区别。华为很少让网站做编程题(个人经验)。
4.监造、监造和技术方的区别在于监造侧重于询问项目经验,对具体技术可能问得不多。另外,有时候主管会问一些HR的问题。
5.人力资源方面。华为的HR面试不太可能被淘汰。大致是问一些家庭生活,当地是否有长期工作计划等问题。
计算机考试阶段有五个经常出现的问题。一般华为的电脑考试是两大题,也就是两道程序题,满分400,及格120。个人理解,华为的考试基本上就是一个简单的leetcode级别。
第一类:字符串处理,这是华为笔试中常见的测试类型,难度为中低,主要考核受访者的严谨程度和细心程度,以及基本的代码能力。
标题:简单错误记录
描述:
开发一个简单的错误记录模块,可以记录错误代码的文件名和行号。
搬运:
1.最多记录8条错误记录,循环记录(或只输出最后8条错误记录),同一条错误记录只记录一条错误记录(净文件名和行号完全匹配),错误数增加;
2.超过16个字符的文件名,只记录文件的最后16个字符;
3.输入文件可能有路径,但记录文件名不能有路径。
输入描述:
一行或多行字符串。每行包括文件名和行号以及路径,用空格分隔。
输出:
统计所有记录并输出结果。格式:文件名、代码、行数,用空格分隔,例如:
例1
投入
E: \ V1R2 \产品\fpgadrive.c 1325
输出
fpgadrive.c 1325 1
第二类:综合试题,涉及数学运算、字符转换、小数转换、逻辑判断及相关网络知识。
主题:识别有效的IP地址和掩码,并进行分类统计。
描述:
请分析IP地址和对应的掩码进行分类和识别。要求按照A/B/C/D/E类地址分类,非法地址和掩码要分开分类。
所有的IP地址分为五类:A、B、C、D、e。
A类地址1 . 0 . 0 . 0 ~ 126 . 255 . 255 . 255;
B类地址128 . 0 . 0 . 0 ~ 191 . 255 . 255 . 255;
C类地址192 . 0 . 0 . 0 ~ 223 . 255 . 255 . 255;
D类地址224 . 0 . 0 . 0 ~ 239 . 255 . 255 . 255;
E类地址240.0.0.0~255.255.255.255
专网的IP范围是:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
子网掩码是二进制的,后跟连续的1,然后全是0。(例如,255.255.255.32是非法掩码)
请注意,二进制中的所有1或0都是非法的。
注意:
1.类似于[0]的ip地址。*.*.*]不属于以上任何一个输入类别,也不属于非法IP地址,计数时可以忽略。
2.私有IP地址之间没有冲突
多行字符串。每行一个IP地址和掩码,用~分隔。
输出:
计算A、B、C、D、E、错误的IP地址或错误掩码以及私有IP的数量,用空格分隔。
例1:
投入
10.70.44.68~255.254.255.0
1.0.0.1~255.0.0.0
192.168.0.2~255.255.255.0
19.0.~255.255.255.0
输出
1 0 1 0 0 2 1
第三类涉及数据结构、链表和数组处理。
主题:从单向链接列表中删除具有指定值的节点。
描述:
输入单向链表和节点的值,从单向链表中删除等于该值的节点,如果删除后链表中没有节点,则返回空指针。
链表节点定义如下:
结构列表节点
{
int m _ nKey
利斯
tNode* m_pNext;
};
详细描述:
本题为考察链表的插入和删除知识。
链表的值不能重复
构造过程,例如
1 <- 2
3 <- 2
5 <- 1
4 <- 5
7 <- 2
最后的链表的顺序为 2 7 3 1 5 4
删除 结点 2
则结果为 7 3 1 5 4
输入描述:
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值
输出描述:
输出删除结点后的序列,每个数后都要加空格
示例1
输入
5
2
3 2
4 3
5 2
1 4
3
输出
2 5 4 1
第四类型:数独问题,涉及算法及二维数组
题目: Sudoku-Java
问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个粗线宫内的数字均含1-9,并且不重复。
输入描述:
包含已知数字的9X9盘面数组[空缺位以数字0表示]
输出描述:
完整的9X9盘面数组
示例1
输入
0 9 2 4 8 1 7 6 3
4 1 3 7 6 2 9 8 5
8 6 7 3 5 9 4 1 2
6 2 4 1 9 5 3 7 8
7 5 9 8 4 3 1 2 6
1 3 8 6 2 7 5 9 4
2 7 1 5 3 8 6 4 9
3 8 6 9 1 4 2 5 7
0 4 5 2 7 6 8 3 1
输出
5 9 2 4 8 1 7 6 3
4 1 3 7 6 2 9 8 5
8 6 7 3 5 9 4 1 2
6 2 4 1 9 5 3 7 8
7 5 9 8 4 3 1 2 6
1 3 8 6 2 7 5 9 4
2 7 1 5 3 8 6 4 9
3 8 6 9 1 4 2 5 7
9 4 5 2 7 6 8 3 1
第五种类型:典型的动态规划问题,面试华为15级以上一般会考一道动态规划题
题目: 火车进站
描述:
给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。
输入描述:
有多组测试用例,每一组第一行输入一个正整数N(0<N<10),第二行包括N个正整数,范围为1到9。
输出描述:
输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见sample。
示例1
输入
3
1 2 3
输出
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
以上内容希望对你有所帮助,可以先自测有一下。有关面试方面的问题可以评论区留言。