企业文化专题-华为公司校招软件开发工程师-上机笔试题
华为校园招聘软件研发上机测试题及部分解答+
以下是收集到的两套题(没有添加答案),上机测试只有应聘软件研发的才会碰到。
有的写了点自己的解法,如果大家有好的想法欢迎讨论!大家一起学习嘛!以下是上机考试的一些注意事项:(1)考试时长为2个小时,总共有3个题(去年是2个题,难度要比今年大些),编译环境为VC 6.0(C语言)/ Eclipse(Java);(2)3个题目中大致第一个题是最简单的,第三个题是最难的;(3)从服务器上下载题目下来后最好能把工程保存到在电脑重启后不会自动还原的磁盘分区下面,这样不致由于各种意外因素电脑重启过后编的程序不会消失;(4)不要改动所给函数的原型,可以自己添加函数。
另外,华为提供的工程是将Main函数隐藏了的,所以自己不用再添加Main函数。
试题1:2011.9.6 转载自:/liuqiqi677/article/details/67554981、选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。
打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分= 专家评委平均分* 0.6 + 大众评委* 0.4,总分取整。
如果没有大众评委,则总分= 专家评委平均分,总分取整。
函数最终返回选手得分。
函数接口int cal_score(int score[], int judge_type[], int n)(这个问题很简单,应该只是涉及了下double/int转换)2、给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
华为校园招聘上机题
目录样题-初级题:从考试成绩中划出及格线 (2)样题-中级题:亮着电灯的盏数 (2)样题-高级题:地铁换乘 (3)8.29去掉最大值、最小值之后剩下的个数 (3)8.29从5个人中选取2个人作为礼仪 (4)8.29验证括号是否匹配 (5)8.31回文数 (5)8.31将第一行中含有第二行中“23”的数输出并排序 (6)8.31翻译电话号码 (6)9.1.AM 将整数倒序输出,剔除重复数据 (7)9.1.AM 大数相减 (8)9.1.AM 判断if语句括号是否合法 (8)9.1.PM (8)9.1.PM (9)9.1.PM (9)样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分样题-中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。
每盏电灯由一个拉线开关控制。
开始,电灯全部关着。
有n个学生从长廊穿过。
第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。
n个学生按此规定走完后,长廊里电灯有几盏亮着。
注:电灯数和学生数一致。
样题-高级题:地铁换乘已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。
经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。
编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。
地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B158.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。
华为校园招聘上机笔试题
华为校园招聘上机笔试题华为校园招聘上机笔试题上机时间两小时,3道题1 字串转换问题描述:将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。
例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
要求实现函数:void convert(char *input,char* output)【输入】 char *input , 输入的字符串【输出】 char *output ,输出的`字符串【返回】无示例输入:char*input="abcd"输出:char*output="bcde"输入:char*input="abbbcd"输出:char*output="bcdcde"void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。
则按第一次出现算{output[i]=(input[i]-'a'+1)%26+'a';c=output[i];tag=1;}}}}void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。
华为笔试题(答案)
华为笔试题(答案)笔试题选择题1、以下程序的输出结果是:#include <>int main(){int n=4;while(n--){printf("%d ",--n);}printf("\r\n");return0;}答案:2 02、设有以下宏定义:#define N 4#define Y(n) ((N+1)*n)则执行语句:Y(5+1)为:答案:263、enum ENUM_A{x1,y1,z1=5,a1,b1};enum ENUM_AenumA=y1;enum ENUM_AenumB=b1;请问enumA和enumB的值是多少答案:1,74、若有函数max(a,b),并且函数指针变量p已经指向函数,当调用该函数时正确的调用方法是:答案:(*p)(a,b)或者p(a,b)5、对栈S进行下列操作:push(1), push(5), pop(), push(2), pop(), pop(), 则此时栈顶元素是:答案:没有元素,栈空。
6、在一个32位的操作系统中,设void *p = malloc(100),请问sizeof(p)的结果是:答案:32位操作系统的寻址大小是32位,即4字节。
7、若已定义: int a[9], *p = a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是:A)p+1 B)a+1 C) a++ D) ++p答案:C8、设有如下定义:unsignedlong pulArray[]={6,7,8,9,10};unsignedlong*pulPtr;则下列程序段的输出结果是什么pulPtr=pulArray;*(pulPtr+2)+=2;printf("%d, %d\r\n",*pulPtr,*(pulPtr+2));A) 8, 10 B) 6, 8 C) 7, 9 D) 6, 10答案:D9、以下程序运行后,输出结果是什么void main(){char*szStr="abcde";szStr+=2;printf("%1u\r\n",szStr);return;}A) cde B) 字符c的ASCII码值C) 字符c的地址D) 出错答案:C10、给出以下定义:char X[]="hello";char Y[]={'h','e','l','l','o'};则正确的叙述为:A)数组X和数组Y等价B) 数组X和数组Y的长度相同C) 数组X的长度大于数组Y的长度D) 数组X的长度小于数组Y的长度答案:C11、在32位X86下,有下列程序#include <>void main(){union{int k;char i[2];}*s,a;s=&as->i[0]=0x39;s->i[1]=0x38;printf("%x\r\n",;}输出结果是:A) 3839 B) 3938 C) 380039 D) 不可预知答案:A12、有如下函数定义:unsignedlong MyFunc(unsignedlong ulKey){return(((ulKey&0x000000ff UL)<<24) |((ulKey&0x0000ff00UL)<<8) |((ulKey&0x00ff0000UL)>>8) |((ulKey&0xff000000UL)>>24));}则MyFunc(0x)的返回值是:A) 0x B) 0x C) 0x D) 0x答案:C13、((a>b)a:b)代表什么含义:A) 代表a,b之中较小的那个值B) 代表a,b之中较大的那个值C) 代表a是否比b大D) 语法错误答案:B14、某系统总线的一个总线周期包含3个时钟周期,每个总线周期可以传送32位数据。
最全华为上机试题及部分答案
2011年华为软件校园招聘编程测验1、请上机编写程序,按题目要求提交文件。
[详见考试说明,点击进入考试说明]3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。
两者相同则得分,不同则不得分。
4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目(17)1,判断电话号码是否合法://要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。
不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符int fun(char num[]){ char *p=num;int n=strlen(num);if(n==13){if(*p=='8'&&*(p+1)=='6')while(*p!='\0'){if(*p>='0'&&*p<='9')p++;elsereturn 2;if(*p=='\0')return 0;}else return 3;}elsereturn 1;}int main(){char num[]="87139a3887671";int k=fun(num);cout<<k<<endl;return 0;}(18) 数组比较(20分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。
最全的华为校园招聘笔试题
最全的华为校园招聘笔试题最全的华为校园招聘笔试题华为笔试1.局部变量能否和全局变量重名?答:能,局部会屏蔽全局。
要⽤全局变量,需要使⽤“::“ 局部变量可以与全局变量同名,在函数内引⽤这个变量时,会⽤到同名的局部变量,⽽不会⽤到全局变量。
对于有些编译器⽽⾔,在同⼀个函数内可以定义多个同名的局部变量,⽐如在两个循环体内都定义⼀个同名的局部变量,⽽那个局部变量的作⽤域就在那个循环体内。
2.如何引⽤⼀个已经定义过的全局变量?答:extern 可以⽤引⽤头⽂件的⽅式,也可以⽤extern关键字,如果⽤引⽤头⽂件⽅式来引⽤某个在头⽂件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你⽤extern⽅式引⽤时,假定你犯了同样的错误,那么在编译期间不会报错,⽽在连接期间报错。
3.全局变量可不可以定义在可被多个.C⽂件包含的头⽂件中?为什么?答:可以,在不同的C⽂件中以static形式来声明同名全局变量。
可以在不同的C⽂件中声明同名的全局变量,前提是其中只能有⼀个C⽂件中对此变量赋初值,此时连接不会出错。
4.语句for( ;1 ;)有什么问题?它是什么意思?答:⽆限循环,和while(1)相同。
5.do……while和while……do有什么区别?答:前⼀个循环⼀遍再判断,后⼀个判断以后再循环。
6.请写出下列代码的输出内容#i nclude main(){ int a,b,c,d; a=10; b=a++; c=++a; d=10*a++;printf(“b,c,d:%d,%d,%d“,b,c,d); return 0; } 答:10,12,120⼀.判断题(对的写T,错的写F并说明原因,每⼩题4分,共20分)1.有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。
()2.int (*ptr)(),则ptr是⼀维数组的名字。
()3.指针在任何情况下都可进⾏>, =, =MAX_SRM)return (NULL_SRM); else return SRM_no; }3. 写出程序运⾏结果 int sum(int a){ auto int c=0; static int b=3; c+=1; b+=2;return(a+b+C); } void main(){ int I; int a=2; for(I=0;Inext = NULL; p=h;for(i=0;inext = s; printf(“Please input the informationof the student: name sex no age \n“);scanf(“%s %c %d %d“,s->name, s->next = NULL; p = s; } printf(“Create successful!“); return(h); } void deletelist(struct stu *s,int a){ struct stu *p; while(s->age!=a){ p = s; s = s->next; } if(s==NULL)printf(“The record is not exist.“); else { p->next = s->next; printf(“Delete successful!“); } } void display(struct stu *s){ s = s->next; while(s!=NULL){ printf(“%s %c %d %d\n“,s->name,s->sex,s->no,s->age); s = s->next; } } int main(){ struct stu *s; int n,age; printf(“Please input the length of seqlist:\n“); scanf(“%d“, s = creatlist(n); display(s); printf(“Please input the age:\n“);scanf(“%d“, deletelist(s,age); display(s); return 0; }2.实现⼀个函数,把⼀个字符串中的字符从⼩写转为⼤写。
华为公司应聘程序员上机考试题
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下面是鄙人的解答:#include<iostream>#include<cstdlib>#include<string.h>using namespace std;//删除指定的子字符串char* str_del(char* str,int pos,int length){for(int i=pos;i<(strlen(str)-length);i++){str[i] = str[i+length];}for(int i=(strlen(str)-length);i<strlen(str);i++){str[i] = '\0';}return str;}//从原串中获得子串char * get_sub_str(const char* str,int at,int length){char *res = new char[length];for(int i=at,j=0;i<at+length;i++,j++){res[j] = str[i];}return res;}int delete_sub_str(const char *str, const char *sub_str, char *&result_str) {int sub_len = strlen(sub_str);int str_len = strlen(str);int pos = 0;int del_num = 0;char* substr_instr;result_str = new char[sizeof(str)];strcpy(result_str,str);for(;pos<str_len-sub_len;pos++){substr_instr = get_sub_str(result_str,pos,sub_len);if(strcmp(substr_instr,sub_str) == 0){del_num++;result_str = str_del(result_str,pos,sub_len);}}return del_num;}int main(){char* str = "zhushijie";char* sub_str = "shi";char* res;cout<<"Delete num "<<delete_sub_str(str,sub_str,res)<<endl;cout<<res<<endl;return 0;}。
华为招聘笔试题汇总【最全面】
一、单项选择题1.Java是从()语言改进重新设计。
A.AdaB.C++C.PasacalD.BASIC答案:B2.下列语句哪一个正确()A.Java程序经编译后会产生machine codeB.Java程序经编译后会产生byte codeC.Java程序经编译后会产生DLLD.以上都不正确答案:B3.下列说法正确的有()A.class中的constructor不可省略B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行D.一个class只能定义一个constructor答案:C4.提供Java存取数据库能力的包是()A.java.sqlB.java.awtC.ngD.java.swing答案:A5.下列运算符合法的是()A.&&B.<>C.ifD.:=答案:A6.执行如下程序代码a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是()A.0 B.1 C.-1 D.死循环答案:C7.下列哪一种叙述是正确的()A.abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{ }包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号答案:D8.下列语句正确的是()A.形式参数可被视为local variableB.形式参数可被字段修饰符修饰C.形式参数为方法被调用时,真正被传递的参数D.形式参数不可以是对象答案:A9.下列哪种说法是正确的()A.实例方法可直接调用超类的实例方法B.实例方法可直接调用超类的类方法C.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法答案:D二、多项选择题1.Java程序的种类有()A.类(Class)B.AppletC.Application D.Servlet2.下列说法正确的有()A.环境变量可在编译source code时指定B.在编译程序时,所能指定的环境变量不包括class pathC.javac一次可同时编译数个Java源文件D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD3.下列标识符不合法的有()A.new B.$UsdollarsC.1234 D.car.taxi答案:ACD4.下列说法错误的有()A.数组是一种对象B.数组属于一种原生类C.int number=[]={31,23,33,43,35,63} D.数组的大小可以任意改变答案:BCD5.不能用来修饰interface的有()A.private B.publicC.protected D.static答案:ACD6.下列正确的有()A.call by value不会改变实际参数的数值B.call by reference能改变实际参数的参考地址C.call by reference不能改变实际参数的参考地址D.call by reference能改变实际参数的内容答案:ACD7.下列说法错误的有()A.在类方法中可用this来调用本类的类方法B.在类方法中调用本类的类方法时可直接调用C.在类方法中只能调用本类中的类方法D.在类方法中绝对不能调用实例方法答案:ACD8.下列说法错误的有()A.Java面向对象语言容许单独的过程与函数存在B.Java面向对象语言容许单独的方法存在C.Java语言中的方法属于类中的成员(member)D.Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同答案:ABC9.下列说法错误的有()A.能被java.exe成功运行的java class文件必须有main()方法B.J2SDK就是Java API C.Appletviewer.exe可利用jar选项运行.jar文件D.能被Appletviewer成功运行的java class文件必须有main()方法答案:BCD三、判断题1.Java程序中的起始类名称必须与存放该类的文件名相同。
华为笔试题史上最齐全
华为笔试题史上最齐全华为笔试题⼤全史上最齐全 华为笔试题(⼀) 1.static有什么⽤途?(请⾄少说明两种) 1)在函数体,⼀个被声明为静态的变量在这⼀函数被调⽤过程中维持其值不变。
2) 在模块内(但在函数体外),⼀个被声明为静态的变量可以被模块内所⽤函数访问,但不能被模块外其它函数访问。
它是⼀个本地的全局变量。
3) 在模块内,⼀个被声明为静态的函数只可被这⼀模块内的其它函数调⽤。
那就是,这个函数被限制在声明它的模块的本地范围内使⽤ 2.引⽤与指针有什么区别? 1) 引⽤必须被初始化,指针不必。
2) 引⽤初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引⽤,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡⼆叉树? 左右⼦树都是平衡⼆叉树且左右⼦树的深度差值的绝对值不⼤于1。
6.堆栈溢出⼀般是由什么原因导致的? 没有回收垃圾资源。
7.什么函数不能声明为虚函数? constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么? 时间复杂度是O(n^2)。
9.写出float x 与“零值”⽐较的if语句。
if(x>0.000001&&x<-0.000001) 10.Internet采⽤哪种⽹络协议?该协议的主要层次结构? Tcp/Ip协议 主要层次结构为:应⽤层/传输层/⽹络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采⽤什么协议? ARP (Address Resolution Protocol)(地址解析協議) 12.IP地址的编码分为哪俩部分? IP地址由两部分组成,⽹络号和主机号。
不过是要和“⼦⽹掩码”按位与上之后才能区分哪些是⽹络位哪些是主机位。
华为入职考试题库及答案
华为入职考试题库及答案
1. 华为公司是全球领先的信息与通信技术(ICT)解决方案提供商,以下哪项不是华为的主要业务领域?
A. 电信网络
B. 云计算服务
C. 汽车制造
D. 企业网络
答案:C
2. 华为的核心价值观包括以下哪项?
A. 客户至上
B. 员工为本
C. 创新驱动
D. 利润优先
答案:A
3. 华为的企业文化强调的是?
A. 个人英雄主义
B. 团队合作
C. 竞争至上
D. 利润最大化
答案:B
4. 华为在全球范围内拥有多少个研发中心?
A. 10个
C. 30个
D. 40个
答案:D
5. 华为的智能手机品牌是?
A. 荣耀
B. 华为
C. 苹果
D. 三星
答案:B
6. 华为在5G技术方面的发展处于什么水平?
A. 行业领先
B. 行业跟随
C. 行业滞后
D. 尚未涉足
答案:A
7. 华为的全球员工总数超过多少人?
A. 10万
B. 20万
C. 30万
D. 40万
答案:C
8. 华为的创始人是谁?
B. 马云
C. 马化腾
D. 李彦宏
答案:A
9. 华为的总部位于哪个城市?
A. 北京
B. 上海
C. 深圳
D. 广州
答案:C
10. 华为在国际市场上的主要竞争对手包括以下哪些公司?
A. 爱立信
B. 诺基亚
C. 苹果
D. 所有以上选项
答案:D。
软件工程师笔试题及答案
软件工程师笔试题及答案一、选择题1. 在面向对象编程中,封装的目的是:A. 隐藏数据B. 隐藏方法C. 隐藏数据和方法D. 隐藏类答案:C2. 下列哪个不是Java的基本数据类型?A. intB. floatC. StringD. double答案:C3. 在软件开发中,哪个阶段是进行需求分析?A. 计划阶段B. 需求分析阶段C. 设计阶段D. 编码阶段答案:B二、简答题1. 请简述软件开发生命周期(SDLC)的主要阶段。
答案:软件开发生命周期(SDLC)的主要阶段包括:- 需求收集与分析- 系统设计- 编码与实现- 测试- 部署- 维护2. 什么是递归算法?请举例说明。
答案:递归算法是一种在问题解决过程中调用自身的算法。
它通常用于解决可以分解为相似子问题的问题。
例如,计算阶乘的算法就是一个递归算法:```int factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}```三、编程题1. 编写一个函数,实现字符串的反转。
示例代码:```pythondef reverse_string(s):return s[::-1]```2. 给定一个整数数组,请找出其中最大的连续子数组和。
示例代码:```pythondef max_subarray_sum(arr):max_sum = current_sum = arr[0]for num in arr[1:]:current_sum = max(num, current_sum + num)max_sum = max(max_sum, current_sum)return max_sum```四、案例分析题1. 描述一个你参与过的软件项目,并解释你在项目中的角色和贡献。
答案:(此处应根据个人经验填写具体内容,包括项目名称、使用的技术和工具、个人职责、解决的问题以及取得的成果等。
华为公司软件笔试试卷 精品
华为公司软件笔试试卷(C/C++)一、填空题1-11-2、头文件中#ifndef/#define/#endif1-3、在如下的二叉数树中:请写出前序遍历为:ABDCEGFHI(也称前序周游)扩展知识:前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。
在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
若二叉树为空则结束返回,否则:(1)访问根结点(2)前序遍历左子树(3)前序遍历右子树注意的是:遍历左右子树时仍然采用前序遍历方法。
如上图所示二叉树前序遍历,也叫先根遍历,遍历的顺序是:根,左子树,右子树遍历结果:ABDECF中序遍历,也叫中根遍历,顺序是:左子树,根,右子树遍历结果:DBEAFC后序遍历,也叫后根遍历,遍历顺序,左子树,右子树,根遍历结果:DEBFCA1-4、以下为32位操作系统下的C 程序,请计算sizeof的值a)char str[]=”hello”;char *p = str;int n = 10;请计算:sizeof { str } =6sizeof { p } = 4sizeof { n } = 4b)void Func { char str[100]}{sizeof { str } =4}c)void *p = malloc { 100}sizeof {p}=4二、选择题2-1、在一种语言中,运算符是从右向左结合的(例如:a+b+c=a+(b+c));下面表达式“7-(16/(3+10*2)-4”的结果是:(C)A -1B 1C 3D 7E 92-2、某些操作系统把一条命令的执行结果输出给下一条命令,作为它的输入,并加以处理,这种机制称为A,使命令执行的结果不在屏幕上显示,而引入另外一个文件,这种机制称为B。
使命令所需要的处理信息不从键盘接收,而取自另一个文件,这种机制称为C。
操作系统不从键盘逐条接收命令,而调用一个正文文件,执行其中保存的一系列命令,这种方式属于D方式,编写这样的文件应符合E 的语法规则。
华为校园招聘软件测试笔试题分
华为软件测试笔试题主要分三部分:软件基础题、数据结构编程题、数据库题其中软件基础题题型有:选择(约50题,多为软件工程知识:黑盒测试、软件测试流程等、数据库SQL语言、二叉树中序遍历、数据类型在内存中存储情况、面向对象的含义、队列、栈、堆等)、程序填空(1题,二叉树先序遍历)、写运行结果,还有一个忘记了。
数据结构编程题:给出一组数据,要求按照降序排列。
写出设计思想和程序。
(冒泡排序)数据库题:多为问答题,有SQL语言查询,关系数据库......(面试官没让我做,但是瞟了一眼题目,有一大版,感觉有点深)面试中涉及:1.介绍过去两年的项目情况(内容、自己担任的工作)2.数据库底层运行(数据在数据库中如何存储,orical和SQL server之间如何联系,如何确定数据库大小以及需要的服务器个数,现场出题『多表间查询,分组』......)----不断纠缠于数据库,头都大了!3.数据结构运用(对排序的认识:说明快速派序的思路,还知道哪些排序方法,现场出题『打印三行*,第一行1个,第二行3个,第三行5个......』)4.面向对象(举例说明面向对象如何进行封装,类的继承,重载,面向对象有哪些好处)面试总结:1.笔试通过(为自己增添信心,要继续看书巩固知识,理顺知识框架)2.面试中语言组织要更加简洁、准确3.将过去两年的项目认真回顾一下,理出一套说法4.面试前准备复习时,听收音机减轻压力5.专业复习要作时间计划有针对性进行对测试人员要求比较简单啦,题目比较少,也不难。
总共只有4道题,第一道测试对整型及指针的字节数掌握第二道题改错题,是对循环次数多一少一的掌握第三道题指出错误题,是对指针及多重指针的掌握第四道是给出一个数组进行从小到大的排序,最简单的冒泡算法即可附加题又是很有意思的数学题,给1000个小球要求放到10个盒子里,问如何放使当别人报出1000以内的数字时都能通过取不同的盒子使盒子里小球的总数为所说的数字。
华为笔试题及答案
华为笔试题及答案一、选择题1. 下列哪种编程范式主要关注程序的计算过程和程序状态的变化?A. 面向对象编程B. 函数式编程C. 命令式编程D. 声明式编程答案:C解析:命令式编程是一种编程范式,主要关注程序的计算过程和程序状态的变化。
与之相对的是声明式编程,它更关注程序的结果而非过程。
2. 下列哪种排序算法的时间复杂度是O(nlog n)?A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序答案:B解析:快速排序的平均时间复杂度为O(nlog n),而冒泡排序、选择排序和插入排序的时间复杂度都是O(n^2)。
二、填空题3. 在计算机科学中,二叉树中的节点个数n与边数e的关系为______。
答案:e = n - 1解析:在二叉树中,每个节点都有两个子节点(可能为空),因此节点数n与边数e之间的关系为e = n - 1。
4. 一个具有1024个节点的完全二叉树,其深度为______。
答案:10解析:完全二叉树的深度可以通过以下公式计算:深度 = log2(节点数) + 1。
对于1024个节点的完全二叉树,深度为log2(1024) + 1 = 10 + 1 = 11。
三、算法题5. 编写一个C++程序,实现一个函数,该函数接收一个整数数组和一个目标值,返回数组中和为目标值的两个数的索引。
答案:```cpp#include <iostream>#include <vector>#include <unordered_map>std::vector<int> twoSum(const std::vector<int>& nums, int target) {std::unordered_map<int, int> hash_map;for (int i = 0; i < nums.size(); ++i) {int complement = target - nums[i];if (hash_map.find(complement) !=hash_map.end()) {return {hash_map[complement], i};}hash_map[nums[i]] = i;}return {};}int main() {std::vector<int> nums = {2, 7, 11, 15};int target = 9;std::vector<int> result = twoSum(nums, target);std::cout << "Indices are: " << result[0] << " and " << result[1] << std::endl;return 0;}```解析:本题考查哈希表的应用。
华为软件笔试题精修订
华为软件笔试题标准化管理部编码-[99968T-6889628-J68568-1689N]华为软件笔试题一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)1、有数组定义inta[2][2]={{1},{2,3}};则a[0][1]的值为0。
()2、int(*ptr)(),则ptr是一维数组的名字。
()3、指针在任何情况下都可进行>,<,>=,<=,==运算。
()4、switch(c)语句中c可以是int,long,char,float,unsignedint类型。
()5、#defineprint(x)printf("theno,"#x",is")二、填空题(共30分)1、在windows下,写出运行结果,每空2分,共10分。
charstr[]="Hello";char*p=str;intn=10;sizeof(str)=()sizeof(p)=()sizeof(n)=()voidfunc(charstr[100]){}sizeof(str)=()2、voidsetmemory(char**p,intnum){*p=(char*)malloc(num);}voidtest(void){char*str=NULL;getmemory(&str,100);strcpy(str,"hello");printf(str);}运行test函数有什么结果()10分3、设intarr[]={6,7,8,9,10};int*ptr=arr;(ptr++)+=123;printf("%d,%d",*ptr,*(++ptr));()10分二、编程题(第一小题20,第二小题30分)1、不使用库函数,编写函数intstrcmp(char*source,char*dest)相等返回0,不等返回-1;2、写一函数intfun(char*p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1(1)什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。
华为校园招聘研发工程师笔试题精编(学霸整理)
华为校园招聘研发工程师笔试题精编
题1:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。
小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5 瓶,方法如下:先用9 个空瓶子换3 瓶汽水,喝掉3 瓶满的,喝完以后4 个空瓶子,用3 个再换一瓶,喝掉这瓶满的,这时候剩2 个空瓶子。
然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3 个空瓶子换一瓶满的还给老板。
如果小张手上有n 个空汽水瓶,最多可以换多少瓶汽水喝?
题2:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N 个1 到1000 之间的随机整数(N ≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。
然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。
请你协助明明完成“去重”与“排序”的工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
更多人力资源相关资料敬请关注微信公众号"人事资料库"
} else if (array[x][y-1] == word[w]) { y = y-1; } else break; }
} if ('\0' == word[w]) { return 1; } }
} } return 0; } int main(void) { int m, n; char word[100]; char input[21][21] = {'0'}; scanf("%d %d", &m, &n); scanf("%s", word); for (int i=0; i<m; i++) { scanf("%s",input[i]);关资料敬请关注微信公众号"人事资料库"
样例输出: 答案提示:
YES
bool maze(char array[21][21], int m, int n, char *word) { int i, j, w=0; int x, y; for (i=0; i<m; i++) { x = i; for (j=0; j<n; j++) { y = j; if (array[x][y] == word[w]) { while ('\0' != word[w]) { w++; if ((x>0) && (x<m-1) && (y>0) && (y<n-1)) { if (array[x-1][y] == word[w]) { x = x-1; } else if (array[x+1][y] == word[w]) { x = x+1; } else if (array[x][y-1] == word[w]) { y = y-1;
更多人力资源相关资料敬请关注微信公众号"人事资料库"
} else if (array[x][y-1] == word[w]) { y = y-1; } else if (array[x][y+1] == word[w]) { y = y+1; } else break; } else if ((x>0) && (x<m-1) && (y<n-1)) { if (array[x-1][y] == word[w]) { x = x-1; } else if (array[x+1][y] == word[w]) { x = x+1; } else if (array[x][y+1] == word[w]) { y = y+1; } else break; } else if ((x>0) && (x<m-1) && (y>0))
更多人力资源相关资料敬请关注微信公众号"人事资料库"
} else if (array[x][y+1] == word[w]) { y = y+1; } else break; } else if ((x<m-1) && (y>0) && (y<n-1)) { if (array[x+1][y] == word[w]) { x = x+1; } else if (array[x][y-1] == word[w]) { y = y-1; } else if (array[x][y+1] == word[w]) { y = y+1; } else break; } else if ((x>0) && (y>0) && (y<n-1)) { if (array[x-1][y] == word[w]) { x = x-1;
更多人力资源相关资料敬请关注微信公众号"人事资料库"
{ if (array[x-1][y] == word[w]) { x = x-1; } else if (array[x+1][y] == word[w]) { x = x+1; } else if (array[x][y-1] == word[w]) { y = y-1; } else break; } else if ((x<m-1) && (y<n-1)) { if (array[x+1][y] == word[w]) { x = x+1; } else if (array[x][y+1] == word[w]) { y = y+1; } else break; } else if ((x<m-1) && (y>0))
注意区分英文字母大小写,你只能上下左右行 走。 运行时间限制: 内存限制: 无限制 无限制 输入第一行包含两个整 数n、m(0<n, m<21)分别表示n行m 列的矩阵,第二行是长度不超 过100的单词W,从第3行到底n+3 行是只包含大小写英文字母的长 度为m的字符串。 如果能在地图中连成给定的单 词,则输出“YES”,否则输出 “NO”。注意:每个字母只能用 一次。 5 5 SOLO CPUCY EKLQH CRSOL EKLQO PGRBC
更多人力资源相关资料敬请关注微信公众号"人事资料库"
{ if (array[x+1][y] == word[w]) { x = x+1; } else if (array[x][y-1] == word[w]) { y = y-1; } else break; } else if ((x>0) && (y<n-1)) { if (array[x-1][y] == word[w]) { x = x-1; } else if (array[x][y+1] == word[w]) { y = y+1; } else break; } else if ((x>0) && (y>0)) { if (array[x-1][y] == word[w]) { x = x-1;
更多人力资源相关资料敬请关注微信公众号"人事资料库"
Word Maze 是一个网络小游戏,你需要找到以 字母标注的食物,但要求以给定单词字母的顺 序吃掉。如上图,假设给定单词if,你必须先 吃掉i然后才能吃掉f。 但现在你的任务可没有这么简单,你现在 处于一个迷宫Maze(n×m的矩阵)当中,里面 到处都是以字母标注的食物,但你只能吃掉能 连成给定单词W的食物。 如下图,指定W为“SOLO”,则在地图中红色 标注了单词“SOLO”。