《华为面试、笔试题汇总(适用于:软件开发工程师)》由会员分享,可在线阅读,更多相关《华为面试、笔试题汇总(适用于:软件开发工程师)(17页珍藏版)》请在金锄头文库上搜索。
1、九度互动社区 1 华为面试、笔试题汇总华为面试、笔试题汇总 (适用于:软件开发工程师) (适用于:软件开发工程师) 予人玫瑰,手有余香,九度互动社区伴你一路同行! 整理人:浩帆 发布时间: 整理人:浩帆 发布时间:2010.11.14 感谢九度互动社区网友手工录入了这份试卷,任何组织和个人无权将其用于任 何商业赢利为目的的活动! 九度互动社区 2 (1) 什么是预编译,何时需要预编译: (1) 什么是预编译,何时需要预编译: 答案: 、总是使用不经常改动的大型代码体。 、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预 编译为一个预编译头
2、。 (2) char * const p char const * p const char *p 上述三个有什么区别? (2) char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; /常量指针,p 的值不可以修改 char const * p;/指向常量的指针,指向的常量值不可以改 const char *p; /和 char const *p (3) (3) char str1 = “abc“; char str2 = “abc“; const char str3 = “abc“; const
3、char str4 = “abc“; const char *str5 = “abc“; const char *str6 = “abc“; char *str7 = “abc“; char *str8 = “abc“; cout , =, =,=运算。(错误) 4、switch(c) 语句中 c 可以是 int ,long,char ,float ,unsigned int 类型。( 错,不能用浮点数) 二、填空题(共 30 分)二、填空题(共 30 分) 1、在 windows 下,写出运行结果,每空 2 分,共 10 分。 1、在 windows 下,写出运行结果,每空 2 分,共 10
4、 分。 char str = Hello; char *p=str; int n=10; sizeof(str)=( ) sizeof(p)=( ) sizeof(n)=( ) void func(char str100) sizeof(str)=( ) 答案:6,4,4,4, 具体解释请参看我的空间里的“C/C+程序员应聘试题剖析” 2、 2、 void getmemory(char *p, int num) *p=(char *) malloc(num); void test(void) char *str=NULL; getmemory( strcpy(str,hello); print
5、f(str); 运行 test 函数有什么结果?( )10 分 答案:输出 hello,但是发生内存泄漏。 多分配了很大一部分空间。 3、设 3、设 int arr=6,7,8,9,10; int *ptr=arr; *(ptr+)+=123; printf(%d,%d,*ptr,*(+ptr); ( ) 10 分 答案:8,8。 这道题目的意义不大, 因为在不同的编译器里printf的参数的方向是不一样的, 在vc6.0下是从右到左, 这里先*(+ptr) 后*ptr,于是结果为 8,8 三、编程题(第一小题 20,第二小题 30 分)三、编程题(第一小题 20,第二小题 30 分) 九度互
6、动社区 13 1、 不使用库函数,编写函数 int strcmp(char *source, char *dest) 相等返回 0,不等返回-1; 1、 不使用库函数,编写函数 int strcmp(char *source, char *dest) 相等返回 0,不等返回-1; 答案:一、 int strcmp(char *source, char *dest) assert(source!=NULL) int i,j; for(i=0; sourcei=desti; i+) if(sourcei=0 return -1; 答案:二、 int strcmp(char *source, cha
7、r *dest) while ( (*source != 0) dest+; return ( (*source) - (*dest) ) ? -1 : 0; 2、 写一函数 int fun(char *p)判断一字符串是否为回文,是返回 1,不是返回 0,出错返回-1 2、 写一函数 int fun(char *p)判断一字符串是否为回文,是返回 1,不是返回 0,出错返回-1 答案: 一、 int fun(char *p) if(p=NULL) return -1; else int length = 0; int i = 0; int judge = 1; length = strlen
8、(p); for(i=0; i length/2; i+) if(pi!=plength-1-i) judge = 0; break; if(judge = 0) return 0; else return 1; 九度互动社区 14 答案: 二、 int fun(char *p) int len = strlen(p) - 1; char *q = p + len; if (!p) return -1; while (p q) if (*p+) != (*q-) return 0; return 1; 华为笔试网络题(3) 2006-09-30 12:48华为笔试网络题(3) 2006-09-
9、30 12:48 1.在 OSI 7 层模型中,网络层的功能有( ) 1.在 OSI 7 层模型中,网络层的功能有( ) A.确保数据的传送正确无误 B.确定数据包如何转发与路由 C.在信道上传送比特流 D.纠错与流控 2.FDDI 使用的是_局域网技术。( ) 2.FDDI 使用的是_局域网技术。( ) A.以太网; B.快速以太网; C.令牌环; D.令牌总线。 3.下面那种 LAN 是应用 CSMA/CD 协议的 () 3.下面那种 LAN 是应用 CSMA/CD 协议的 () A.令牌环 B.FDDI C.ETHERNET D.NOVELL 4.TCP 和 UDP 协议的相似之处是 (
10、 ) 4.TCP 和 UDP 协议的相似之处是 ( ) A.面向连接的协议 B.面向非连接的协议 C.传输层协议 D.以上均不对 5.应用程序 PING 发出的是_报文.( ) 5.应用程序 PING 发出的是_报文.( ) A.TCP 请求报文。 B.TCP 应答报文。 C.ICMP 请求报文。 D.ICMP 应答报文。 6.以下说法错误的是(多) ( ) 6.以下说法错误的是(多) ( ) A.中继器是工作在物理层的设备 B.集线器和以太网交换机工作在数据连路层 C.路由器是工作在网络层的设备 D.桥 能隔离网络层广播 7.当桥接收的分组的目的 MAC 地址在桥的映射表中没有对应的表项时,
11、采取的策略是( ) 7.当桥接收的分组的目的 MAC 地址在桥的映射表中没有对应的表项时,采取的策略是( ) A.丢掉该分组 B.将该分组分片 C.向其他端口广播该分组 D.以上答案均不对 8.LAN Switch 在网络层次模型中的地位( ) 8.LAN Switch 在网络层次模型中的地位( ) A.物理层 B.链路层 C.网络层 D.以上都不是 9.小于_的 TCP/UDP 端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( )9.小于_的 TCP/UDP 端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( ) A.199 B.100 C.1024 D.204
12、8 10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 ( ) 10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 ( ) 九度互动社区 15 A.必须改变它的 IP 地址和 MAC 地址 B.必须改变它的 IP 地址,但不需改动 MAC 地址 C.必须改变它的 MAC 地址,但不需改动 IP 地址 D.MAC 地址.IP 地址都不需改动 答案:1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B. 华为笔试题(4) 2006-09-30 13:00华为笔试题(4) 2006-09-30 13:00 1. 找错 1. 找错 v
13、oid test1() char string10; char* str1=“0123456789“; strcpy(string, str1); 答:表面上并且编译都不会错误。但如果 string 数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定 义为 char string11,这样最后一个元素可以存储字符串结尾符0; void test2() char string10, str110; for(int i=0; i 10;i+) str1i =a; strcpy(string, str1); 答:strcpy 使用错误,strcpy 只有遇到字符串末尾的0才会结束,而 st
14、r1 并没有结尾标志,导致 strcpy 函数越界 访问,不妨让 str19=0,这样就正常了。 void test3(char* str1) char string10; if(strlen(str1) =10) strcpy(string, str1); 答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符0的,如果 str1 刚好为 10 个字 符1 结尾符,string 就得不到结尾符了。可将 strlen(str1) =10 改为 strlen(str1) 10。 2. 找错 2. 找错 #define MAX_SRM 256 DSN get_SRM_no() static int SRM_no; 九度互动社区 16 int I; for(I=0;I =MAX_SRM) return (NULL_SRM); else return SRM_no; 答:我不知道这段代码的具体功能,但明显有两个错误 1,SRM_no 没有赋初值 2,由于 static 的声明,使该函数成为不可重入(即不可预测结果)函数,因为 SRM_no 变量放在程序的全局存 储区中,每次调用的时候还可以保持原来的赋值。这里应