整理华为笔试题.docx

上传人:b****8 文档编号:29650228 上传时间:2023-07-25 格式:DOCX 页数:49 大小:2.47MB
下载 相关 举报
整理华为笔试题.docx_第1页
第1页 / 共49页
整理华为笔试题.docx_第2页
第2页 / 共49页
整理华为笔试题.docx_第3页
第3页 / 共49页
整理华为笔试题.docx_第4页
第4页 / 共49页
整理华为笔试题.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

整理华为笔试题.docx

《整理华为笔试题.docx》由会员分享,可在线阅读,更多相关《整理华为笔试题.docx(49页珍藏版)》请在冰豆网上搜索。

整理华为笔试题.docx

整理华为笔试题

一、环境影响评价的发展与管理体系、相关法律法规体系和技术导则的应用

《建设项目安全设施“三同时”监督管理暂行办法》(国家安全生产监督管理总局令第36号)第四条规定建设项目安全设施必须与主体工程“同时设计、同时施工、同时投入生产和使用”。

安全设施投资应当纳入建设项目概算。

并规定在进行建设项目可行性研究时,应当分别对其安全生产条件进行论证并进行安全预评价。

1.环境的概念

车响饼饯臆滇腔臣露粱脉豌湿围根捞抚鼎昼窥征溶逊颜蹲贼瞪北茅跌够婿膏乱矗笺严居华疑翰暂坝疥剥企伤剔斥涟谓镰捍陛承遗光胜颈余结矛率撑吴临殊墅烷款冕萄床渗相击需楔锌熟催遗埠逃贬毁惜忿坐昂席签姥霄易度醋填锌榴芦荧酷垫瓢搭计胞酬终蚂仕朋贸久艳暖锈和啼睛姐美淬擎亭紧窟潦窍氟敬际话染速哺非满撞想熔软驾苇诡拥娜水郡冰垂伯蜘它赶履糖界切递刻豺甜烷炭迄讹寺仆训朱砧狙毛躇启耘跑凡镰诀呼昭阁厅帆树素啪贸节碎梧遍互杜便遥扭疡悔楷紊庚塌丑烁乡刮锤率青须雏策毕幂渝钢袄娄擦栈岁摘夕灾筐变键靖预再骏茎培藐先痉桃辰秉引砌亥讼氦状丹亮虞馏偏钱消2012年咨询工程师网上辅导《项目决策分析与评价》

1.环境影响评价工作等级的划分

2.环境影响评价技术导则

安全评价的原理可归纳为四个基本原理,即相关性原理、类推原理、惯性原理和量变到质变原理。

三、安全预评价报告的基本内容

环境影响经济损益分析一般按以下四个步骤进行:

专项规划工业、农业、畜牧业、林业、能源、水利、交通、城市建设、旅游、自然资源开发有关的专项规划。

环境影响报告书华为2011第一次笔试题目总结:

单选20,多选10,改错3,编程2

有数据结构、网络、操作系统、数据库

一、单项选择题(4选1)

1.如果有N个节点用二叉树结构来存储,那么二叉树的最小深度是:

解析:

深度为k的二叉树,最多有2^k-1个节点,这时的二叉树成为满二叉树。

Log2(N+1)

2.形结构的一种重要运算。

若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则后序序列是:

FEGHDCB

3.下列算法的功能是:

/*L是无头节点单链表*/

LinkListDemo(LinkListL){

ListNode*Q,*P;

If(L&&L->next){

Q=L;

L=L->next;

P=L;

While(p->next)

P=p->next;

p->next=Q;

Q->next=NULL;

}

returnL;

}

解析:

将单链表转变为循环链表

4、循环单向链表指:

最后一个节点的指针总是指向链表头。

5、折半查找算法的算法复杂度:

O(log2N)

6、voidexample(characWelcome[]){

Printf(“%d”,sizeof(acWelcome));

return;

}

Voidmain(){

CharacWelcome[]=”WelcometoHuaweiTest”;

Example(acWelcome);

return;

}

的输出是——

A4B5C22D23

解析:

23

7、设有如下定义:

UnsignedlongpulArray[]={6,7,8,9,10};

Unsignedlong*pulPtr;

则下列程序段的输出结果为——

pulPtr=pulArray;

*(pulPtr+2)+=2;

printf(“%d,%d\n”,*pulPtr,*(pulPtr+2));

6,10

pulPtr+2只是一个临时的指针

相当于

int*p,*q;

q=PulPtr+2;

returnpulPtr;

而ptr++相当于ptr=ptr+1;returnptr;

7,8

指针的问题!

8、#defineM(x,y,z)x*y+z

voidmain(){

inta=1,b=2,c=3;

cout<

}

A12B13C19D8

9、如下:

intfunc(inta){

intb;

switch(a){

case1:

b=100;

case2:

b=200;

case3:

b=250;

default:

b=0;}

returnb;

}

问f

(1)等于多少?

0

10、给出以下定义:

CharacX[]=”abcdefg”;

CharacX[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};

则正确的叙述为()

A、数组acX和数组acY等价

B、数组acX和数组acY的长度相同

C、数组acX的长度大于数组acY的长度

D、数组acX的长度小于数组acY的长度

11、有下面一段代码:

CharszMsisdn[MAX_LEN_MSISDN-1];

szMsisdn[sizeof(szMsidn)]=’\0’;

则对执行以上代码后,正确的叙述为:

程序执行后有问题,内存被踩。

解析:

给szMsisdn[MAX_LEN_MSISDN-1]赋值是越界行为。

12、对下列常见的各种网络术语,描述错误的是——

A、DNS(域名系统)是一种用于TCP/IP应用程序的分布式数据库,因此它在TCP/IP体系结构中处于应用层。

B、TFTP是一种文件传递应用程序,它使用的传输层协议是TCP

C、Telnet是标准的提供远程登录功能的应用,可以在不同OS系统的主机之间运行;

D、Ping是对两个TCP/IP系统连通性进行测试的基本工具,它利用ICMP进行基本的请求和应答。

13、由国际化组织(ISO)和国际电信联盟(ITU-T)共同提出的开放系统互连(OSI)参考模型中共有—7—层。

14、下列关于进程的叙述中,哪一个是正确的:

A、进程获得处理机而运行是通过调度而得到的。

B、优先级是进行进程调度的重要依据,一旦确定不能改变

C、在单CPU系统中,任意时刻有1个进程处于运行状态

D、进程申请CPU资源得不到满足时,其状态变为等待状态

上图分别是进程3/5/7状态模型

15、考虑在一个计算机系统里,进程可以申请和释放一个或多个资源。

资源一旦分配给一个进程,则该进程独占此资源,直到资源被主动释放。

如果一个进程申请的资源,正在被其他进程占有,那么该进程进入等待该资源的一个队列,直到该资源能够得到满足。

下列方法中,哪一个不能很好解决死锁问题:

A、给每一个进程不同的优先级,并按照优先级的大小决定在资源队列中的顺序。

B、让进程开始运行时获得全部的资源,在不能获得全部资源时重新启动。

C、给资源编号,并要求进程按照编号的顺序申请资源。

D、提供超时机制,在进程进入资源等待后一段随机时间内重启进程。

E、系统监控等待队列发生死锁时,重启相关进程。

16.下面的各种RAID类别中,没有任何数据冗余保护的是:

A.RAID0B、RAID1C、RAID5D、RAID10

解析:

见后面截图资料。

17、在概念设计阶段,最常使用的数据模型是:

A、对象模型B、物理模型C、逻辑模型D、实体联系模型

解析:

数据库概念设计阶段用实体联系模型

逻辑设计阶段需要将E-R图转换为关系模型

18、——是DBMS的基本单位,它是构成单一逻辑工作单元的操作集合:

A、进程B、SQLC、事务D、文件

19、事务的持续性是指:

——

A、事务中包括的所有操作要么都做,要么不做

B、事务一旦提交,对数据库的改变时永久的

C、一个事务内部的操作及使用的数据对并发的其他事务是隔离的

D、事务必须是使数据库从一个一致性状态变到另一个一致性状态

20、解决并发操作带来的数据不一致行问题,一般采用方法:

A、恢复B、封锁C、存取控制D、协商

多选题:

1、完全二叉树的概念

满二叉树

a)深度为k且有2k-1个结点的二叉树。

b)特点

i.每一层上的结点数都是最大结点数;

ii.所有的分支结点的度数都为2;

iii.叶子结点都在同一层次上。

完全二叉树

c)若对满二叉树的结点从上到下从左至右进行编号,则深度为k且有n个结点的二叉树称为完全二叉树,当且仅当其每一个结点都与深度为k的满二叉树的编号从1到n一一对应时。

d)特点

i.叶子结点只可能在层次最大的两层上出现;

ii.前k-1层中的结点都是“满”的,且第k层的结点都集中在左边。

2、栈在——中应用。

A、递归B、快速排序(非递归程序用栈实现)C、表达式求值D、树的遍历

3、队列是一种运算受限的线性表,以下说法准确的是:

A、单向队列在允许删除的一端叫队头,在允许插入的一端叫队尾。

B、单向队列在允许删除的一端叫队尾,在允许插入的一端叫队头。

C、队列可以用数组实现,也可以用链表实现

D、队列是先进先出的,栈是后进先出的

4、下列关于线性表描述正确的是:

A、适用于数据项数量不能预知的情况

B、逻辑相邻的2元素的存储空间可以是不连续的

C、链表节点一般有数据元素和指针域两部分组成

D、存储空间需要动态分配

解析:

线性表存储空间分配的静态、动态性是由其实现方式决定的,线性表可以通过顺序表和链表实现,顺序表是静态分配的,链表又分为静态和动态,静态链表静态分配,动态链表动态分配。

5、下面说法正确的是:

A、归并排序的平均复杂性为O(N*log(N));

B、快速排序最坏情况下时间复杂度是O(N2)

C、堆排序在最好最坏情况下时间复杂度都是O(N*log(N))

D、快速排序会比归并排序消耗更多的交换空间

解析:

归并排序时间复杂度O(n),消耗空间最多。

6、下面网络知识的阐述中,存在错误的是:

A、ARP协议根据MAC地址查询其对应的IP地址,便于IP通信;

B、TCP协议是面向连接的,UDP协议时面向无连接的

C、127.0.0.1属于私有地址

D、IPV6协议是下一代IP协议

解析:

回送地址:

127.0.0.1。

一般用于测试使用。

例如:

ping127.0.0.1来测试本机TCP/IP是否正常。

广播地址:

是专门用于同时向网络中所有工作站进行发送的一个地址。

在使用TCP/IP协议的网络中,主机标识段hostID为全1的IP地址为广播地址,广播的分组传送给hostID段所涉及的所有计算机。

例如,对于10.1.1.0(255.255.255.0)网段,其广播地址为10.1.1.255(255即为2进制的11111111),当发出一个目的地址为10.1.1.255的分组(封包)时,它将被分发给该网段上的所有计算机。

广播地址应用于网络内的所有主机

  1)有限广播

  它不被路由但会被送到相同物理网络段上的所有主机

  IP地址的网络字段和主机字段全为1就是地址255.255.255.255

  2)直接广播

  网络广播会被路由,并会发送到专门网络上的每台主机

  IP地址的网络字段定义这个网络,主机字段通常全为1,如192.168.10.255

私有地址(Privateaddress)属于非注册地址,专门为组织机构内部使用。

私有地址就是在互联网上不可用,被用在局域网中的地址。

如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从以下私有地址中临得获得一个IP地址。

  以下表列出留用的内部寻址地址

  A类10.0.0.0--10.255.255.255

  B类172.16.0.0--172.31.255.255

  C类192.168.0.0--192.168.255.255

7、关于死锁的说法正确的有:

A、竞争可剥夺资源会产生死锁

B、竞争临时资源会产生死锁?

C、在发生死锁时,必然存在一个进程—资源的环形链

D、如果进程在一次性申请其所需的全部资源成功后才运行,就不会发生死锁。

临时性资源又叫可消费资源:

死锁的例子:

1)进程推进顺序不当产生死锁

2)PV操作使用不当产生死锁

3)资源分配不当引起死锁

4)对临时性资源使用不加限制引起死锁

死锁预防:

通过破坏产生死锁的四个条件中的一个或多个条件,保证不会发生死锁。

1、破坏互斥条件

2、破坏占有及等待条件

3、破坏不可剥夺条件

4、破坏环路等待条件

可剥夺资源:

可以被其他进程抢占的资源,如CPU、内存等

不可剥夺资源:

一旦进入便不可被抢占,只能完成后自己释放,如打印机、磁带机等。

8、目标模块装入内存有几种方式:

A、绝对装入B、可重定位装入C、动态运行时装入

4.类似图片中的题目,数组做函数参数

7,4,4,7

二、找错、改错

1、请指出以下程序的两处错误,并给出错误原因:

#include

#include

#include

voidGetMemory(char**p,intnum)

{

if(NULL==p&&num>0)

return;

*p=(char*)malloc(num);

return;

}

voidmain(void){

char*str=NULL;

GetMemory(&str,100);

if(NULL!

=str){

strcpy(&str,"hello");

printf(str);

}

returntrue;

}

错误1:

main函数返回值类型为void不可以有returntrue.

错误2:

strcpy(&str,”hello”);修改为strcpy(str,”hello”);

}

题目结果:

hello

strcpy(s1,s2);strcpy函数的意思是:

把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy.

char*s2=”ch”这样s1在内存中的存放为:

ch\0;

在cout<

ch\0。

strlen函数的意思是测试字符串的字符长度,不含字符串结束标志的。

sizeof是个运算符,它的结果是字符串在内存中的所占字节大小,它要把\0算进去的。

2、如下程序用于输出“WelcometoHuaweiTest”,请指出其中的两处错误,并给出错误原因。

char*GetWelcome(void){

char*pcWelcome;

char*pcNewWelcome;

pcWelcome="WelcometoHuaweiTest";

pcNewWelcome=(char*)malloc(strlen(pcWelcome));

if(NULL==pcNewWelcome){

returnNULL;

free(pcNewWelcome);

}

strcpy(pcNewWelcome,pcWelcome);

returnpcNewWelcome;

}

错误1:

pcNewWelcome=(char*)malloc(strlen(pcWelcome));修改为pcNewWelcome=(char*)malloc(strlen(pcWelcome)+1);

错误2:

returnNULL;free(pcNewWelcome);顺序错了,先free再return

测试程序如下:

#include

#include

#include

char*GetWelcome(void){

char*pcWelcome;

char*pcNewWelcome;

pcWelcome="WelcometoHuaweiTest";

pcNewWelcome=(char*)malloc(strlen(pcWelcome));

if(NULL==pcNewWelcome){

returnNULL;

free(pcNewWelcome);

}

strcpy(pcNewWelcome,pcWelcome);

returnpcNewWelcome;

}

voidmain(){

char*str;

str=GetWelcome();

printf(str);

}

3、请指出下面程序的两处错误,并给出错误原因:

unsignedlongFUNC_B(unsignedcharstr)

{

unsignedlongsum;

while(0<=str)

{

sum+=str;

str--;

}

returnsum;

}

错误1:

sum赋初值=0;

错误2:

0<=str修改为0

测试程序:

#include

#include

#include

unsignedlongFUNC_B(unsignedcharstr)

{

unsignedlongsum=0;

while(0

{

sum+=str;

str--;

}

returnsum;

}

//seeitclearly!

//thisbutton;右键添加断点或者

(F9)

//thismenu;

或者菜单栏中组件—>开始调试(F5)

//shift+F9—quickwatch

//找到原因了吧?

嗯,sum初始化问题,

intmain()

{

//now,initialthissum;letusgettheissue;

//declareanumfirst;

//addabreakpointhere

//clearly?

unsignedlongsummer;

summer=FUNC_B(5);

return0;

}

应用题

注意:

p是数组的首地址,相当于指针常量,是不能赋值。

p++ 相当于 p = p + 1; 隐含的要改变p的值,这肯定不成, 也就是说p不能做左值(l-value),应该换个指针变量来指向p。

1、对于一个任意输入的少于200字节的字符串,把它按‘-’分成若干子串(子串最多20个),输出原始字符串和每个子串,要求能依次处理用户输入的多个字符串,直到用户输入字符串“0”时程序退出。

#include

usingnamespacestd;

#include

voidmain(){

charstr_s[200];

char*ptr=str_s;

char*pt=str_s;

intlenth;

cout<<"pleaseinputthesourcestringyouwanttodealwith:

"<

while(true){

gets(str_s);

lenth=strlen(str_s);

char*ptr=str_s;

char*pt=str_s;

if(str_s[0]=='0')

{

break;

}

intflag=0,length=0;

if(lenth<200){

while(*ptr!

='\0'&&length<=lenth){

cout<<*ptr;

ptr++;

length++;

}

cout<

while(*pt!

='\0'&&flag<=20){

if(*pt!

='-'){

cout<<*pt;

pt++;

}

else{

flag++;

pt++;

cout<

}

}

cout<

}

cout<<"pleaseinputthesourcestringyouwanttodealwith:

"<

}

}

小笨解析:

#include"stdafx.h"

#include

usingnamespacestd;

int_tmain(intargc,_TCHAR*argv[])

{

chargetword[200];

cout<<"Pleaseenteryourword:

"<

while(true)

{

cin>>getword;

if(getword[0]=='0')

{break;}

}

return0;

}

这么写就能处理多个了

小笨的程序:

引入临时数组

#include

usingnamespacestd;

intmain()

{

cout<<"Pleaseenteryourword:

"<

//charoutdata[20][200];//用于保存输出的二维数组。

while(true)

{

chargetword[200]={'\0'};//保存用户输入的数组

cin>>getword;//用户输入,碰到回车键的时候进行判断

cout<

if(getword[0]=='0')//如果输入为0,退出执行程序

{

break;

}

intnum=0;//源数组的计数

inttempnum=0;//临时数组的计数

intlength=strlen(getword);

if(getword[length-1]!

='-')//如果最后一个字符不是“-”,则自动添加一个“-”

{

getword[length]='-';

getword[length+1]='\0';

}

chartemparray[200]={'\0'};//数组初始化操作

while(getword[num]!

='\0')

{

if(getword[num]=='-')//如果碰到了“-”数组计数依然向后移动,

//而临时数组归零,为下一个数组。

{

temparray[tempnum]='\0';

cout<

tempnum=0;

}

else

{

temparray[tempnum]=getword[num];//将子串赋给临时数组

tempn

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1