搜档网
当前位置:搜档网 › 嵌入式软件工程师笔试题_华为

嵌入式软件工程师笔试题_华为

嵌入式软件工程师笔试题_华为
嵌入式软件工程师笔试题_华为

(一)

1什么是预编译,何时需要预编译:

答案:

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

2 char * const p char const * p const char *p 上述三个有什么区别?

答案:

char * const p; //常量指针,p的值不可以修改

char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p

3

char str1[] = "abc";

char str2[] = "abc";

const char str3[] = "abc";

const char str4[] = "abc";

const char *str5 = "abc";

const char *str6 = "abc";

char *str7 = "abc";

char *str8 = "abc";

cout < < ( str1 == str2 ) < < endl;

cout < < ( str3 == str4 ) < < endl;

cout < < ( str5 == str6 ) < < endl;

out < < ( str7 == str8 ) < < endl;

结果是:0 0 1 1

str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

4以下代码中的两个sizeof用法有问题吗?

[C易]

void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母

{ for( size_t i=0; i

if( 'a' <=str[i] && str[i] <='z' )

str[i] -= ('a'-'A' );

}

char str[] = "aBcDe";

cout < < "str字符长度为: " < < sizeof(str)/sizeof(str[0]) < < endl;

UpperCase( str );

cout < < str < < endl;

答案:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,因为还有'\0',函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相

关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。

5一个32位的机器,该机器的指针是多少位

答案:

指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。

6 main()

{

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

}

答案:2 5

分析:*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5 。&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)int *ptr=(int *)(&a+1); 则ptr实际是&(a[5]),也就是a+5 原因如下:&a是数组指针,其类型为int (*)[5]; 而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同a是长度为5的int数组指针,所以要加5*sizeof(int) 所以ptr实际是a[5] 但是prt与(&a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*)。a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].

7请问以下代码有什么问题:

int main()

{ char a;

char *str=&a;

strcpy(str,"hello");

printf(str);

return 0;

}

答案:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内存读写而导致程序崩溃。

8

Char * s="AAA";

printf("%s",s);

s[0]='B';

printf("%s",s); 有什么错?

答案:"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。

9写一个“标准”宏,这个宏输入两个参数并返回较小的一个。

答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X)) //结尾没有…;?

10 嵌入式系统中经常要用到无限循环,你怎么用C编写死循环?

答案:while(1){}或者for(;;)

11 关键字static的作用是什么?

答案:定义静态变量或静态函数

12 关键字const有什么含意?

答案:表示常量不可以修改的变量。

13 关键字volatile有什么含意?并举出三个不同的例子?

答案:提示编译器对象的值可能在编译器未监测到的情况下改变。

(1)并行设备的硬件寄存器(如状态寄存器)

(2)中断函数中会访问到的非自动变量

(3)多线程应用中被几个任务共享的变量

14 int (*s[10])(int) 表示的是什么啊?

答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。

15 有以下表达式:

int a=248,b=4;

int const c=21;

const int *d=&a;

int *const e=&b;

int const *f const =&a; 请问下列表达式哪些会被编译器禁止?为什么?

答案:*c=32; d=&b; *d=43; e=34; e=&a; f=0x321f; *c 这是个什么东东,禁止*d 说了是const,禁止e = &a 说了是const 禁止const *f const =&a; 禁止

16 交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;

答案:有两种解法, 一种用算术算法, 一种用^(异或) 。a = a + b; b = a - b; a = a - b;

或者 a = a^b;// 只能对int,char.. b = a^b; a = a^b; or a ^= b ^= a;

17 c和c++中的struct有什么不同?

答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct 可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

18.

#include

#include

void getmemory(char *p)

{

p=(char *) malloc(100);

strcpy(p,"hello world");

}

int main( )

{

char *str=NULL;

getmemory(str);

printf("%s/n",str);

free(str);

return 0;

}

答案:程序崩溃,getmemory中的malloc 不能返回动态内存,free()对str操作很危险

19

char szstr[10];

strcpy(szstr,"0123456789");

产生什么结果?为什么?

答案:长度不一样,会造成非法的OS

20 列举几种进程的同步机制,并比较其优缺点

答案:原子操作信号量机制自旋锁管程,会合,分布式系统

21.进程之间通信的途径

答案:共享存储系统消息传递系统管道:以文件系统为基础

22.进程死锁的原因

答案:资源竞争及进程推进顺序非法

23.死锁的4个必要条件

答案:互斥、请求保持、不可剥夺、环路

24.死锁的处理

答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁

25. 操作系统中进程调度策略有哪几种?

答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈

26.类的静态成员和非静态成员有何区别?

答案:类的静态成员每个类只有一个,非静态成员每个对象一个

27.纯虚函数如何定义?使用时应注意什么?

答案:virtual void f()=0; 是接口,子类必须要实现

28.数组和链表的区别

答案:数组:数据顺序存储,固定大小;

链表:数据可以随机存储,大小可动态改变

29.ISO的七层模型是什么?

tcp/udp是属于哪一层?tcp/udp有何优缺点?

答案:应用层表示层会话层传输层网络层链路层物理层;

tcp /udp属于传输层;

TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。与TCP 不同,UDP 并不提供对IP 协议的可靠机制、流控制以及错误恢复功能等。由于UDP 比较简单,UDP 头包含很少的字节,比TCP 负载消耗少。tcp: 提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好udp: 不提供稳定的服务,包头小,开销小

30:(void *)ptr 和(*(void**))ptr的结果是否相同?其中ptr为同一个指针

答案:.(void *)ptr 和(*(void**))ptr值是相同的

31:

int main()

{

int x=3;

printf("%d",x);

return 1;

}

问函数既然不会被其它函数调用,为什么要返回1?

答案:mian中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息

32 要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?

答案:*((void (*)( ))0x100000 ) ( ); 首先要将0x100000强制转换成函数指针,即: (void (*)())0x100000 然后再调用它: *((void (*)())0x100000)(); 用typedef可以看得更直观些: typedef void(*)() voidFuncPtr;

*((voidFuncPtr)0x100000)();

33,已知一个数组table,用一个宏定义,求出数据的元素个数

答案: #define NTBL(table) (sizeof(table)/sizeof(table[0]))

34。线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?

答案:进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL 中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃

35。

unsigned short A = 10;

printf("~A = %u\n", ~A);

char c=128;

printf("c=%d\n",c);

输出多少?并分析过程

答案:第一题,~A =0xfffffff5,int值为-11,但输出的是uint。所以输出4294967285 第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。这两道题都是在考察二进制向int或uint转换时的最高位处理。

(二)

1. -1,2,7,28,,126请问28和126中间那个数是什么?为什么?

答案:第一题的答案应该是4^3-1=63 规律是n^3-1(当n为偶数0,2,4) n^3+1(当n为奇数1,3,5)

2.用两个栈实现一个队列的功能?要求给出算法和思路!

答案:设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队: (1)判断栈B是否为空;(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。

3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?

答案:函数名: atol 功能: 把字符串转换成长整型数用法: long atol(const char *nptr); 程序例:

#include

#include

int main(void)

{ long l;

char *str = "98765432";

l = atol(lstr);

printf("string = %s integer = %ld\n", str, l);

return(0);

}

4。对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

答案:c用宏定义,c++用inline

5。直接链接两个信令点的一组链路称作什么?

答案:PPP点到点连接

7。软件测试都有那些种类?

答案:黑盒:针对系统功能的测试

白盒:测试函数功能,各函数接口

8。确定模块的功能和模块的接口是在软件设计的那个队段完成的?

答案:概要设计阶段

9。enum string

{

x1, x2, x3=10, x4, x5,

}x; 问x;

答案:取值在0。1。10。11。12中的一个

10。

unsigned char *p1;

unsigned long *p2;

p1=(unsigned char *)0x801000;

p2=(unsigned long *)0x810000;

请问p1+5= ;

p2+5= ;

答案:801005;810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14

选择题:

1.Ethternet链接到Internet用到以下那个协议?

A. HDLC;

B. ARP;

C. UDP;

D. TCP;

E. ID

答案D

2.属于网络层协议的是:

A.TCP;

B.IP;

C.ICMP;

D.X.25

答案B

3.Windows消息调度机制是:

A.指令队列;

B.指令堆栈;

C.消息队列;

D.消息堆栈;

答案:C

找错题:

1.请问下面程序有什么错误?

int a[60][250][1000],i,j,k;

for(k=0;k <=1000;k++)

for(j=0;j <250;j++)

for(i=0;i <60;i++)

a[i][j][k]=0;

答案:把循环语句内外换一下

2。以下是求一个数的平方的程序,请找出错误:

#define SQUARE(a) ((a)*(a))

int a=5;

int b;

b=SQUARE(a++);

答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a =7了

3: typedef unsigned char BYTE

int examply_fun(BYTE gt_len; BYTE *gt_code)

{

BYTE *gt_buf;

gt_buf=(BYTE )MALLOC(Max_GT_Length);

......

if(gt_len>Max_GT_Length)

{

return GT_Length_ERROR;

}

.......

}

答案:要释放内存问答题:

1.IP Phone的原理是什么?

答案:IPV6

2.TCP/IP通信建立的过程怎样,端口有什么作用?

答案:三次握手,确定是哪个应用程序使用该协议

(三)

1、局部变量能否和全局变量重名?

答案:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

2、如何引用一个已经定义过的全局变量?

答案:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错

3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答案:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出

4、语句for( ;1 ;)有什么问题?它是什么意思?

答案:和while(1)相同。

5、do……while和while……do有什么区别?

答案:前一个循环一遍再判断,后一个判断以后再循环。

6、请写出下列代码的输出内容

#include

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 a=10; b=a++;//a=11 b=10 c=++a;//a=12 c=12 d=10*a++;//a=13 d=120

高级题

1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

2、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中。答案:栈;静态区;堆

3、设有以下说明和定义:

typedef union

{

long i;

int k[5];

char c;

} DATE;

struct data

{

int cat;

DATE cow;

double dog;

} too;

DATE max;

则语句printf("%d",sizeof(too)+sizeof(max));的执行结果是:_20_

答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DA TE20 + double8 = 32. 所以结果是20 + 32 = 52. 当然...在某些16位编辑器下, int可能是2字节,那么结果是int2 + DATE10 + double8 = 20

4、队列和栈有什么区别?

答案:队列先进先出,栈后进先出

6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。

答案:

slnodetype *Delete(slnodetype *Head,int key)

{

if(Head->number==key)

{

Head=Pointer->next;

free(Pointer);

break;

}

Back = Pointer;

Pointer=Pointer->next;

if(Pointer->number==key)

{

Back->next=Pointer->next;

free(Pointer);

}

void delete(Node* p)

{

if(Head = Node)

while(p)

}

7、请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,

如“abcd”倒序后变为“dcba”

#include"string.h"

main()

{

char*src="hello,world";

char* dest=NULL;

int len=strlen(src);

dest=(char*)malloc(len);

char* d=dest;

char* s=src[len];

while(len--!=0)

d++=s--;

printf("%s",dest);

return 0;

}

答案:

#include

int main()

{

char* src = "hello,world";

int len = strlen(src);

char* dest = (char*)malloc((len+1)*sizeof(char)); //要为\0分配一个空间char* d = dest;

char* s = &src[len-1]; //指向最后一个字符

while( len-- != 0 )

*d++=*s--;

*d = 0; //尾部要加\0

printf("%s\n",dest);

free(dest); // 使用完,应当释放空间,以免造成内存汇泄露

}

华为笔试题(3)2006-09-29 19:41

一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)

1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。(正确)

2、int (*ptr) (),则ptr是一维数组的名字。(错误int (*ptr) ();定义一个指向函数的指针变量)

3、指针在任何情况下都可进行>, <,>=, <=,==运算。(错误)

4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。(错,不能用实形)

二、填空题(共30分)

1、在windows下,写出运行结果,每空2分,共10分。

char str[ ]= "Hello";

char *p=str;

int n=10;

sizeof(str)=( )

sizeof(p)=( )

sizeof(n)=( )

void func(char str[100])

{ }

sizeof(str)=( )

答案:6,4,4,4, 具体解释请参看我的空间里的“C/C++程序员应聘试题剖析”

2、

void getmemory(char **p, int num)

{

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

}

void test(void)

{

char *str=NULL;

getmemory(&str,100);

strcpy(str,"hello");

printf(str);

}

运行test函数有什么结果?()10分答案:输出hello,但是发生内存泄漏。

3、设

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

int *ptr=arr;

*(ptr++)+=123; //先算*ptr=*ptr+123; 再ptr++;所以arr[0]= 129;

printf("%d,%d",*ptr,*(++ptr)); //按从右到左的顺序

( ) 10分

答案:8,

8。这道题目的意义不大,因为在不同的编译器里printf的参数的方向是不一样的,在vc6.0下是从右到左,这里先*(++ptr) 后*pt,于是结果为8,8

三、编程题(第一小题20,第二小题30分)

1、不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;答案:一、

int strcmp(char *source, char *dest)

{

assert((source!=NULL)&&(dest!=NULL));

int i,j;

for(i=0; source[i]==dest[i]; i++)

{

if(source[i]=='\0' && dest[i]=='\0')

return 0;

else

return -1;

}

}

答案:二、

int strcmp(char *source, char *dest)

{

while ( (*source != '\0') && (*source == *dest))

{

source++;

dest++;

}

return ( (*source) - (*dest) ) ? -1 : 0;

}

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(p);

for(i=0; i

{

if(p[i]!=p[length-1-i])

judge = 0;

break;

}

if(judge == 0)

return 0;

else

return 1;

}

}

答案:二、

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

1.在OSI 7 层模型中,网络层的功能有(B )

A.确保数据的传送正确无误

B.确定数据包如何转发与路由

C.在信道上传送比特流

D.纠错与流控

2.FDDI(光纤分布式数据接口) 使用的是___局域网技术。(C )

A.以太网;

B.快速以太网;

C.令牌环;

D.令牌总线。

3.下面那种LAN 是应用CSMA/CD协议的(C)

A.令牌环

B.FDDI

C.ETHERNET

D.NOVELL

4.TCP 和UDP 协议的相似之处是( C)

A.面向连接的协议

B.面向非连接的协议

C.传输层协议

D.以上均不对

5.应用程序PING 发出的是___报文.( C)

A.TCP 请求报文。

B.TCP 应答报文。

C.ICMP 请求报文。

D.ICMP 应答报文。

6.以下说法错误的是(多) ( BD)

A.中继器是工作在物理层的设备

B.集线器和以太网交换机工作在数据连路层

C.路由器是工作在网络层的设备

D.桥能隔离网络层广播

7.当桥接收的分组的目的MAC地址在桥的映射表中没有对应的表项时,采取的策略是( C)

A.丢掉该分组

B.将该分组分片

C.向其他端口广播该分组

D.以上答案均不对

https://www.sodocs.net/doc/ad1229622.html,N Switch 在网络层次模型中的地位( B)

A.物理层

B.链路层

C.网络层

D.以上都不是

9.小于___的TCP/UDP端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( C) A.199 B.100 C.1024 D.2048

10.当一台主机从一个网络移到另一个网络时,以下说法正确的是( B)

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

1.找错

void test1()

{

char string[10];

char* str1="0123456789";

strcpy(string, str1);

}

答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符'\0';

void test2()

{

char string[10],

str1[10];

for(int I=0; I <10;I++)

{

str1[I] ='a';

}

strcpy(string, str1);

}

答:strcpy使用错误,strcpy只有遇到字符串末尾的'\0'才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]='\0',这样就正常了。

void test3(char* str1)

{

char string[10];

if(strlen(str1) <=10)

{

strcpy(string, str1);

}

}

答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符'\0'的,如果

str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1) <=10改为strlen(str1) <10。

2. 找错

#define MAX_SRM 256

DSN get_SRM_no()

{

static int SRM_no;

int I;

for(I=0;I

{

SRM_no %= MAX_SRM;

if(MY_SRM.state==IDLE)

{

break;

}

}

if(I>=MAX_SRM)

return (NULL_SRM);

else

return SRM_no;

}

答:我不知道这段代码的具体功能,但明显有两个错误1,SRM_no没有赋初值2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。

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;I <5;I++)

{

printf("%d,", sum(a));

}

}

答:8,10,12,14,16 该题比较简单。只要注意b声明为static静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。

4. int func(int a)

{

int b;

switch(a)

{

case 1: b=30;

case 2: b=20;

case 3: b=16;

default: b=0;

}

return b;

}

则func(1)=?

答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。这是提醒我们不要忘了break。呵呵。

5:

int a[3];

a[0]=0;

a[1]=1;

a[2]=2;

int *p, *q;

p=a;

q=&a[2];

则a[q-p]=?

答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点

6. 定义int **a[3][4], 则变量占有的内存空间为:_____

答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为3×4×4=48。

7. 编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

答:/*输入年月日时分秒,输出年月日时分秒的下一秒,输出仍然在原内存空间*/

void NextMinute(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond)

{

int nDays; (*nSecond)++; // 秒加1 if(*nSecond>=60) // 秒满60,做出特殊处理,下面时,日,月等类同

{

*nSecond=0;

(*nMinute)++;

if(*nMinute>=60)

{

*nMinute=0;

(*nHour)++;

if(*nHour>=24)

{

*nHour=0;

(*nDate)++;

switch(*nMonth)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

nDays=31;

break;

case 2:// 判断闰年

if(*nYear%400==0 | |*nYear%100!=0&&*nYear%4==0) {

nDays=29;

}

else

{

nDays=28;

}

break;

default:

nDays=30;

break;

}

if(*nDate>nDays)

{

*nDate=1;

(*nMonth)++;

if(*nMonth>12)

{

*nMonth=1;

(*nYear)++;

}

}

}

}

}

} /*示例可运行代码*/

void main()

{

int nYear=2004,nMonth=12,nDate=31,nHour=59,nMinute=59,nSecond=59;

NextMinute(&nYear,&nMonth,&nDate,&nHour,&nMinute,&nSecond);

printf("The result:%d-%d-%d %d:%d:%d",nYear,nMonth,nDate,nHour,nMinute,nSecond);

}

华为硬件笔试题2006-09-30 13:01

一选择13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理有关于1.微分电路2.CISC,RISC 3.数据链路层

二填空10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理有关于

1.TIC6000 DSP

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 TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP

华为硬件面试题2006-09-30 13:02 全都是几本模电数电信号单片机题目

1.用与非门等设计全加法器

2.给出两个门电路让你分析异同

3.名词:sram,ssram,sdram

4.信号与系统:在时域与频域关系

5.信号与系统:和4题差不多

6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期.. ..)

7.串行通信与同步通信异同,特点,比较

8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)

9.延时问题,判错

10.史密斯特电路,求回差电压

11.VCO是什么,什么参数(压控振荡器?)

12. 用D触发器做个二分颦的电路.又问什么是状态图

13. 什么耐奎斯特定律,怎么由模拟信号转为数字信号

14. 用D触发器做个4进制的计数

15.那种排序方法最快?

一、研发(软件)

用C语言写一个递归算法求N!;给一个C的函数,关于字符串和数组,找出错误;防火墙是怎么实现的?你对哪方面编程熟悉?

硬件:1、继电器控制电路。2、SDRAM是怎么工作的3、写出逻辑表达式说明A2A1A0大于B2B1B0。4、常用触发器有几种5、示波器有几种触发方式,举出三种

华为3COM数据通信工程师试题2006-09-29 18:53

1 H.323协商答案:12个包协商,先H225然后H245,需要注意的是面试官可能会问到跟SIP的比较

2 ipsec为什么是三层的。L2tp为什么是二层的?答案:IPSec (Internet 协议安全)是一个工业标准网络安全协议,为IP 网络通信提供透明的安全服务,保护TCP/IP 通信免遭窃听和篡改,可以有效抵御网络攻击,同时保持易用性。IPSec有两个基本目标:1)保护IP数据包安全;2)为抵御网络攻击提供防护措施。第三层保护的优点通常IPSec提供的保护需要对系统做一定的修改。但是IPSec在IP传输层即第三层的"策略执行"(strategic implementation)几乎不需要什么额外开销就可以实现为绝大多数应用系统、服务和上层协议提供较高级别的保护;为现有的应用系统和操作系统配置IPSec几乎无须做任何修改,安全策略可以在Active Directory里集中定义也可以在某台主机上进行本地化管理。IPSec 策略在ISO参考模型第三层即网络层上实施的安全保护,其范围几乎涵盖了TCP/IP协议簇中所有IP协议和上层协议,如TCP、UDP、ICMP,Raw(第255号协议)、甚至包括在网络层发送数据的客户自定义协议。在第三层上提供数据安全保护的主要优点就在于:所有使用IP协议进行数据传输的应用系统和服务都可以使用IPSec,而不必对这些应用系统和服务本身做任何修改。运作于第三层以上的其他一些安全机制,如安全套接层SSL,仅对知道如何使用SSL的应用系统(如Web浏览器)提供保护,这极大地限制了SSL的应用范围;而运作于第三层以下的安全机制,如链路层加密,通常只保护了特定链路间的数据传输,而无法做到在数据路径所经过的所有链路间提供安全保护,这使得链接层加密无法适用于Internet 或路由Intranet 方案中的端对端数据保护。L2TP(第二层隧道协议)通过使用虚拟专用网(VPN) 连接和第二层隧道协议(L2TP),可以通过Internet 或其他公共网络访问专用网。L2TP 是一个工业标准Internet 隧道协议,它和点对点隧道协议(PPTP) 的功能大致相同。利用L2TP来构建企业的VPN,一样需要运营商支持,因为LAC一般是在传统电话交换网络中部署的,并且一个公司的分支机构以及移动办公的员工在地域上分布很广,所以需要各地的运营商都具备LAC才能够实现企业大范围构建VPN网络。当然企业也可以构建自己的基于L2TP的VPN网络在L2TP VPN中,用户端的感觉就像是利用PPP协议直接接到了企业总部的PPP端接设备上一样,其地址分配可以由企业通过DHCP来分配,认证方式可以沿用PPP一直沿用的各种认证方式,并且L2TP是IETF定义的,其MIB库也将定义出来从而可以实现全局的网络管理。

3 ospf中包的ttl值是多少?答案:1,因为224.0.0.5/224.0.0.6是本地链路组播

4 OSPF为什么要划分区域?答案:RD用于BGP区分VPN路由,RT用于在各VRF中导入或导出路由

5 MPLS VPN的标签一共有几层。内网的标签放在哪里。答案:如果没有流量工程则是2层,内网标签在隧道标签之后

6 MPLS中RD和RT的作用分别是什么?答案:减少CPU负载,区域间使用距离矢量算法,因此其它区域的泛洪不会影响区域的SPF运算,这里注意面试官可能会问OSPF多区域如何防止环路。(注意答本质而不是现象,免得面试官追问)

7 RR防止环路的机制。答案:RR中通过ORIGIN ID和CLUSTER ID防止环路,若RR收到带有自己CLUSTER ID的路由则丢弃

8 BGP控制out-bound用local-pre,控制进来的用med. 答案:正确

9 ospf是工作在哪个协议上的?答案:IP,OSPF协议号89

10 ospf的LSA类型。答案:1,2,3,4,5,6,7,没有什么好说的,注意考官问到第6类LSA,组播再准备多点

11 简述OSPF的基本工作机制。答案:这个没什么可以说了,把知道的都说出来就行了

软件测试工程师笔试题及答案

测试工程师笔试题 一、计算机知识(30分) 1、在Linux系统中,一个文件的访问权限是755,其含义是什么 参考答案: 755表示该文件所有者对该文件具有读、写、执行权限,该文件所有者所在组用户及其他用户对该文件具有读和执行权限。 2、Linux中,如何从root用户切换到普通用户 参考答案:su su user1 切换到user1,但切换后的当前目录还是root访问的目录 su – user1 切换到user1,并且当前目录切换到user1的根目录下(/home/user1/) 3、简述一下C/S模式和B/S模式的区别 参考答案: c/s 是客户端/服务器架构 b/s 是浏览器/服务器架构 C/S模式有以下特点: S模式将应用与服务分离,系统具有稳定性和灵活性 S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性 3.由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快 4.在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂 B/S模式有以下特点: 1.系统开发、维护、升级方便 每当服务器应用程序升级时,只要在服务器上升级服务应用程序即可,用户计算机上的浏览器软件不需要修改,系统开发和升级维护方便 S模式具有很强的开放性 在B/S模式下,用户通过通用的浏览器进行访问,系统开放性好 S模式的结构易于扩展 由于Web的平台无关性,B/S模式的结构可以任意扩展,可以从包含一台服务器和几个用户的小型系统扩展成为拥有成千上万个用户的大型系统 4.用户使用方便 B/S模式的应用软件都是基于Web浏览器的,而Web浏览器的界面是类似的。对于无用户交换功能的页面。用户接触的界面都是一致的,用户使用方便 4、Windows操作系统中PATH环境变量的作用是什么 参考答案: PATH是Windows操作系统环境变量,PATH作用是用户在命令行窗口执行一个命令,则在PATH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令。 5、TCP和UDP有什么区别 参考答案: TCP-有连接,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换UDP-非可靠连接,会丢包,没有校验,速度快,无须握手过程

嵌入式软件工程师笔试题

(一) 1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2 char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3 char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 4以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母 {for( size_t i=0; i

华为软件测试工程师面试题

华为软件测试工程师面试题 2010-05-27 10:25 Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图? 答:七层结构从上到下依次是: 7 应用层;6 表示层;5 会话层;4 传输层;3 网络层;2 数据链路层;1 物理层 五层结构是 5 应用层;4 运输层;3 网络层; 2 链路层;1 物理层。 Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用?TCP与UDP 呢? 答:UDP,TCP在传输层,IP在网络层, TCP/IP是英文Transmission Control Protocol/Internet Protocol的缩写,意思是"传输控制协议/网际协议"。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到 Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的? 一般意义上说交换机是工作在数据链路层。但随着科技的发展,现在有了三层交换机,三层交换机已经扩展到了网络层。也就是说:它等于“数据链路层+ 部分网络层”。交换机中传的是帧。通过存储转发来实现的。 路由器是工作在网络层。路由器中传的是IP数据报。主要是选址和路由。 Q4:请问C++的类和C里面的STRUCT有什么区别? 答:除关键字不同外(class,struct)的唯一区别是, 结构在默认情况下的成员是公共(public)的, 而类在默认情况下的成员是私有(private)的。 在C++中,结构是特殊的类。 class是从struct发展而来的。之所以将struct和class都保留,是因为: 1、提出class是为了强调一种概念。 2、保留struct是为了照顾到大多数人的习惯。 struct和class是有区别的。 struct保证成员按照声明顺序在内存中存储。class不保证等等 而它们都可以继承,实现多态等。但也有少许区别。比如:

嵌入式软件开发人员笔试题

四川九洲电器集团有限责任公司成都技术中心 嵌入式软件开发人员笔试试题 本笔试试题分为C语言基础、算法、思维能力三部份。总分100分,描述思路和最后结果都很重要。 一、C语言基础 1. 语句实现x是否为2的若干次幂的判断。(5分) 2. 宏定义写出swap(x,y)。(5分) 3. 用变量a给出下面的定义。(16分,各两分) a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )

华为笔试试题大全

华为笔试试题大全 (陈远跃/整理) 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地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。 13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。 循环链表,用取余操作做 14.不能做switch()的参数类型是: switch的参数不能为实型。 上海华为的一道关于指针方面的编程题 int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路) 华为笔试题含答案 [软件工程题] 写一个程序, 要求功能:求出用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++; cout<

华为面试笔试题

华为软件测试笔试题 Posted on 2010年04月1日, 22:29, by admin, under Test. 华为软件测试笔试题 前面几道大题是基础形的判断、选择、阅读理解题,涉及到网络、通信、软件工程等等,都是大英文。不过不难,CET4的水平就差不多了,但是重要的还是计算机方面的一些基础知识。后面的几道大题如下: 1、有A、B两个水杯,都没有刻度,也不允许做刻度。A杯装满水是5升,B杯装满水是3升。不借助别的任何工具,只用这两个杯子如何精确的得到4升水? A满5 B空 A将B满 A2 清空B A2移于B A满5 A5满B A4 2、软件工程中,根据软件开发的 V 模型,有哪些基本的阶段划分? 3、软件测试方法有哪些分类?各有什么特点?设计测试用例的主要方法有哪些? 4、网络安全方面,简述Syn_FLOOD攻击的原理。你还知道哪些类型的网络攻击? 一、根据一张“策略—收获”图,张三可以选择横向的方案A和方案B,李四可以选择纵向的方案1、方案2、方案3。两人选择方案的交叉点就是两人各自的收获。比如张三选择方案B,李四选择方案1,交叉点是(50,80),则张三收获50元,李四收获80元。两人都想让自己的收获尽可能的高,选择方案时两人均不知对方的选择。问两人最终的收获各是多少?

二、桌上排列着一行乒乓球,一共100个。两个人轮流拿球装入口袋,拿到第100个球的人是胜利者。每次拿球最少拿1个,最多拿5个。如果你先开始拿球,你要拿几个?以后你要怎样拿球,才能保证你能拿到第100个? 三、冒泡排序。用C 或 Java 语言。(从小到大排序) C #include void main() { int a[10]; int temp; int i; int j; int x; a[0] = 3; a[1] = 4; a[2] = 54; a[3] = 654; a[4] = 77; a[5] = 8; a[6] = 9; a[7] = 366; a[8] = 90; a[9] = 32; for( i=0;i<9;i++) { for( j =0; j<9-i;j++)

嵌入式软件工程师笔试题

笔试题 1: 设 float a=2, b=4, c=3; ,以下 C 语言表达式与代数式 (a+b)+c 计算结果不一致的是 A.(a+b)*c/2 B.(1/2)*(a+b)*c C.(a+b)*c*1/2 D.c/2*(a+b) 参考答案: B,因为 a,b,c 三个变量都是浮点数,所以在 B 答案中其结果是 0,因为在计算 1/2 是就是 0,如果改成 1/2.0 就正确了。 2: 为了向二进制文件尾部增加数据,打开文件的方式应采用 A.″ab″ B.″rb+″ C.″wb″ D.″wb+″ 参考答案: D 3: 下述程序执行后的输出结果是 #include main() { int x= 'f'; printf( “%c n”, 'a'+(x - ‘a'+1)); } A.g B.h C.i D.j 参考答案: A 4:C 语言中,下列运算符优先级高的是 A.! B.% C.>> D.= = 参考答案: A 5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。 A.*a B. a [ 0 ] C. a D.a++ 参考答案: D

6: 执行语句“ k=7>>1; ”后,变量 k 的当前值是 A.15 B.31 C. 3 D. 1 参考答案: C 7: 定义函数时,缺省函数的类型声明,则函数类型取缺省类型 A.void B.char C.float D.int 参考答案: D 8: 若 main() 函数带参数,参数个数多是 A.0 B. 1 C. 2 D. 3 参考答案: C 只知道有定义形式 main(int argc,char* argv[])) 9: 若有宏定义: #define MOD(x , y) x%y 则执行以下语句后的输出结果是 int a=13 ,b=94; printf( ″%d n″, MOD(b, a+4)); A. 5 B.7 C.9 D.11 参考答案: B 10: 下列各个错误中,哪一个不属于编译错误 A.改变 x 原值 3 为 5 ,写作“ x==5 ; ” B.花括号不配对 C.复合语句中的后一条语句后未加分号 D.变量有引用、无定义参考答案: A 11: 下列程序段运行后, x 的值是 ( ) a=1;b=2;x=0; if(!( — a))x — ; if(!b)x=7;else ++x; A.0 B. 3 C. 6 D.7 参考答案: A

华为笔试题大全(史上最齐全)

华为 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地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。

华为IT软件测试笔试题

华为IT软件测试笔试题 判断题(10*1分): 1、软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。(√) 2、白盒测试侧重于程序结构,黑盒测试侧重于功能,其中白盒测试需要程序员参与,黑盒测试不需要(×) 3、单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。(√) 4、集成测试也叫做组装测试,通常在编码完成的基础上,将所有的程序模块进行有序的、递增的测试(×) 5、系统测试应尽可能在实际运行使用环境下进行(√) 6、详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。(√) 7、测试人员在测试过程中发现一处问题,如果问题影响不大,而自己又可以修改,应立即将此问题正确修改,以加快、提高开发的进程。(×) 8、程序、需求规格说明、设计规格说明都是软件测试的对象(√) 9、第三方测试是在开发方与用户方的测试基础上进行的验证测试(×) 10、数据流图和数据字典共同构成系统的逻辑模型。(√) 选择题(20*2分): 1、软件测试的目的正确的是(D) ①测试是为了发现程序中的错误而执行程序的过程; ②好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; ③成功的测试是发现了至今为止尚未发现的错误的测试 ④测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进; A、① B、①②③ C、②③④ D、①②③④ 2、软件测试的对象包括(B) A.目标程序和相关文档 B.源程序、目标程序、数据及相关文档 C.目标程序、操作系统和平台软件 D.源程序和目标程序 3、从是否关心软件内部结构和具体实现的角度划分。(B)

华为笔试题(答案)

笔试题 选择题 1、以下程序的输出结果是: #include int main() { int n =4; while(n--) { printf("%d ", --n); } printf("\r\n"); return0; } 答案:2 0 2、设有以下宏定义: #define N 4 #define Y(n) ((N+1)*n) 则执行语句:Y(5+1)为: 答案:26 3、 enum ENUM_A { x1, y1, z1 =5, a1, b1 }; enum ENUM_A enumA =y1; enum ENUM_A enumB =b1; 请问enumA和enumB的值是多少? 答案:1, 7

4、若有函数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 答案:C 8、设有如下定义: unsigned long pulArray[] = {6,7,8,9,10}; unsigned long*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 答案:D 9、以下程序运行后,输出结果是什么? void main() { char*szStr = "abcde"; szStr += 2; printf("%1u\r\n", szStr); return; } A) cde B) 字符c的ASCII码值 C) 字符c的地址 D) 出错 答案:C

华为软件测试工程师笔试题目

华为软件测试工程师笔试题目 1、怎么来设计测试方案 根据测试需求(包括功能需求和非功能性需求),识别测试要点,识别测试环境要求,安排测试轮次,根据项目计划和开发计划做整体的测试安排。 被测试的特性:通过对需求规格说明书进行分析,列出本次测试需要进行测试的各部分特性(如要测试的功能需求、性能需求、安全性需求等等); 不被测试的特性:由于资源、进度等方面原因,本次测试不列入测试范围的特性; 测试组网图:进行本次系统测试所需要的软硬件设备、配置数据已及相互间的逻辑、物理连接。今后测试执行时需要依据这个组网图来进行环境的搭建。 2、如果给你一个B/S系统你怎么来进行测试 此题答案还可用于回答测试流程,测试流程题亦可参考15题。 阅读系统需求,充分理解需求,记录问题,并与项目需求人员充分沟通。 编写测试需求,包括系统功能和非功能测试要点、测试类型、测试进度质量要求等。 制定测试计划,包括熟悉测试业务、设计测试用例、执行测试用例、进行测试小结、编写测试报告,任务颗粒度一般应小于5人天 编写测试用例,根据测试方案设计用例,即便没有明确的性能和安全测试要求,也应识别进行此两项测试。 执行软件测试, 进行测试小结,如果测试持续时间较长,每个版本间隙总结本轮测试。 编写测试报告,总结测试过程,汇总度量数据。 3、怎么进行工作流的测试 把握需求,找准结点,理清流程,画出流转图,弄清节点间的数据流转,设计测试用例的时候必须覆盖所有可能的流程。 工作流: 如果问到有没有做过,根据对工作流的了解情况回答,如果比较了解,可以把参与的某个项目中说上一些有工作流的,如果不是很了解就说没有做过,但是学习过相关知识。

嵌入式软件工程师笔试题华为优选稿

嵌入式软件工程师笔试 题华为 集团公司文件内部编码:(TTT-UUTT-MMYB-URTTY-ITTLTY-

(一)1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2char*constpcharconst*pconstchar*p上述三个有什么区别 答案: char*constp;//常量指针,p的值不可以修改 charconst*p;//指向常量的指针,指向的常量值不可以改 constchar*p;//和charconst*p 3 charstr1[]="abc"; charstr2[]="abc"; constcharstr3[]="abc"; constcharstr4[]="abc"; constchar*str5="abc"; constchar*str6="abc"; char*str7="abc"; char*str8="abc";

cout<<(str1==str2)<

2014华为校园招聘笔试算法题汇总

华为2014笔试算法题汇总 1.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:“deefd”输出:“def” 输入:“afafafaf”输出:“af” 输入:“pppppppp”输出:“p” main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出 当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。 一定要保证编译运行不受影响 [cpp] view plaincopy ////////////////////////////////////////////////////////////////////////// #include #include

using namespace std; bool g_flag[26]; void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr) { assert(pInputStr != NULL); int i = 0; if (pInputStr == NULL || lInputLen <= 1) { return; } const char *p = pInputStr; while(*p != '\0') { if (g_flag[(*p - 'a')]) { p++; }else{ pOutputStr[i++] = *p; g_flag[*p - 'a'] = 1; p++; } }

软件测试工程师面试题汇总(华为篇)

软件测试工程师面试题汇总(华为篇) 1、怎么来设计测试方案 根据测试需求(包括功能需求和非功能性需求),识别测试要点,识别测试环境要求,安排测试轮次,根据项目计划和开发计划做整体的测试安排。 被测试的特性:通过对需求规格说明书进行分析,列出本次测试需要进行测试的各部分特性(如要测试的功能需求、性能需求、安全性需求等等)。 不被测试的特性:由于资源、进度等方面原因,本次测试不列入测试范围的特性。 测试组网图:进行本次系统测试所需要的软硬件设备、配置数据及相互间的逻辑、物理连接。今后测试执行时需要依据这个组网图来进行环境的搭建。 2、如果给你一个B/S系统你怎么来进行测试 此题答案还可用于回答测试流程,测试流程题亦可参考15题。 阅读系统需求,充分理解需求,记录问题,并与项目需求人员充分沟通。 编写测试需求,包括系统功能和非功能测试要点、罗列测试类型、测试进度、质量要求等。 制定测试计划,包括熟悉测试业务、设计测试用例、执行测试用例、进行测试小结、编写测试报告,任务颗粒度一般应小于5人天 编写测试用例,根据测试方案设计用例,即便没有明确的性能和安全测试要求,也应识别进行此两项测试。 执行软件测试。 进行测试小结,如果测试持续时间较长,每个版本间隙总结本轮测试。 编写测试报告,总结测试过程,汇总度量数据。 3、怎么进行工作流的测试 把握需求,找准结点,理清流程,画出流转图,弄清节点间的数据流转,设计测试用例的时候必须覆盖所有可能的流程。 工作流: 如果问到有没有做过,根据对工作流的了解情况回答,如果比较了解,可以把参与的某个项目中说上一些有工作流的,如果不是很了解就说没有做过,但是学习过相关知识。 4、做性能测试的时候都需要关注哪些参数 并发访问量,服务器响应时间(最小、平均、最大) 并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。 负载测试(Load Testing)是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。 负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。 疲劳测试是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。疲劳强度测试可以采用工具自动化的方式进行测试,也可以手工编写程序测试,其中后者占的比例较大。 一般情况下以服务器能够正常稳定响应请求的最大并发用户数进行一定时间的疲劳测试,获取交易执行指标数据和系统资源监控数据。如出现错误导致测试不能成功执行,则及时调整测试指标,例如降低用户数、缩短测试周期等。还有一种情况的疲劳测试是对当前系统性能的评估,用系统正常业务情况下并发用户数为基础,进行一定时间的疲劳测试。 大数据量测试可以分为两种类型:针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;与压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试方案。大数据量测试的关键是测试数据的准备,可以依靠工具准备测试数据。 5、客户没给性能指数,怎么开展性能测试 如果客户没有提出明确的性能指标,可以按照惯例和经验设置,需要和项目经理协商,一般由项目经理确认,质量保证负责给出建议。 举例说一个Server端程序,要求峰值时CPU和MEM消耗在75%以下,而一个页面的访问响应时间一般认为

华为软件测试笔试

前面几道大题是基础形的判断、选择、阅读理解题,涉及到网络、通信、软件工程等等,都是大英文。不过不难,CET4的水平就差不多了,但是重要的还是计算机方面的一些基础知识。后面的几道大题如下: 1、有A、B两个水杯,都没有刻度,也不允许做刻度。A杯装满水是5升,B杯装满水是3升。不借助别的任何工具,只用这两个杯子如何精确的得到4升水? 第一步: A杯装满水,将A杯中水装入空杯B中,装满 第二步:将B杯中水倒掉,将A杯中剩余的2升水倒入B杯 第三步:将A杯中装满水,继续倒入B杯,倒满 此时A杯中剩余4升水。 2、软件工程中,根据软件开发的 V 模型,有哪些基本的阶段划分? 3、软件测试方法有哪些分类?各有什么特点?设计测试用例的主要方法有哪些? 4、网络安全方面,简述Syn_FLOOD攻击的原理。你还知道哪些类型的网络攻击? 一、根据一张“策略—收获”图,张三可以选择横向的方案A和方案B,李四可以选择纵向的方案1、方案2、方案3。两人选择方案的交叉点就是两人各自的收获。比如张三选择方案B,李四选择方案1,交叉点是(50,80),则张三收获50元,李四收获80元。两人都想让自己的收获尽可能的高,选择方案时两人均不知对方的选择。问两人最终的收获各是多少? 二、桌上排列着一行乒乓球,一共100个。两个人轮流拿球装入口袋,拿到第100个球的人是胜利者。每次拿球最少拿1个,最多拿5个。如果你先开始拿球,你要拿几个?以后你要怎样拿球,才能保证你能拿到第100个? 三、冒泡排序。用C 或Java 语言。(从小到大排序) class Px1{ public static void main(String args[]){ int[] a={31,2,5,7,17,1,33,40}; for(int i=0;ia[j]){ int x=a[j-1]; a[j-1]=a[j]; a[j]=x; } } for(int i=0;i

完整word版嵌入式软件工程师笔试题 华为

(一)1什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。在这种所有模块都使用一组标准的包含文件和相同的编译选项。2、程序由多个模块 组成,情况下,可以将所有包含文件预编译为一个预编译头。 const char *p 上述三个有什么区别?2 char * const p char const * p 答案:p的值不可以修改char * const p; //常量指针,和char const *p const char *p ;//char const * p;//指向常量的指针,指向的常量值不可以改 3 char str1[] = abc; char str2[] = abc; const char str3[] = abc; const char str4[] = abc; const char *str5 = abc; const char *str6 = abc; char *str7 = abc; char *str8 = abc; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 0 0 1 1 结果是:是指针,它们指str5,str6,str7,str8str1,str2,str3,str4是数组变量,它们有各自的内 存空间;而向相同的常量区域。 以下代码中的两个sizeof用法有问题吗?4 ] [C易中的小写字母转换成大写字母// 将str void UpperCase( char str[] ) { for( size_t i=0; i

华为软件测试工程师笔试题

华为软件测试工程师笔试题 软件测试工程师笔试题目 一(填空 1、系统测试使用( C )技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结 构。 A、单元测试 B、集成测试 C、黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括(B )。 A、白盒测试 B、功能测试 C、静态测试 D、以上都不是 3、(A )的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。 A、系统测试 B、集成测试 C、单元测试 D、功能测试 4、如果一个产品中次严重的缺陷基本完成修正并通过复测,这个阶段的成品是( A )。 A、 Alpha版 B、Beta版 C、正版 D、以上都不是 5、自底向上法需要写(A )。 A、驱动程序 B、桩程序 C、驱动程序和桩程序 D、 .以上都不是 6、测试ATM取款功能,已知取款数只能输入正整数,每次取款数要求是100的倍数且不能大于500,下 面哪个是正确的无效等价类(C)

A、(0,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+?); B、(500,+?) C、(500,+?)、任意大于0小于500的非100倍数的整数; D、(-?,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+?); 7、因果图/判定表工程方法在以下那种情况下不适用(C) A、输入输出明确,或输入输出因果关系明确的情况下 B、被分析的特性或功能点复杂,输入项目很多的情况下 C、系统输入之间相互约束多,需要做大范围的组合测试情况下 D、系统输入之间基本没有相互联系 8、以下说法不正确的是(D) A、测试原始需要明确了产品将要实现了什么 B、产品测试规格明确了测试设计内容 C、测试用例明确了测试实现内容 D、以上说法均不正确 9、可测试性中,有关系统可观察性的理解,下面说法那个是错误的( B) A、系统所有的输出结果可观察,错误输出易于识别; B、系统运行状态和内部处理的过程信息可观察; C、系统内部变量名及其取值可观察; D、系统内部重要对象的状态和属性可观察; E、系统内部重要的操作的处理时间可观察; F、系统内部重要的资源的占用情况及单个资源的创建、保持、释放过程可观察 10、测试脚本的编写规范强调:(ABCD )

华为软件工程师面试经验分享

华为软件工程师面试经验分享 华为面试流程想必大家已经非常清楚了,网申之后就是性格测试,这里我想说一下,性格测试虽然没有标准答案,但是往往会有一些人会在这一块被刷,主要原因想必是因为在回答问题前后矛盾,或者是对自己的认识不够清晰导致的,当然我只是猜测。所以我认为,性格测试只要按照自己的真实情况,不用刻意去迎合他的要求,同时记住自己做过的答案,很有可能在后面会有同样的题目,但是不同表述出现,确保不会出现前后矛盾,个人认为性格测试就不会有什么问题了。 性格测试结束以后就会通知面试,华为的效率的确值得称赞,基本上会在半天或者一天之内搞定,面试主要是群面,英语测试,性格测试,技术面以及综合面,顺序可能会根据当天现场的调度情况有所不同。 想必大家都听说过华为著名的群殴,模式基本上就是10 人,一组 5 个人,每人 1 分钟,然后会给一个主题大家讨论,得出结果,然后代表陈述,最后面试官会提问并刁难。自我介绍基本上会围绕个人基本信息,优缺点,职业规划或者最成功失败等问题,这里就需要大家在群面之前做好准备,一定要控制在1 分钟之内,因为面试官会在 1 分钟结束的时候毫不留情的打断你,需要注意的是,在自我介绍开始时,就要开始做记录,记住每个人的基本情

况,优缺点等,因为面试官会随机抽人对其他人的自我介绍进行复述。 自我介绍结束以后,就会给一个主题就行讨论。关于无领导小组讨论,我的观点是,由于每组仅 5 个人,除了leader之外,其他角色不用刻意的去争抢,计时和记录等工作大家都要做,但一定要有一个人统筹规划讨论的局势,同时要记住的一点是,一旦讨论开始,大家就是一个小组的,是一个团队,如果你想顺利进入下一轮面试,那就尽可能让你们组的每个人都出色发挥,当整个团队都表现优异,面试官才会认可这个团队,所以每个人都应该照顾自己的队友,不贪功,相互照顾,工作分配合理才是一个优秀的合作团队。 说回讨论的问题,我认为无领导小组讨论主要是考察一个团队在合作当中所表现出的相互协作的精神,同时在讨论和思考中的条理性和逻辑性,所以除了刚刚说的合作以外,不管是什么论题,都一定要从条理性和逻辑性出发,讨论刚开始时首先就应该确定我们讨论的原则是什么,以及做出每项选择的根据是什么,这样随着讨论的进行,思路会越来越清晰,同时由于事先已经确立了基本选择以及依据,在后面面试官提问的时候,整个团队就会向他们展现出一种齐心协力,思路一致的状态,这想必也正是面试官想要见到的。

相关主题