华为研发面试题常出题型,你会几个?
2020-04-22阅读 1343


第一种类型:字符串处理问题,是华为开发笔试中常考类型,属于中、低难度,主要考核面试者的缜密度和细心程度,还有基本的代码能力

 

题目:简单错误记录

描述:

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。

处理:

1、 记录最多8条错误记录,循环记录(或者说最后只输出最后出现的八条错误记录),对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;

2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;

3、 输入的文件可能带路径,记录文件名称不能带路径。

 

输入描述:

一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。

输出描述:

将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:

示例1

输入

E:\V1R2\product\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地址和A,B,C,D,E类地址是不冲突的

输入描述:

多行字符串。每行一个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

 

第三种类型:涉及数据结构,链表、数组处理

 

题目:从单向链表中删除指定值的节点

描述:

输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。

链表结点定义如下:

struct ListNode

{

int         m_nKey;

ListNode* 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