当前位置:文档之家› 我来说说华为机试

我来说说华为机试

我来说说华为机试
我来说说华为机试

受乔哥的启发,决定写一个关于华为机试的简介,首先声明本人并非大牛,也无权拿到华为的内部资料,以下内容大部分源自网络,还有一部分是自己的感悟,本文以整理和疏导为主。

由于我不会JAVA,在这也就不写JAVA的东西了吧,下面的内容以C/C++为主。

分为几个部分:第一部分是华为机试流程、题型等相关介绍,第二部分是一些经典题目的剖些,第三部分是一些提示和建议。

一、华为机试介绍

1.大致介绍

时间:120分钟

环境:Visual Studio(去年是vs2005)、Visual C++、Eclipse(Java)

题量:共3题

初级题——60分——3组测试数据

中级题——100分——5组测试数据

高级题——160分——8组测试数据

注:初级题和中级题为必答题,高级题为附加题。

提交次数:每题最多5次

评判方式:按通过测试数据组数给分,每通过一组得20分

2.考试说明

这里有一个老版的机试考试说明,供大家参考:

C/C++,JAVA机试流程:

①打开IE浏览器,输入机试系统IP地址(以当天告知的地址为准);

②输入姓名、手机,选择“C/C++”或“JAVA”,登录;

③登录后显示题目,阅读题目并点击页面最下方“下载框架文件”,将文件解压到D盘;

④用VC6.0或Eclipse打开工程工程;

⑤补充函数体、调试;

⑥将工程压缩打包;

⑦返回IE浏览器中的试题页面,点击最下方的“提交”按钮,完成提交。

3.注意事项

华为的机试阅卷为电脑自动阅卷,大致流程是输入测试数据,判断结果是否正确,所以,在编写好程序后,一定要多测试几组数据,至少要保证题目中测试数据输入后,结果符合题目要求。

二、经典题目剖析

1.在分析具体题目之前,有几个注意事项说一下:

1)同学们平时写代码的编译环境不太一样,大致有GCC/G++,VC,VS,在这几种之中又细分了好多个版本,但是既然是准备华为机试,那么就装个最简单的VS2005吧,只要代码在这个版本上通过,相信机试的时候也不会出问题。

2)现在很多新旧编程标准交织,这几年还有很实用的C++11,但是为了机试,这些还是先别秀吧,你问为什么有这么好的东西却不让用?因为VS2005不支持呗,类似的还有atoi(), itoa() 这些局限于编译环境的函数也最好别用。

2.机试的时候分为3类题:

3)初级题——多为简单字符串处理或数字操作

4)中级题——在考察编程语言能力的基础上加入一定简单的算法和数据结构。

5)高级题——更多的算法和数据结构要求,代码量明显增大,栈、图、树、查找、搜索都在考察范围内。

3.具体题目(以下所有代码本人均在VS2005环境上编译测试通过)

1)排序方法总结

题1:

排序是编程语言里最基本的方法,目前典型的排序方法有:冒泡排序、快速排序、选择排序、简单插入排序、二分插入排序、希尔排序、归并排序等。既然是基础,那么就必然要了然于心。

代码见:1.cpp(打开:Ctrl + 鼠标左键点击)

排序算法这么多,比较麻烦,但是思想一定要了然于心,说不定面试的时候就会让你写个排序算法看看呢?但是如果我们只是在程序中用到一个排序的功能,大可不必话费很长的时间去写这些排序算法,C++中给出了一个sort函数,非常方便,大家可以去了解一下,因为使用起来非常简单,并且在接下来的题目中会用到,在这就不多讲了。

题2:

输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序。

输入描述: 10个正整数,保证都在int范围内,用空格隔开

输出描述: 10个数字,其从大到小的值,用空格隔开,最后一个数字后不加空格

输入样例11 3 2 4 5 9 8 7 10 6

输出样例10 2 11 3 4 5 6 7 8 9

代码见:2.cpp

题3:

操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级< 50,用户任务的优先级>= 50且<= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到system_task[] 数组和user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。

例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -1} user_task[] = {4, 8, 2, 6, -1}

代码见:3.cpp

题4:

输入一组身高在170到190之间(5个身高),比较身高差,选出身高差最小的两个身高;若身高差相同,选平均身高高的那两个身高;从小到大输出;

如:输入170 181 173 186 190 输出170 173

代码见:4.cpp

2)求最大、最小数

题5:

输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;数组的长度不超过50。

代码见:5.cpp

题6:

输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字(可能不止一个),输出最后剩余数字个数。

代码见:6.cpp

相信通过题2、题3,在找最大、最小数时,不论是数组还是字符类型都可以轻松应对了。

3)链表

题7:

一组人(7个),围成一圈,从某人开始数到第3个的人出列,再接着从下一个人开始数,依次输出

出列的人。(报数:共n个人从1编号,设从第s个人报号,报到m出队,依次输出出队的人。)代码见:7.cpp

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列,这题既可以使用循环列表又可以使用数组在程序中两种方法都罗列了。

题8:

出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现。

代码见:8.cpp

如果这题能够轻松地写出,那么单项列表的知识就算是基本掌握了。

4)大数、高精度数运算。

题9:

求两个长长整型的数据的和并输出。

代码见:9.cpp

题10:

在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。

如下:9876543210 + 1234567890 = ?让字符串num1="9876543210",字符串num2="1234567890",结果保存在字符串result = "11111111100"。

-9876543210 + (-1234567890) = ?让字符串num1="-9876543210",字符串num2="-1234567890",结果保存在字符串result = "-11111111100"。要求编程实现上述高精度的十进制加法。

代码见:10.cpp

上面两题,分别实现了正大数的加运算,大数的加运算,相信完全吃透后再编写大数运算的程序就不是问题了。

题11:

输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。

代码见:11.cpp

5)字符串常见操作

题12:

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。

代码见:12.cpp

题13:

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

压缩规则:

1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".

2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"

代码见:13.cpp

题14:

删除子串,只要是原串中有相同的子串就删掉,不管有多少个都删除,返回子串个数。

输入字符串为:123abc12de234fg1hi34j123k,子串为:123

则输出为:abc12de234fg1hi34jk 2

代码见:14.cpp

题15:

将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为bc,zz 转换为ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

代码见:15.cpp

题16:

在给定字符串中找出单词(“单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词);找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。输出的单词之间使用一个“空格”隔开,最后一个单词后不加空格。

代码见:16.cpp

题17:

字符串单词首字母转换成大写

举例:

输入:this is a book

返回:This Is A Book

代码见:17.cpp

题18:

通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。如果输入“abc def gh i d”,结果将是abc,def,gh,i,d。

代码见:18.cpp

题19:

输入一个字符串,删除其中所有的数字,所有大写字母改成小写,其他不变,并输出。

代码见:19.cpp

题20:

编写一个字符串替换函数,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ 代码见:20.cpp

题21:

写一个程序实现功能:将两个字符串合并为一个字符串并且输出,用指针实现。

代码见:21.cpp

题22:

给定一个字符串,实现一个函数,按下述方式输出字符串:如果此字符的下一个字符和此字符不一样,原样输出此字符,否则先输出此字符,再输出此字符连续出现的次数(次数不大于9)。

例如,字符串ABBCCCDEDFFF,输出的结果为AB2C3DEDF3。不用考虑溢出问题,不能使用任何I/O 函数。

代码见:22.cpp

题23:

字符串匹配问题,给定两个字符串,求字符串2,在字符串1中的最先匹配结果。字符串2中可以存在'*'符号,且该符号可以代表任意字符,即字符串2中存在通配符。

e.g. 输入:abcdefghabef, a*f 输出:abcdef

代码见:23.cpp

题24:

输入m个字符串和一个整数n, 把字符串M化成以N为单位的段,不足的位数用0补齐。

如 n=8 m=9 ,

123456789划分为:12345678 90000000

123 化为:12300000

代码见:24.cpp

题25:

统计字符串中数字出现的次数,最大次数的统计出来

举例:输入:323324423343输出:3,6

代码见:25.cpp

题26:

输入一段英文文本,用程序统计出现频率最高和最低的两个单词;

英文文本中仅出现这四类字符:空格( )、英文逗号(,)、英文句号(.)、英文大小写字母(a-z、A-Z)单词之间的分隔符仅考虑这三种:空格( )、英文逗号(,)、英文句号(.);

仅大小写不同的单词算同一个单词;

如果两个单词出现次数相同,则在文本中首次出现的单词优先返回。

返回的单词统一用小写字母返回

例如:

输入字符串“Hello world, i said hello world to the world”,返回“world”,“i”

代码见:26.cpp

题27:

将整数倒序输出,剔除重复数据

输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571。

代码见:27.cpp

以上题目基本可以概括字符串的基本考察点:找单词、替换字符、排序、分割、删除、统计字符或单词出现次数等。

题28:

名字的漂亮度=26*字母个数最多的+25*字母个数其次的+24*字母个数再其次的(忽略大小写)+ (1)

出现次数最小的。

输入:整数N,N个字符串

输出:N个字符串漂亮度

例如:输入1 a 输出26

代码见:28.cpp

6)数组操作

题29:

判断是否为回文数组(无论从左到右还是从右到左读出来都一样的)。

代码见:29.cpp

题30:

比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0

数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3

代码见:30.cpp

题31:

如果数组长度n为奇数,则将数组中最大的元素放到output[] 数组最中间的位置,如果数组长度n 为偶数,则将数组中最大的元素放到output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。

例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1};

input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}

代码见:31.cpp

题32:

算分数,去掉一个最高分一个最低分,求平均分。

代码见:32.cpp

题33:

找出一个数组中满足2^N的元素。

例如:输入1,2,3,5,7,8,16,则输出:符合条件的有:1 2 8 16 共4个

代码见:33.cpp

题34:

求一个二维数组每列的最小值和二维数组的最小值。

代码见:34.cpp

题35:

对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数若奇数和偶数不等长,则把剩下的直接放到数组中。

代码见:35.cpp

题36:

求两个整型数组的异集,即A+B-(A与B的交集)。

例如a[]={1,2,3,4,5}, b[]={2,3},则a,b的异集为{1,4,5}。

代码见:36.cpp

题37:

给定一个n*m的矩阵,请编程实现以逆时针旋转方式打印出它的每个元素,例如输入矩阵

1 8 7

2 9 6

3 4 5

则输出为1 2 3 4 5 6 7 8 9。

代码见:37.cpp

通过上述几题,包含的知识点有数组排序、转置、求特殊集合、按特定顺序输出、多维数组的使用和操作等。

7)四则运算

题38:

通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。

输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。

代码见:38.cpp

题39:

输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值

注:1、表达式只含 +, -, *, /, (, ), 四则运算符

2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况

3、要考虑加减乘除按通常四则运算规定的计算优先级

4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生

5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况

代码见:39.cpp

题40:

两个任意长度的正数相减,这两个正数可以带小数点,也可以是整数,请输出结果。输入的字符串中,不会出现除了数字与小数点以外的其它字符,不会出现多个小数点以及小数点在第一个字符的位置等非法情况,所以考生的程序中无须考虑输入的数值字符串非法的情况。

详细要求以及约束:

1.输入均为正数,但输出可能为负数;

2.输入输出均为字符串形式;

3.如果输出是正数则不需要带符号,如果为负数,则输出的结果字符串需要带负号

例如:2.2-1.1 直接输出为“1.1”,1.1-2.2 则需要输出为“-1.1”

4.输出的结果字符串需要过滤掉整数位前以及小数位后无效的0,小数位为全0的,直接输出整数位

例如:相减结果为11.345,此数值前后均不可以带0,“011.345”或者“0011.34500”等等前后带无效0的均视为错误输出。例如1.1-1.1结果为0.0,则直接输出0。

代码见:40.cpp

四则运算看似非常简单,但是如果将其与字符串、小数、整数、正数、负数混合,很可能是我们忽略掉一些特殊的情况而使程序出现BUG,所以要多加练习,并且写代码之前最好在纸上将可能出现的情况列出,这样可以使程序的条理更加清晰。

8)数的各种附属数

题41:

求一个正整数X的平方根Y,立方根Z。

代码见:41.cpp

求平方根和立方根我们一般用牛顿迭代法,下面是对应的公式。

平方根迭代公式a(n+1)=(a(n)+Y/a(n))/2,其中Y为待求平方根。

立方根迭代公式a(n+1)={2a(n)+Z/{[a(n)]^2}}/3,其中Z为待求平方根。

题42:

我们把只包含因子2,3,5的数称为丑数,把1当作第一个丑数,求从小到大的第n个丑数(还有质素)

输入:n 输出:第n个丑数。

代码见:42.cpp

题43:

相关数:判断比整数N小的数里,有多少个与7相关的数(比如7、14、17、27)。只需要给出总的个数,不需要输出。

代码见:43.cpp

题44:

任意输入两个整数,求他们的最大公约数和最小公倍数。

代码见:44.cpp

求最大公约数的方法:求差判定法和辗转相除法。

着重介绍辗转相除法,其原理是:以小数除大数,如果能整除,那么小数就是所求的最大公约数。否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数。依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数。

求最小公倍数的方法:首先求得最大公约数,最小公倍数=两数之积/最大公约数。

题45:

自守数是指一个数的平方的尾数等于该数自身的自然数。例如:252= 625,762= 5776,93762= 87909376。请求出n以内的自守数的个数。

代码见:45.cpp

题46:

任何一个自然数m的立方均可写成m个连续奇数之和。

//1^3=1

//2^3=3+5

//3^3=7+9+11

//4^3=13+15+17+19

//编程实现:输入一自然数n,求组成n^3的n个连续奇数。

代码见:46.cpp

这里还少一个素数的计算,请大家自己去写一下。

9)匹配问题

题47:

10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:

(1) 及格线是10的倍数;

(2) 保证至少有60%的学生及格;

(3) 如果所有的学生都高于60分,则及格线为60分

输入:输入10个整数,取值0~100

输出:输出及格线,10的倍数

代码见:47.cpp

题48:

输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.

代码见:48.cpp

题49:

将第一行中含有第二行数的数输出并升序排序。

例如:输入一行数字:123 423 5645 875 186523

再输入第二行:23

将第一行中含有第二行中“23”的数输出并排序

结果即:123 423 186523

代码见:49.cpp

题50:

将电话号码 one two...nine zero翻译成1 2...9 0

中间会有double

例如输入:OneTwoThree

输出:123

输入:OneTwoDoubleTwo

输出:1222

输入:1Two2 输出:ERROR

输入:DoubleDoubleTwo 输出:ERROR

有空格,非法字符,两个Double相连,Double位于最后一个单词,都错误,输出:ERROR

代码见:50.cpp

题51:

编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。

输入:if((a==1)&&(b==1))

输出:RIGTH 3 3

输入:if((a==1))&&(b==1))

输出:WRONG 3 4

代码见:51.cpp

题52:

输入包括多个行数,首先给出整数N(1

代码见:52.cpp

题53:

自从有了智能手机,时刻都要关心手机的电量。你的任务很简单,用程序打印符号来表示当前手机的电量。

用10行和10列来表示电池的电量,同时在外围加上边框,每一行表示10%的电量。

假设还有60%的电量,则显示如下:

+----------+

|----------|

|----------|

|----------|

|----------|

|++++++++++|

|++++++++++|

|++++++++++|

|++++++++++|

|++++++++++|

|++++++++++|

+----------+

运行时间限制: 无限制

内存限制: 无限制

输入: 多组测试数据,第一行为测试数据组数N(N<10),紧接着是N行,每行一个数,表示电量,这个数值可能是0,10,20 ,30,40,50,60,70,80,90,100

输出: 每组数据输出一个电池的电量,每组数据之间用15个“=”隔开

代码见:53.cpp

题54:

在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是“夫妻相”。所谓“夫妻相”,就是两个人看上去比较般配,长相、身材等某些方面有一定的相似度。本题则另辟蹊径,从人的姓名维度,以字母重

复个数来寻找最具“夫妻相”的人。

题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。

规则:如果字母重复数最多的女士有多位相同,则以最先匹配的女士做为最具“夫妻相”的人选。

规则:人名中的相同字母,按重复一次处理。例如:li ling 与li lei 重复的字符个数为2,而不是4。

预置女士名单(先后循序必须保证):

"wang fei",

"zhang man yu",

"zhang zhi yi",

"li li",

"li xiao man",

"li yu cun",

"yang ni",

"xiao tong",

"li lei",

"zhang san"

运行时间限制: 无限制

内存限制: 无限制

输入: 输入一个男士姓名,字符串

输出: 输出最具“夫妻相”的女士姓名

代码见:54.cpp

题55:

一副牌中发五张扑克牌给你:让你判断数字的组成:

有以下几种情况:

1:四条:即四张一样数值的牌(牌均不论花色)2:三条带一对

3:三条带两张不相同数值的牌

4:两对

5:顺子包括10,J,Q,K,A

6:什么都不是

7:只有一对.打牌游戏:

代码见:55.cpp

题56:

规则:出牌牌型有5种

牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。

[1]一张如4 则5...9可压过

[2]两张如44 则55,66,77,...,99可压过

[3]三张如444 规则如[2]

[4]四张如4444 规则如[2]

[5]五张牌型只有12345 23456 34567 45678 56789五个,后面的比前面的均大。

输入: 输入有多组数据。

每组输入两个字符串(字符输出: 压过输出YES 否则NO。

串大小不超过100)a,b。a字符串代表手中牌,b字符串代表处的牌。

样例输入: 12233445566677

33

123344556667799

888

样例输出: YES

NO

代码见:56.cpp

题57:

在路由器中,一般来说转发模块采用最大前缀匹配原则进行目的端口查找,具体如下:

IP地址和子网地址匹配:

IP地址和子网地址所带掩码做AND运算后,得到的值与子网地址相同,则该IP地址与该子网匹配。

比如:

IP地址:192.168.1.100

子网:192.168.1.0/255.255.255.0,其中192.168.1.0是子网地址,255.255.255.0是子网掩码。

192.168.1.100&255.255.255.0 = 192.168.1.0,则该IP和子网192.168.1.0匹配

IP地址:192.168.1.100

子网:192.168.1.128/255.255.255.192

192.168.1.100&255.255.255.192 = 192.168.1.64,则该IP和子网192.168.1.128不匹配

最大前缀匹配:

任何一个IPv4地址都可以看作一个32bit的二进制数,比如192.168.1.100可以表示为:11000000.10101000.00000001.01100100,

192.168.1.0可以表示为11000000.10101000.00000001.00000000

最大前缀匹配要求IP地址同子网地址匹配的基础上,二进制位从左到右完全匹配的位数尽量多(从左到右子网地址最长)。比如:

IP地址192.168.1.100,同时匹配子网192.168.1.0/255.255.255.0和子网192.168.1.64/255.255.255.192,但对于子网192.168.1.64/255.255.255.192,匹配位数达到26位,多于子网192.168.1.0/255.255.255.0的24位,因此192.168.1.100最大前缀匹配子网是192.168.1.64/255.255.255.192。

示例

输入:

ip_addr = "192.168.1.100"

net_addr_array[] =

{

"192.168.1.128/255.255.255.192",

"192.168.1.0/255.255.255.0",

"192.168.1.64/255.255.255.192",

"0.0.0.0/0.0.0.0",

""

}

输出:n = 2

代码见:57.cpp

题58:

有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,其余几个丢弃。现在,修改过的那个单词死于字母表的下面,如下所示:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

T R A I L B Z E S C D F G H J K M N O P Q U V W X Y

上面其他用字母表中剩余的字母填充完整。在对信息进行加密时,信息中的每个字母被固定于顶上那行,并用下面那行的对应字母一一取代原文的字母(字母字符的大小写状态应该保留)。因此,使用这个密匙,Attack AT DAWN(黎明时攻击)就会被加密为Tpptad TP ITVH。请实现下述接口,通过指定的密匙和明文得到密文。详细描述:接口说明:

输入:先输入key和要加密的字符串

输出:返回加密后的字符串

样例输入:

nihao

ni

样例输出: le

代码见:58.cpp

题59:

我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:

1、长度13位;

2、以86的国家码打头;

3、手机号码的每一位都是数字。

请实现手机号码合法性判断的函数要求:

1)如果手机号码合法,返回0;

2)如果手机号码长度不合法,返回1

3)如果手机号码中包含非数字的字符,返回2;

4)如果手机号码不是以86打头的,返回3;

【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。

示例

输入:inMsisdn = “869123456789“

输出: 1

输入:inMsisdn = “88139123456789“

输出: 3

输入:inMsisdn = “86139123456789“

输出:0

代码见:59.cpp

这一类问题的综合性就比较高,题目冗长,但是一定要仔细、耐心地看完题目,看懂题目内在的考点,就好做了。

10)进制转换

题60:

统计一个数二进制表达中0的个数(首位1之前0不计)。

代码见:60.cpp

题61:

镜像反转二进制表达式,并输出十进制值。

代码见:61.cpp

题62:

输入一个数字,转换为时间,按DDD:HH:MM:SS的格式输出

例如:输入100000 显示001:03:46:40

代码见:62.cpp

在进制转换问题上,除了要熟悉上述已考过的题型外,还要非常清楚如何在2、8、10、16进制间相互转换。

11)二叉树的相关知识点

题63:

建立一个二叉树,求其高度,首先前、中、后序遍历,求叶子数,求数的深度并且判断是否为平衡二叉树。

代码见:63.cpp

二叉树是一个典型的数据结构,华为往年的试题中也有考到这个知识点的。

下面介绍几个树的重要性质:

性质1二叉树第i层上的结点数目最多为2i-1(i≥1)。

性质2深度为k的二叉树至多有2k-1个结点(k≥1)。

性质3在任意-棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n o=n2+1。

二叉树的遍历:

前序遍历、中序遍历、后序遍历。(如何遍历、程序如何实现应该知道)

12)背包问题

题64:

01背包

给定一个数,比如20

然后再给定几个数字 1 3 5 7 8则输出:0 0 1 1 1 因为5+7+8=20

代码见:64.cpp

题65:

你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知问:最多能装多少个物品进箩筐输入描述

一行30个正整数,用空格隔开,表示每个物品的体积

输出描述一个数字,为最多能装下的物品数

输入样例(此处用3个物品作为样例,实际读入为30个)5 59 100

输出样例2

代码见:65.cpp

13)规划问题

题66:

渡口问题(原题我记不得了,大概如下):一个渡口有N辆客车和货车需要乘船,规定如下:

同类车辆先来的先上;客车优先于货车;客车上了4辆后货车才可以上;客车若不足4辆则货车可以补充;若无货车则客车可以全上。其中客车的优先级为0,货车的优先级为1。

例如,输入:5 0 0 1 0 1

输出:0 1 3 2 4

注意:1、输出的是原车辆在序列中的序号,且从0算起,因而前后交换时要保持相对顺序不变;

2、要考虑客车不足4辆,或者货车数量和客车数量有一者或两者为0的情况。

代码见:66.cpp

题67:

公司设备管理系统,某公司有许多员工和设备,每个员工有一个8位数字组成的ID,每台设备有个小于等于20位由数字和字母组成的设备号。

每个员工可以拥有多台设备,但是每台设备只能分配给一个员工使用。

输入四个数a,b,c,d

a:给这个系统添加多少台设备

b:从这个系统中删除多少台设备

c:添加设备和员工的对应关系

d:删除设备和员工的对应关系

之后是由这4个参数控制的输入序列

a行设备编号,若添加失败则输出"add computers error:"+设备号;成功不输出

b行删除设备的编号,若删除失败则输出"remove computers error:"+设备号;成功不输出

c行要分配给员工的设备,若添加失败则输出“assign computer error:”+设备号+“_”+员工号;成功不输出

d行要删除分配给员工的设备,若删除失败则输出"remover computer from worker error:"+设备号+“_”+员工号;成功不输出

最后要求输出总共的设备数目和排序输出员工和设备的对应关系(员工号+"_"+设备号)(先按照员工号进行排序,若员工有多台设备,则再按照设备号进行排序)。

如输入

3 2 2 1

SN001

SN002

SN003

SN003

SN004

SN002 12345678

SN001 12345678

SN001 12345678

输出:

remove computers error:SN004

1

12345678_SN002

代码见:67.cpp

题68:

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<...Ti+1>…>TK(1<=i<=K)。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

输入格式Input Format 输入的第一行是一个整数N(2<=N<=100),表示同学的总数。第一行有n 个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。

输出格式Output Format 输出包括得到的最优队列的同学个数以及最终同学的身高排列。

代码见:68.cpp

题69:

精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞。在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷,精灵王子必须尽快逃离洞穴。

精灵王子的跑步速度为m/s,以这样的速度可能是无法逃出洞穴的。庆幸的是精灵王子拥有闪烁法术,可在s内移动m,不过每次使用闪烁法术都会消耗魔法值点。

精灵王子的魔法值恢复的速度为点/s,只有处在原地休息状态时才能恢复。

现在已知精灵王子的魔法初值M,他所在洞穴中的位置与洞穴出口之间的距离S,距离洞穴塌陷的时间T。

你的任务是写一个程序帮助精灵王子计算如何在最短的时间内逃离洞穴。若能逃出,输出"Yes",并输出逃出所用的最短时间;

若不能逃出,则输出"No",同时输出精灵王子在剩下的时间内能走的最远距离。

注意字母大小写。注意:精灵王子跑步、闪烁或休息活动均以秒(s)为单位。且每次活动的持续时间为整数秒。距离的单位为米(m)。

注:M、S、T均是大于等于的整数。由输入保证取值合法性,考生不用检查。

提醒:

如果输入的S为,则说明本身已经在出口,输出应为:Yes 0

如果输入的T为(且S不为),则说明已经没有时间了,输出应为:No 0

输入: 输入格式:

M

S

T

输出: 输出格式:

Yes 逃出洞穴所用的最短时间

No 在洞穴塌陷前能逃跑的最远距离

样例输入: 10 50 5

样例输出: Yes 1

代码见:69.cpp

题70:

M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放。

1<=M<=10,1<=N<=10

例如5个苹果三个篮子,3,1,1 和1,1,3是同一种放法

输入7 3

输出8

代码见:70.cpp

14)最短路径

题71:

设有n个城市,编号为0~n-1,m条单向航线的起点和终点由输入提供,寻找一条换乘次数最少的线路方案。

输入第一行为三个整数n、m、v,表示城市数、单向航线数和起点城市。以下m行每行两个整数,表示一条边的起点、终点,保证不重复、不失败。2≤n≤20,1≤m≤190

输出共n-1行,分别是从起点城市v到其他n-1个城市最少换乘次数,按照终点城市序号从小到大顺序输出,不能抵达时输出-1。

样例输入

3 2 0

0 1

1 2

样例输出

1

2

代码见:71.cpp

题72:

N个城市(N<=10),从0到9编号,城市间要么有路,要么没路,计算城市A到B之间到底有多少条路。

输入:N A B(1

输出:A到B有多少条路

输入:3 0 2

1 1 1

1 1 1

1 1 1

输出:2

代码见:72.cpp

15)图连通问题

题73:

给定一个无向图,一共n个点,请编写一个程序实现两种操作:

D x y 从原图中删除连接x,y节点的边。

Q x y 询问x,y节点是否连通

输入

第一行两个数n,m(5<=n<=40000,1<=m<=100000)

接下来m行,每行一对整数x y (x,y<=n),表示x,y之间有边相连。保证没有重复的边。

接下来一行一个整数q(q<=100000)

以下q行每行一种操作,保证不会有非法删除。

输出

按询问次序输出所有Q操作的回答,连通的回答C,不连通的回答D

样例输入

3 3

1 2

1 3

2 3

5

Q 1 2

D 1 2

Q 1 2

D 3 2

Q 1 2

样例输出

C

D

D

代码见:73.cpp

题74:

森林里的苯苯熊要乔迁新喜,上次他已经将物品打包完成,并约了朋友来帮忙。接下来他要选定一个搬家的时间,想了很久,就决定在国庆节进行,因为国庆放假朋友们都有时间啦。但是在森林里,从他现

在房子到新豪宅,所经之地有山有水,路途曲折,甚至有些道路是不通的。

请你和他一起查看指定的地图,看看从笨笨熊现在的房子到新宅之间,道路是否是畅通的呢?

地图是R行、C列的矩阵,矩阵的每一个格子刚好是一天的行程。

矩阵由“B”、“-”、“#”、“H”四种字符成员组成,其中:

B:代表苯苯熊现在的房子;

H:代表笨笨熊新的豪宅;

-:代表可以通行的道路;

#:代表无法通过的障碍(高山、大河等);

此外,森林里也有交通规则地:在任务位置,只能向“上、下、左、右”四个方向中的其中一个方向行走。

输入: 4 // R的数值

4 // C的数值,下面是地图。

--##---

B-----H

#---#--

-------

输出: Y //代表道路可达

N //代表道路不通

样例输入: 1

5

-B-H#

样例输出: Y

代码见:74.cpp

图连通的考点也有考过,可以准备一下这个知识点。

16)对数字进行判断

题75:

中国有句俗语叫“三天打鱼两天晒网”,给定起始日期为1990年1月1号,输入终止日期,计算终止日期是在打渔还是晒网,打渔输出Fishing,晒网输出Netting。

输入:1990 01 04

输出:Netting

代码见:75.cpp

题76:

两个整数相除,将结果用字符串返回。如果是循环小数,将循环的位用括号括起来。

输入:3

输出:0.(3)

输入1 7

输出0.(142857)

代码见:76.cpp

题77:

变形的杨辉三角形

1

1 1 1

1 2 3 2 1

1 3 6 7 6 3 1

1 4 10 16 19 16 10 4 1

每个数是上行,左右3个数之和,不存在为0,求第n行第一个偶数出现的位置,没有输出-1

代码见:77.cpp

17)实际应用

题78:

选秀节目打分

分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分= 专家评委平均分*0.6 + 大众评委* 0.4,总分取整。如果没有大众评委,则总分= 专家评委平均分,总分取整。函数最终返回选手得分。

代码见:78.cpp

题79:

在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示:

1)9:无障碍

2)1:停掷一轮,即下轮所掷数字无效;

3)2:后退两步,如果已经到起点不再后退;

4)3:奖励前进一步

如果在游戏过程中,已经走到地图终点,则游戏结束。根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步。

示例

1)输入:map_len = 15, map = {9,1,9,9,9,2,9,9,9,9,9,9,9,9,9},dice_val = {1,2,1,3,1},

返回:4

2)输入:map_len = 16, map = {9,9,9,9,9,1,9,3,9,9,2,9,9,9,9,9},dice_val = {2,1,4,1,6},

返回:15

代码见:79.cpp

题80:

我国公民的身份证号码特点如下:

1、长度为18位;

2、第1~17位只能为数字;

3、第18位可以是数字或者小写英文字母x。

4、身份证号码的第7~14位表示持有人生日的年、月、日信息。

例如:511002************或511002************。

请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日信息进行校验。年份大于等于1900年,小于等于2100年。需要考虑闰年、大小月的情况。所谓闰年,能被4整除且不能被100整除或能被400整除的年份,闰年的2月份为29天,非闰年的2月份为28天。其他情况的合法性校验,考生不用考虑。

函数返回值:

1)如果身份证号合法,返回0;

2)如果身份证号长度不合法,返回1;

3)如果身份证号第1~17位含有非数字的字符,返回2;

4)如果身份证号第18位既不是数字也不是英文小写字母x,返回3;

5)如果身份证号的年信息非法,返回4;

6)如果身份证号的月信息非法,返回5;

7)如果身份证号的日信息非法,返回6(请注意闰年的情况);

示例

1)输入:”511002111222”,函数返回值:1;

2)输入:”511002abc123456789”,函数返回值:2;

3)输入:”51100219880808123a”,函数返回值:3;

4)输入:”511002188808081234”,函数返回值:4;

5)输入:”511002198813081234”,函数返回值:5;

6)输入:”511002198808321234”,函数返回值:6;

7)输入:”511002************”,函数返回值:7;

8)输入:”511002************”,函数返回值:0;

代码见:80.cpp

题81:

Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉。如上图,假设给定单词if,你必须先吃掉i然后才能吃掉f。

但现在你的任务可没有这么简单,你现在处于一个mí宫Maze(n×m的矩阵)当中,里面到处都是以字母标注的食物,但你只能吃掉能连成给定单词W的食物。

输入:

输入第一行包含两个整数n、m(0

输出:

如果能在地图中连成给定的单词,则输出“YES”,否则输出“NO”。注意:每个字母只能用一次。

样例输入:

5 5

SOLO

CPUCY

EKLQH

CRSOL

EKLQO

PGRBC

样例输出:yes

代码见:81.cpp

题82:

描述: CandyBrush一款流行的消除游戏,在一个方阵中布满各种糖果,任意交换两个糖果,如果交换后出现横向或者竖向有连续三个相同的情况,则可以消除糖果并得分。

输入个字符组成的字符串(编号为到),表示×的方阵,每个字符表示不同类型的糖果(区分大小写),判断是否有解,即交换某两个糖果后能够消除糖果。

举例,下面的方阵无解

T M T M O

X R U C q

A B C X R

U R M T O

T Q C R A

下面的方阵交换(0, 2)和(1, 2)两个糖果后,能消除M

T M T M O

X R M C q

A B C X R

U R M T O

T Q C R A

如果有解,则输出YES,同时输出所有交换方案中,被交换糖果最小编号(到),比如:上面的方阵中,被交换的糖果,编号最小的为糖果“T”,编号为。

如果无解,则输出NO。

运行时间限制: 无限制

内存限制: 无限制

输入:

输入个字符组成的字符串,不含空格,表示×的方阵

输出:

如果有解,则输出YES,同时输出所有交换方案中,被交换糖果最小编号,以空格隔开。如果无解,则输出NO。

样例输入:

TMTMOXRMCqABCXRURMTOTQCRA

样例输出:

YES 3

答案提示:

输出最小糖果编号的意思,就是从左至右,从上到下遍历糖果,找到第一个跟其他交换后能消除的糖果即可。

代码见:82.cpp

题83:

股票是一种有价证券,是股份公司为筹集资金发给投资者作为公司资本部分所有权的凭证,成为股东以此获得股息(股利),并分享公司成长或交易市场波动带来的利润;但也要共同承担公司运作错误所带来的风险。南邮华为俱乐部会长小郑同学最近计划进入股市淘金,看中一支股票,借本次华为赛机会,请你帮忙指出:何时买卖这支股票,才能获得最大收益。已知小郑投资A元,可以预测到未来12天该支股票的价格,请注意:

(1)股票每一天的价格都不一样;

(2)如果同时有两种安排获得一样的收益,选择在股价最低时购买;

(3)小郑在12天内只能购买一次股票,并且认购的股数必须为整数;

(4)如果按照股价趋势,不能获得收益,只需输出IMPOSSIBLE。

问题输入

输入包括多个测试用例,首先给出测试用例数B,接着给出B个测试用例。每一个测试用例包括两行,其中第一行给出小郑计划投资的资金数A,第一行给出以空格分隔的12个整数,指出未来12天股票每一天价格F。注意:100≤A≤500,B≤200,1≤F≤250。

问题输出

输出包括多行,对于每个测试用例输出一行,输出IMPOSSIBLE;或者以空格分隔的3个整数C、D、E,第1个整数C表示小郑第C天购买股票(1≤C≤11),第2个整数D表示小郑第D天卖出股票(C+1≤D≤12),第3个整数E表示小郑的股票收益。

样例输入

2

我来说说华为机试讲解

受乔哥的启发,决定写一个关于华为机试的简介,首先声明本人并非大牛,也无权拿到华为的内部资料,以下内容大部分源自网络,还有一部分是自己的感悟,本文以整理和疏导为主。 由于我不会JAVA,在这也就不写JAVA的东西了吧,下面的内容以C/C++为主。 分为几个部分:第一部分是华为机试流程、题型等相关介绍,第二部分是一些经典题目的剖些,第三部分是一些提示和建议。 一、华为机试介绍 1.大致介绍 时间:120分钟 环境:Visual Studio(去年是vs2005)、Visual C++、Eclipse(Java) 题量:共3题 初级题——60分——3组测试数据 中级题——100分——5组测试数据 高级题——160分——8组测试数据 注:初级题和中级题为必答题,高级题为附加题。 提交次数:每题最多5次 评判方式:按通过测试数据组数给分,每通过一组得20分 2.考试说明 这里有一个老版的机试考试说明,供大家参考: C/C++,JAVA机试流程: ①打开IE浏览器,输入机试系统IP地址(以当天告知的地址为准); ②输入姓名、手机,选择“C/C++”或“JAVA”,登录; ③登录后显示题目,阅读题目并点击页面最下方“下载框架文件”,将文件解压到D盘; ④用VC6.0或Eclipse打开工程工程; ⑤补充函数体、调试; ⑥将工程压缩打包; ⑦返回IE浏览器中的试题页面,点击最下方的“提交”按钮,完成提交。 3.注意事项 华为的机试阅卷为电脑自动阅卷,大致流程是输入测试数据,判断结果是否正确,所以,在编写好程序后,一定要多测试几组数据,至少要保证题目中测试数据输入后,结果符合题目要求。 二、经典题目剖析 1.在分析具体题目之前,有几个注意事项说一下: 1)同学们平时写代码的编译环境不太一样,大致有GCC/G++,VC,VS,在这几种之中又细分了好多个版本,但是既然是准备华为机试,那么就装个最简单的VS2005吧,只要代码在这个版本上通过,相信机试的时候也不会出问题。 2)现在很多新旧编程标准交织,这几年还有很实用的C++11,但是为了机试,这些还是先别秀吧,你问为什么有这么好的东西却不让用?因为VS2005不支持呗,类似的还有atoi(), itoa() 这些局限于编译环境的函数也最好别用。 2.机试的时候分为3类题: 3)初级题——多为简单字符串处理或数字操作 4)中级题——在考察编程语言能力的基础上加入一定简单的算法和数据结构。 5)高级题——更多的算法和数据结构要求,代码量明显增大,栈、图、树、查找、搜索都在考察范围内。

2016华为硬件机试题库

华为硬件机试题目(2016版本) 1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分)? A.正确? B.错误 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分)? A.正确? B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分)? A.正确? B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分)? A.正确? B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是 1111_1111。(4分)?

B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分)? A.正确? B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分)? A.正确? B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分)? A.正确? B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分)? A.U/3? B.2U/3? C.3U/4?

10.(单选题)8086CPU内部包括哪些单元(4分)? A.ALU,EU? B.ALU,BIU? C.EU,BIU? D.ALU,EU,BIU 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分)? A.带阻滤波器? B.带通滤波器? C.低通滤波器? D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分)? A.SRAM需要定时刷新,否则数据会丢失? B.DRAM使用内部电容来保存信息? C.SRAM的集成度高于DRAM? D.只要不掉点,DRAM内的数据不会丢失 13.(单选题)在RS232串口中,采用哪一种校验方式:(4分)?

华为校招·硬件技术工程师机考试题及答案

精品文档 1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分) A.正确 B.错误 FLASH可保存 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分) A.正确 B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分) A.正确 B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分) A.正确 B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是1111_1111。(4分) A.正确 B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分) A.正确 B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分) A.正确 B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分) A.正确 B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分) A.U/3 B.2U/3 C.3U/4 D.不变但电容的大小不是由 Q(带电量)或U(电压)决定的,即: C=εS/4πkd。其中,ε是一个常数, S为电容极板的正对面积, d为电容极板的距离, k则是静电力常量。而常见的平行板电容器 电容为C=εS/d.(ε为极板间介质的介电常数, S 为极板面积, d为极板间的距离。) 3电容器的电势能计算公式: E=CU^2/2=QU/2 10.(单选题)8086CPU内部包括哪些单元(4分) A.ALU,EU B.ALU,BIU C.EU,BIU D.ALU,EU,BIU 80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由8个16位通用寄存器,1个16位标志寄存器,1个16位暂存寄存器,1个16位算术逻辑单元ALU及EU控制电路组成。 总线接口单元由4个16位段寄存器(CS,DS,SS,ES),1个16位的指令指针寄存器,1个与EU通信的内部暂存器,1个指令队列,1个计算20位物理地址的加法器∑及总线控制电路构成。 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分) A.带阻滤波器 B.带通滤波器 C.低通滤波器 D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分) A.SRAM需要定时刷新,否则数据会丢失 B.DRAM使用内部电容来保存信息 C.SRAM的集成度高于DRAM D.只要不掉点,DRAM内的数据不会丢失 【解析】SRAM和DRAM都是随机存储器,机器掉电后,两者的信息都将丢失。它们的最大区别就是:DRAM是用电容有无电荷来表示信息0和1,为防止电容漏电而导致读取信息出错,需要周期性地给电容充电,即刷新;而SRAM是利用触发器的两个稳态来表示信息0和1,所以不需要刷新。另外,SRAM 的存取速度比DRAM更高,常用作高速缓冲存储器Cache。

华为机试试题汇总解析

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50 #include main() { intnum[50]={0}; inti,n; printf("请输入整型数组的长度(1~50):"); scanf("%d",&n); printf("请输入整型数组的元素:"); for(i=0;inum[j]) min_num=num[j]; } intsum=min_num+max_num; printf("数组中最大与最小值之和:%d\n",sum); return0; } 2.求两个长长整型的数据的和并输出,例如输入1233333333333333。。。3111111111111111111111111.。。。,则输出。。。。

#include #include #include main() { char*num1,*num2; //两个长长整型数据 char*sum; // inttemp; int len_num1,len_num2; // 两个长长整型数据的长度 intlen_max,len_min; num1=(char*)malloc(sizeof(char)); num2=(char*)malloc(sizeof(char)); printf("输入两个长长整型数据:"); scanf("%s",num1); printf("输入两个长长整型数据:"); scanf("%s",num2); len_num1=strlen(num1); len_num2=strlen(num2); len_max=(len_num1>=len_num2)?len_num1:len_num2; len_min=(len_num1<=len_num2)?len_num1:len_num2; int len_max1=len_max; sum=(char*)malloc(sizeof(char)*len_max); memset(sum,0x00,len_max+1);//切忌初始化 for(;len_num1>0&&len_num2>0;len_num1--,len_num2--) { sum[len_max--]=((num1[len_num1-1]-'0')+(num2[len_num2-1]-'0')); } if(len_num1>0) { sum[len_max--]=num1[len_num1- 1 ]-'0'; len_num1--; } if(len_num2>0) {

华为机试以及注意事项

华为机试以及注意事项 机试题目所考察的都是较为基础的编程能力,希望大家做好准备,在机试现场调整好心态、认真审题、细心答题。现将系统的使用情况及注意事项简单说一下。 机试前准备:进入机试考场前会给每位同学发一张《考试说明》,请大家务必仔细研读。 C/C++机试流程: ①打开IE浏览器,输入机试系统IP地址(以当天告知的地址为准); ②输入姓名、手机,选择“C/C++”或“JAVA”,登录; ③登录后显示题目,阅读题目并点击页面最下方的“下载框架文件”,将文件解压到D盘; ④用VC6.0打开工程test.dsw; ⑤补充函数体、调试; ⑥新建test文件夹(如在桌面上新建),将func.cpp和test.exe文件复制到该文件夹中,压缩该test文件夹; ⑦返回IE浏览器中的试题页面,点击最下方的“提交”按钮,完成提交。 JAVA机试流程: ①打开IE浏览器,输入机试系统IP地址(以当天告知的地址为准); ②输入姓名、手机,选择“C/C++”或“JAVA”,登录; ③登录后显示题目,阅读题目并点击页面最下方的“下载框架文件”,将文件解压到D盘; ④用Eclipse打开工程 ⑤补充函数体、调试; ⑥将工程压缩打包; ⑦返回IE浏览器中的试题页面,点击最下方的“提交”按钮,完成提交。 机试注意事项: (1)机试时间:7月3日-4日,具体请以自己手机收到的时间为准,通知短信会在7月3日前发给大家。 (2)机试地点:西工大老校区软件学院机房(从南门进入,往北走,在第1个路口左拐)。(3)机试数量:3道,1小时多,不能带书。 (4)携带东西:身份证(凭身份证进入考场),建议大家带上笔和草稿纸,方便分析题目。切记事项: (1)收到具体机试时间短信的同学才能参加机试,没有收到的不得参加。 (2)只报名机试的同学,务必于今晚12点前注册华为官方简历,没有注册简历的同学将不能参加机试。PS:华为官方简历注册将于今晚12点截止! (3)严谨替考!一经发现,再无机会进入华为公司。 机试成绩好的同学,将优先参加专偏人才的岗位选择及可能的特殊起薪,其他同学可参加9月的华为大型招聘。希望大家做好机试准备,取得好的成绩!招聘之路,有你有我,让我们一起加油! 机试用了去年的一个模拟题,是关于数的筛选问题,用到了编程中最为基本的循环结构,重点考察大家的逻辑思维,难度并不大。所以,大家一定要把握和巩固好基础,多动手练习,在考场上沉着冷静、细致思考,相信大家一定能够取得不错的成绩。

华为机试(南京)-面试题

求一串字符串中出现次数最多的单词 南京 同学都陆续到华为参加了机试,题目整体难度不大,基本上都是考字符串相关的题目。这里就分享一套2012年华为南京机试C++或者C 的编程题目。 2012年华为南京机试第一题整数化成字符串 给定一个整数(有可能是负数),将整数变成字符串。函数已经声明好类似void change(int number, char s[])的形式。可以自己写用例测试。 2012年华为南京机试第二题单链表逆序 给定一个已经定义好的单链表,将单链表中的数字逆序。输入为head 指针,返回的也是一个head 指针。函数声明为void sor(Node **head)的形式。 2012年华为南京机试第三题字符串最大回文子串 给定一个字符串,寻找它的一个最大子串,该子串是回文。例如给定用例字符 串”gabcdcbaef”,那么最大回文字串是”abcdcba”。函数声明为void huiwen(char input[], int len, char output[])。 一天几个考场的题目有相同的也有不同的,基本上难度都不大。要求做前两题就可以了,有能力的可以做第三题并且计入总分。有同学做完当场就看到是100分,也有0分的,至于怎么计分的不太清楚。希望七叶草提供的2012年华为南京机试编程题对你有帮助! 武汉 题目:有一个数组a[N]如a[10]={0,1,2,3,4,5,6,7,8,9}每隔两个数删除一个数,如0,1,2(删除),3,4,5(删除),6,7,8(删除),9,到数组尾部回到数组头部继续删除,要求编写一个函数实现实现上述操作,返回最后一个数的数组下标。 函数接口:int getLast(int iLen) 参数:数组初始元素个数iLen 01 #include 02 #include 03 04 typedef struct node *List; 05 typedef struct node *PNode; 06 07 typedef struct no

华为笔试题目很全

[笔试]华为笔试集合,很全面 [此帖已被设为推荐]本人收集的一些华为笔试 华为软件工程笔试题 写一个程序,要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。请用C++语言写。答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0=x=100,0=y=50,0=z=20,所以可以编程为:number=0;for(x=0;x=100;x++)for(y=0;y=50;y++)for (z=0;z=20;z++)if((x+2*y+5*z)==100)number++;coutnumberendl;上面这个程序一共要循环100*50*20次,效率实在是太低了事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下:因为x+2y+5z=100所以x+2y=100-5z,且z=20x=100y=50所以(x+2y)=100,且(x+5z)是偶数对z作循环,求x的可能值如下:z=0,x=100,98,96,...0z=1,x=95, 93,...,1z=2,x=90,88,...,0z=3,x=85,83,...,1z=4,x=80,78,...,0......z=19,x=5,3,1z=20,x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,即为:(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2某个奇数m以内的奇数个数也可以表示为(m+2)/2所以,求总的组合次数可以编程为:number=0;for(int m=0;m=100;m+=5){number+=(m+2)/2;}coutnumberendl;这个程序,只需要循环21次,两个变量,就可以得到答案,比上面的那个程序高效了许多倍----只是因为作了一些简单的数学分析这再一次证明了:计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种种限制条件下的最优算法。而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了事 【华为硬件笔试题1】 一选择13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理 1.微分电路 2.CISC,RISC 3.数据链路层二填空10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理有关于 1.TIC6000DSP 2.二极管 3.RISC 4.IIR三简答 1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5) h(t)=u(t)-u(t-2)问:(1),x(t)是周期的吗?(2),x(t)*h(t)是周期的吗?(3),两个非周期的信号卷积后可周期吗?2.简述分组交换的特点和不足四分析设计 1.波形变换题目从正弦波->方波->锯齿波->方波,设计电路2.74161计数器组成计数电路,分析几进制的3.用D触发器构成2分频电路 4.判断MCS-51单片机的指令正确还是错误,并指出错误原因(1)MUL R0,R1(2) MOV A,@R7(3)MOV A,#3000H(4)MOVC@A+DPTR,A(5)LJMP#1000H() 5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率MOV TMOD,#01H SETB TR0LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1CLR TR0CPL P1.0SJMP LOOP 【华为硬件笔试题2】 全都是几本模电数电信号单片机题目 1.用与非门等设计全加法器 2.给出两个门电路让你分析异同 3.名词:sram,ssram,sdram 4.信号与系统:在时域与频域关系 5.信号与系统:和4题差不多 6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期....) 7.串行通信与同步通信异同,特点,比较8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)9.延时问题,判错10.史密斯特电路,求回差电压11.VCO是什么,什么参数

华为机试试题汇总

1 ?第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50 #i nclude mai n() { intn um[50]={0}; in ti, n; printf("请输入整型数组的长度(1~50):"); scan f("%d",&n); printf("请输入整型数组的元素:"); for(i=0;i nu m[j]) min_num=nu m[j]; } in tsum=min_nu m+max_ num; printf("数组中最大与最小值之和:%d\n",sum); return。; } 2. 求两个长长整型的数据的和并输出,例如输入123333333333333 3.OO

3111111111111111111111111。。O,则输出。OOO #i nclude #i ncludevstri ng.h> #i nclude mai n() { char* nu ml,* num2; //两个长长整型数据 char*sum; // in ttemp; int Ien_num1,len_num2; //两个长长整型数据的长度 in tle n_ max,le n_min; nu m1=(char*)malloc(sizeof(char)); nu m2=(char*)malloc(sizeof(char)); printf("输入两个长长整型数据:"); scan f("%s", nu m1); printf("输入两个长长整型数据:"); scan f("%s", nu m2); len_nu m仁strle n(nu m1); len_nu m2=strle n(nu m2); len_ max=(le n_nu m1>=le n_nu m2)?le n_nu m1:le n_nu m2; len_ mi n=(le n_nu m1<=le n_nu m2)?le n_nu m1:le n_nu m2; int len _max1=le n_max; sum=(char*)malloc(sizeof(char)*le n_max); memset(sum,OxOO,len_max+1);〃切忌初始化 for(;le n_nu m1> 0&&le n_nu m2>0;le n_nu m1--,le n_nu m2--) { sum[len_max--]=(( nu m1[len_num1-1]-'0')+( nu m2[len_num2-1]-'0')); } if(len_num1>0) { sum[le n_max--]=nu m1[le n_nu m1- 1 ]-'0'; len_nu m1--; } if(len_num2>0) {

硬件测试华为校招·硬件技术工程师机考试题及答案

1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分) A.正确 B.错误 FLASH可保存 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分) A.正确 B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分) A.正确 B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分) A.正确 B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是1111_1111。(4分) A.正确 B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分) A.正确 B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分) A.正确 B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分) A.正确 B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分) 3 3 4 D.不变 但电容的大小不是由 Q(带电量)或U(电压)决定的,即: C=εS/4πkd。其中,ε是一个常数, S为电容极板的正对面积, d为电容极板的距离, k则是静电力常量。而常见的平行板电容器 电容为C=εS/d.(ε为极板间介质的介电常数, S 为极板面积, d为极板间的距离。) 3电容器的电势能计算公式: E=CU^2/2=QU/2

10.(单选题)8086CPU内部包括哪些单元(4分) ,EU ,BIU ,BIU ,EU,BIU 80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由8个16位通用寄存器,1个16位标志寄存器,1个16位暂存寄存器,1个16位算术逻辑单元ALU及EU控制电路组成。 总线接口单元由4个16位段寄存器(CS,DS,SS,ES),1个16位的指令指针寄存器,1个与EU通信的内部暂存器,1个指令队列,1个计算20位物理地址的加法器∑及总线控制电路构成。 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分) A.带阻滤波器 B.带通滤波器 C.低通滤波器 D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分) 需要定时刷新,否则数据会丢失 使用内部电容来保存信息 的集成度高于DRAM D.只要不掉点,DRAM内的数据不会丢失 【解析】SRAM和DRAM都是随机存储器,机器掉电后,两者的信息都将丢失。它们的最大区别就是:DRAM是用电容有无电荷来表示信息0和1,为防止电容漏电而导致读取信息出错,需要周期性地给电容充电,即刷新;而SRAM是利用触发器的两个稳态来表示信息0和1,所以不需要刷新。另外,SRAM 的存取速度比DRAM更高,常用作高速缓冲存储器Cache。 13.(单选题)在RS232串口中,采用哪一种校验方式:(4分) 校验 B.海明码校验 C.多种校验方式的组合 D.奇偶校验 14.(单选题)对于D触发器来说,为了保证可靠的采样,数据必须在时钟信号的上升沿到来之前继续稳定一段时间,这个时间称为:(4分) A.保持时间 B.恢复时间 C.稳定时间 D.建立时间 setup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求.建立时间是指触发器的时钟信号上升沿到来以前数据稳定不变的时间输入信号应提前时钟上升沿 (如上升沿有效)T时间到

华为成都上机笔试题

2010年华为软件校园招聘编程测 类别:软件C语言 编程题(共2题,第一题40分,第二题60分,共100分。请上机编写程序,按题目要求提交文件。[详见考试说明] 本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分)。 1. 删除字符串中所有给定的子串(40分) 问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。 要求实现函数: int delete_sub_str(const char *str, const char *sub_str, char *result_str) 【输入】str:输入的被操作字符串 sub_str:需要查找并删除的特定子字符串 【输出】result_str:在str字符串中删除所有sub_str子字符串后的结果 【返回】删除的子字符串的个数 注: I、子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。如果 匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。II、输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。 示例

输入:str = "abcde123abcd123" sub_str = "123" 输出:result_str = "abcdeabcd" 返回:2 输入:str = "abcde123abcd123" sub_str = "1234" 输出:result_str = "abcde123abcd123" 返回:0 2. 高精度整数加法(60分) 问题描述: 在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下: 9876543210 + 1234567890 = ? 让字符串num1="9876543210",字符串num2="1234567890",结果保存在字符串result = "11111111100"。 -9876543210 + (-1234567890) = ? 让字符串num1="-9876543210",字符串num2="-1234567890",结果保存在字符串result = "-11111111100"。 要求编程实现上述高精度的十进制加法。

大师兄教你如何过华为机试

大师兄教你如何过华为机试 宝典1—内功心法 大华为这个大数据时代土豪金海量式的招聘又要开始了!!! 近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟机试是与技术有关的内容,所以机试的地位非常重要。对于机试,除了长期积累的软件基本功以外,还有很多可以短期训练的东西,类似于考试之前的突击,可以迅速提高机试成绩,就像在我西电大杨老师考前最后一堂课一定要去,那个重点就是考点阿。 这篇机试葵花宝典的内容是针对华为软件类上机准备的,如果你认真看了本宝典,如果你是真正通过自己能力考上西电的话,想不过都难。同样想拿高级题的同学,请移步 https://www.doczj.com/doc/8f18214244.html,/land/或者https://www.doczj.com/doc/8f18214244.html,,刷上200道题,机试不想拿满分都难。 对于机试,首先应该调整好自己的心态,不要觉得写程序很难,机试题很难,也不要去考虑,万一机试考到自己不会的内容怎么办,要相信,机试题永远是考察每个人的基础,基础是不会考的很偏的,会有人恰好做过某个题而做出来那个题,但不会有人恰好没做过一个题而做不出来那个题。 机试之前,应该做的准备有: 1、买一本《算法竞赛入门经典》,这本书不同于普通的算法或者编程语言的书籍,这 本书既讲语言,又讲算法,由浅入深,讲的很好,能看完前几章并且把例题都做 会,想通过机试就很简单了 2、调整好心态,时刻告诉自己,哪些小错误是自己以前经常犯的,最好用笔记本记录 下来,写每道题前再看一遍,如果遇到代码调不出来了,先想想自己是否犯过以 前那些错误。还有就是,看了题目以后,先仔细想清楚细节,在纸上写清楚自己 需要用到的变量,以及代码的基本框架,不要急于动手去写代码 3、不要惧怕任何一道看起来很难的题目,有不会的就去问身边会的人,让别人给自己 讲清楚 4、心中默念10遍C++跟C除了多了两个加号其实没有区别,会C就能上手C++ 5、大量的练习是必要且有效的 6、看完这篇宝典,预过机试、必练此功。 在这里推荐一个帖子,是机试归来的学长写的,写的很不错,里面的例题在后面的攻略

华为机试题及答案

华为机试题及答案 1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 测试:输入:“abc def gh i d”输出:“abc,def,gh,i,d,” #include #include void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr) { int i=0,j=0; int flag=0; while(pInputStr[i]==' ') { i++; } for(;i

continue; } if(flag==1) { flag=0; pOutputStr[j++]=','; } pOutputStr[j++]=pInputStr[i]; } pOutputStr[j++]=','; pOutputStr[j]='\0'; } int main() { char test[40]; char re[40]; gets(test); DivideString(test, strlen(test), re); printf("%s",re); return 0; } 2、将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循

环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。 测试:输入:char*input="abbbcd" 输出:char*output="bcdcde" #include #include void convert(char *input,char* output) { int i; for(i=0;i

华为试题答案

华为试题答案 1)在计算机局域网中,常用通信设备有(abd),A、集线器(HUB)B、交换机(Switch) C、调制解调器(Modem)D、路器(Router) 2)线缆标准化工作主要哪一个协会制定? (c) A、OSI B、ITU-T C、EIA D、IEEE 3)802协议族是下面的哪——个组织定义? (c) A、OSI B、EIA C、IEEE D、ANSI )衡量网络性能的两个主要指标为A、带宽B、可信度C、延迟D、距离)局域网区别与其他网络主要体现在以下方面A、网络所覆盖的物理范围B、网络所使用的传输技术C、网络的拓扑结构D、带宽)不会产生单点故障的是下列拓扑结构。A、总线型B、环型C、网状结构D、星形4)数据交换技术包括A、电路交换

B、报文交换 C、分组交换 D、文件交换5)拓扑结构会受到网络中信号反射的影响?A、网型B、总线型C、环型D、星型6)OSI参考模型按顺序有哪些? A、应用层、传输层、数据链路层、网络层、物理层 B、应用层、表示层、会话层、传输层、数据链路层、网络层、物理层 C、应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 D、应用层、表示层、传输层、网络层、数据链路层、物理层7)在OSI七层模型中,网络层的功能有A、确保数据的传输正确无误B、确定数据包如何转发与路 1 C、在信道上传送比特流D、纠错与流控8)在OSI七层模型中,哪一层的实现对数据的加密。A、传输层B、表示层C、应用层D、网络层9)网络层传输的数据叫做A、比特B、包C、段D、帧10)TCP/IP协议栈中传输层的协议有

A、TCP B、ICMP C、 D、IP 11)数据从上到下封装的格式为A、比特包帧段数据B、数据段包帧比特C、比特帧包段数据D、数据包段帧比特12)物理层定义了物理接口的哪些特性?A、机械特性B、电器特性C、功能特性D、接口特性13)细铜轴电缆传输距离达,粗铜轴电缆的传输距离为A、185米B、200米C、500米D、485米)通常在网吧里,LAN 采用的拓扑结构和网线类型为A、总线型和STP B、总线型和UTP C、星形和UTP D、环型和STP )双绞线为什么能代替网络中的细同轴电缆? A、双绞线电缆可靠性高 B、双绞线电缆抗噪性更好 C、细同轴电缆更廉价 D、双绞线电缆更便于安装)在布线时,细缆和粗缆通常应用在拓扑结构中。A、星形B、环形C、树形D、总线)在局域网中,类型的光

华为机试答案

1. 1、输入两个数字(如2,8)其中第一个表示将要接受的字符串行数,第二个表示将每一个行字符串按每规定的个数分别输出在不同的行上,不足的个用0补齐。 输入: 2,8 abc abcdefghijk 输出: abc00000 abcdefgh ihk00000#include #include #include using namespace std; void print_str() { unsigned int line,line0=0; unsigned int number,number0=0; string str; vector str0; cin>>line; cin>>number; cout<>str; str0.push_back(str); cout<::iterator iter=str0.begin();iter!=str0.end();iter++) { str=*iter; int cnt=0; int strlenth=str.size(); if (strlenth==number) { cout<

{ cnt=number-strlenth; while(cnt!=0) { str+="0"; cnt--; } cout<number) { string str1; int cnt0=strlenth/number; for (int i=0;i!=cnt0;i++) { str1=str.substr(i*number,number); cout<

华为机试题 面试题

昨天下午机试三道题目: 1.字符去重,例如输入字符串:“aabbccdd”,输出字符串“abcd,要求,不改变字符的顺序。 2.求解类似于2+22+222+2222的和。 3.判断一个邮件地址是否有效。例如:huawei@https://www.doczj.com/doc/8f18214244.html, 判断条件:只有一个@符号,最后四个字符是.com ;不含空格;字符只能是‘a-z’,‘A-Z’,‘1-9’,‘_’,‘.’,'@' 1.字符串首字母转换成大写 举例: 输入:this is a book 返回:This Is A Book 2.统计不同字符串的个数 举例: 输入:addfsdfasa 输出:4 3.统计数字出现的次数,最大次数的统计出来 举例: 输入:323324423343 输出:3,6 华为面向2013年招聘笔试题 笔试题目(机试,共两题) 题目一:子串分离 题目描述: 通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 如果输入“abc def gh i d”,结果将是abc,def,gh,i,d, 要求实现函数: void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出 示例 输入:“abc def gh i d”

华为机考题

销售网络问题 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 问题描述 华为公司积极开拓北美市场,首先在北美建立销售总部,总部在附近地区发展一些销售点,这些销售点可以发展建立下一级销售点,依此类推,最终形成一个新型分级销售网络。假设在销售网络中,有N个销售点(包括总部),将它们分别编号为1至N。考虑到金融危机,销售总部决定撤销一些销售点,保留其他销售点。需要注意是: (1)如果撤销一个销售点,那么该销售点发展的所有下级销售点均要撤销,依此类推; (2)销售总部不能撤销自己; (3)销售总部可以不撤销任何销售点。 请你帮忙告诉华为公司:共存在多少个销售点撤销方案。 问题输入 输入包括多个行,首先给出一个整数N,接着N-1行给出销售网络的建立过程,在这N-1行中,第j行(1≤j≤N-1)给出一个整数k(i

语言识别问题 时间限制(普通/Java):10000MS/30000MS 运行内存限制:65536KByte 问题描述 给你一段英文或德文文字,你能编程识别它可能是哪种语言吗?研究发现,统计文字中字母“t”(或“T”)与“s”(或“S”)出现的次数,如果给定文字中“t”(或“T”)的出现次数比“s”(或“S”)多,则可能为英文,否则可能为德文。 问题输入 输入包括多个行数,首先给出整数N(1

相关主题
文本预览
相关文档 最新文档