文档库 最新最全的文档下载
当前位置:文档库 › 嵌入式软件工程师笔试题

嵌入式软件工程师笔试题

嵌入式软件工程师笔试题
嵌入式软件工程师笔试题

(一)

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 + DATE20 + 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);

break;

}

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); // 使用完,应当释放空间,以免造成存汇泄露

return 0;

}

华为笔试题(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.wendangku.net/doc/c014500745.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收到带有自

java高级工程师_面试题和答案

一:选择题 1. 关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1.x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2.x++; 8. hs1=new HasStatic( ); 9. hs1.x++; 10. HasStatic.x- -; 11. System.out.println(“x=”+x); 12. } 13. } A、 5行不能通过编译,因为引用了私有静态变量 B、 10行不能通过编译,因为x是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 2. 下列关于for循环和while循环的说法中哪个是正确的?( B ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3. 以下选项中循环结构合法的是( C ) A、while (int i<7) { i++; System.out.println(“i is “+i); } B、 int j=3; while(j) { System.out.println(“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { System.out.println(“ j is “+ j + “k is”+ k); } D、 int j=0; do{ System.out.println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段, 哪行将引起一个编译时错误?( D )

嵌入式软件工程师笔试题

(一) 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

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

测试工程师笔试题 一、计算机知识(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-非可靠连接,会丢包,没有校验,速度快,无须握手过程

Java工程师面试题(含答案)

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗 基本数据类型包括byte、int、char、long、float、double、boolean和short。 类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和Integer 有什么区别 Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int 提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String 类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求

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

四川九洲电器集团有限责任公司成都技术中心 嵌入式软件开发人员笔试试题 本笔试试题分为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 )

Java软件开发工程师笔试题(答案)

Java工程师笔试题 一、填空题(本大题10小题,每空1分,共20分)。 1.Java语言的三大特性即是: 继承、封装、多态。 2.在Java中,char 型采用____unicode_______编码方案,这样,无论是中文字符还是英文字符,都是占用__2___个字节的内存空间。 3. 形式参数指的是方法被__定义____ 时的参数行,实际参数是方法被__调用__ _ 时所传递进去的变量或值。 4.JSP内置对象中,application对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session 对象则是每个客户专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现Seralizable 接口。 6.程序中实现多线程的方法有两种:继承Thread类和实现___Runable _ 接口。 7.多线程中,可以通过调用相应的setPriority() 方法来修改一个线程的相对优先级。 8.面向对象编程的五大设计原则,分别是单一职责、开放封闭、 里氏替换、依赖倒置、接口分离 9.通过Ajax,客户端获取的数据主要有两种类型:文本型和xml 10.Socket通常也称为套接字,用于描述__ ip 和_ _接口 二、选择题(本大题20 小题,每小题2分.共40分)。 1.在JA V A中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写.应该使用( )关键字来声明父类的这些方法: A) final B) static C) abstract D) void 2.在JA V A中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C

嵌入式软件工程师笔试题

笔试题 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

软件开发工程师招聘试题

附录一 附录一【软件开发工程师招聘试题一】 考试时间:60分钟:______成绩:______ 一、单选题(共9题,每题2分) 1.对象b 最早在以下哪个选项前被垃圾回收?() public class Test5 { static String f(){ String a="hello"; String b="bye"; String c=b+"!"; //lineA String d=b; b=a; //lineB d=a; //lineC return c; //lineD } public static void main(String[] args) { String msg=f(); System.out.println(msg); } } A.lineA B.lineB C.lineC D.lineD 2.2.运行下列代码,结果如何?() class Example { int milesPerGallon; int index; Example(){} Example(int mpg){ milesPerGallon=mpg;

index=0; } public static void main(String[] args) { int index; Example e = new Example(25); if(args.length>0){ if(args[index].equals("Hiway")){ https://www.wendangku.net/doc/c014500745.html,esPerGallon=2; } System.out.println("mpg:"+https://www.wendangku.net/doc/c014500745.html,esPerGallon); } } } 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50”,如果输入不是”Hiway”则显示”mpg:25”; 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50”,如果输入不是”Hiway”则抛出ArrayIndexOutputBoundsException异常。 这段代码不能通过编译,因为自动变量index没有被初始化。 这段代码不能通过编译,因为milesPerGallon没有被初始化。 见例子Example.java 3.3.当编译如下代码时,会显示什么?() int i=1; switch(i){ case 0: System.out.println("zero"); case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } One B. one,default C. one,two,default D.default 见例子:Test3.java 4.4.当编译运行如下代码时会发生什么现象?() public class MyClass { public static void main(String arguments[] ) { amethod(arguments); } public void amethod(String []arguments){

Java软件开发工程师笔试题(答案)

Java软件开发工程师笔试题(答案) Java工程师笔试题 1,填空(此大题10项,每空1分,共20分) 1。Java语言的三个特性是继承性、封装性和多态性2.在Java中,char 使用_ _ _ _ Unicode _ _ _ _ _ _编码方案,因此中文字符和英文字符都占用__2__字节的内存空间 3。当方法由_ _定义时,形参指的是参数行,当方法由_ _调用时,实际参数是传入的变量或值。 4。JSP内置对象,应用程序对象代表应用程序上下文,它允许JSP 页面与包含在同一应用程序中的任何网络组件共享信息,而会话对象是特定于每个客户的 5。如果你想把一个对象写到一个流中,这个类必须实现Seralizable 接口 6。在程序中实现多线程有两种方法:继承线程类和实现_ _ Runable _ interface 7。在多线程中,线程的相对优先级可以通过调用相应的setPriority()方法来修改 8。面向对象编程的五个设计原则是单一责任、开放和封闭、里氏尺度替换、依赖倒置、接口分离。通过Ajax,客户端获取的数据主要有两种类型:文本类型和xml 10。Socket通常也叫socket,用来描述__ ip和_ _ interface 2,多项选择题(这个大题20项,每项2分,共40分)

1。在JA V A中,如果父类中的一些方法不包含任何逻辑并且需要被子类重写,那么父类的这些方法应该使用()关键字来声明:a)final b)static c)abstract d)void 2。在JA V A中,已经定义了两个接口b和c。要定义实现这两个接口的类,下面的语句是正确的() a)接口aextend b,c b)接口a implements b,c c)类a mplements b,c d)类a mplements b,实现c 3。可以在JA V A接口()中定义 A)静态方法b)常量c)构造函数d)抽象方法 4。假设A有构造函数A (int a),那么在A类的其他构造函数中调用的构造函数和语句格式应该是() a)a(x)b)this . a(x)c)this(x)d)super(x) 5。如果x = 1,y = 2,z = 3,表达式y+= z-/++x的值为()a)3b)3.5°c)4d)5 6。下列关于继承的陈述中哪一个是正确的?( )a)子类只继承父类的公共方法和属性:b)子类继承父类的非私有属性和方法: C)子类继承父类的方法,但不继承父类的属性:d)子类继承所有的属性和方法。 7。在爪哇。使用JDBC时对于对同一个SQL语句的多次调用,使用()通常会提高效率 a)语句b)可调用语句c)准备语句d)prarmeters语句8。以下方法无法控制Servlet的生命周期:a)服务b)销毁c) dopost d) init9。可以分配给字节变量的值的范围是()0 ~ 65535 b) (-128) ~ 127 c) (-32,768) ~ 32,

软件开发工程师招聘试题

专业技术资料 附录一 附录一【软件开发工程师招聘试题一】 考试时间:60分钟姓名:______成绩:______ 一、单选题(共9题,每题2分) 1.对象b 最早在以下哪个选项前被垃圾回收?() public class Test5 { static String f(){ String a="hello"; String b="bye"; String c=b+"!"; //lineA String d=b; b=a; //lineB d=a; //lineC return c; //lineD } public static void main(String[] args) { String msg=f(); System.out.println(msg); } } A.lineA B.lineB C.lineC D.lineD 2.2.运行下列代码,结果如何?() class Example { int milesPerGallon; int index; Example(){} Example(int mpg){ milesPerGallon=mpg;

index=0; } public static void main(String[] args) { int index; Example e = new Example(25); if(args.length>0){ if(args[index].equals("Hiway")){ https://www.wendangku.net/doc/c014500745.html,esPerGallon=2; } System.out.println("mpg:"+https://www.wendangku.net/doc/c014500745.html,esPerGallon); } } } 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50” ,如果输入不是”Hiway”则显示”mpg:25”; 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50” ,如果输入不是”Hiway”则抛出ArrayIndexOutputBoundsException异常。 这段代码不能通过编译,因为自动变量index没有被初始化。 这段代码不能通过编译,因为milesPerGallon没有被初始化。 见例子Example.java 3.3.当编译如下代码时,会显示什么?() int i=1; switch(i){ case 0: System.out.println("zero"); case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } One B. one,default C. one,two,default D.default 见例子:Test3.java 4.4.当编译运行如下代码时会发生什么现象?() public class MyClass { public static void main(String arguments[] ) { amethod(arguments); } public void amethod(String []arguments){

软件工程师笔试题及答案

吉运集团 北京信息科技开发公司软件工程师笔记题 ___________________________________________ __________ 姓名:________________ 联系电话:_____________ 期望工资________________ 分)第一部分:选择题(每题5 ) 多选都正确一、以下程序中VB和C#书写的是:( A:Public strName As String 和string strName = new string() B:Public strName As String()和string strName = new string() C:Public strName(10)As String和string[] strName = new string[100]; D:以上答案都正确; 二、以下C#程序中,写法不正确的是( )多选.B :C:\\Windows\\System32 A:C://Windows//System32 D:@C:/Windows/System32 C:@C:\Windows\System32 三、下列选项中,是引用类型的是( ) A. enum类型 B. struct类型 D. int 类型类型C. string ) 四、软件开发过程一般有以下几个阶段,正确的说法是( A:需求分析,概要设计,详细设计,软件编码,软件测试 B:概要设计,需求分析,详细设计,软件编码,软件测试 C:需求分析,详细设计,软件开发,系统上线 D:系统调研,需求讨论,整体设计,系统上线,系统售后 ) 五、以下关于CLR语言描述,不正确的是( 中调用;https://www.wendangku.net/doc/c014500745.html,写类,在C#翻译语言,用户可以用.NET是CLR:A. B:有了CRL 在.NET,保证了一种语言具有的功能其它语言也有; C:CLR是在.NET 中间语言,是CPU能看懂的语言; D :以上说法都正确; ( )

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

嵌入式软件工程师笔试 题华为 集团公司文件内部编码:(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)<

经典软件工程师面试题

请参加如下测试,此题是由数十家知名IT企业的人力资源管理部进行 综合分析总结出的测试题,请大家认真完成。 一共 30 道题 ,每题 1 分 ,满分 30 分 1. 如果 A=1,FAT=27,那么 FAITH=? A、44 B、42 C、41 D、40 2. 7/2 × 14/3 + 26/5=() A、1304/15 B、1274/15 C、901/15 D、1261/15 E、以上都不对 3. 如果‘CONTRIBUTE’被写作‘ETBUIRNTOC’,用这种方式写‘POPULARISE’时从左 边数第六个字母是什么? A、R B、I C、A D、L 4. 160的( )%=80的80% A、60 B、30 C、50 D、40 E、以上都不正确 5. 如果用某一编码可以把 ‘STOVE’ 表示成 ‘FNBLK’,那么用此编码可 以把 ‘VOTES’ 表示成如下哪一种? A、LBNKF B、LNBKF

C、LKNBF D、FLKBN 6. 在下列数字系列中有一个数字是错的,请找出来 40 42 49 57 74 100 137 A、100 B、74 C、57 D、49 E、42 7. Rs.6500按照多少的比率才能在5年之后达到Rs.1787.5的利息是 A、4.5 B、6.5 C、7.5 D、3.5 E、以上都不正确 8. 把医生、发烧、药物、药店按照一定的顺序排列: A、药店、药物、发烧、医生 B、发烧、医生、药店、药物 C、医生、药店、药物、发烧 D、药物、医生、药店、发烧 9. 下列5项选择中有4个可以根据一定规律组成一组,哪一个不属于他们? A、重 B、短 C、长 D、轻 E、固体 10. 下列的数字系列中在6之后并且在8之前有多少个3? 3 6 6 8 3 6 6 8 3 6 8 3 6 3 8 3 6 3 8 3 3 8 3 3 9 A、1个 B、2个 C、3个

软件开发工程师(JAVA)笔试题

软件开发工程师(JAVA)笔试题 请在90分钟以内做答答案请写在答题纸上 一、选择题 1、下面哪项是不合法的标识符:() A. $persons B. TwoUsers C. *point D. _endline E. final 2、下列运算符合法的是() A.&& B.<> C.if D.:= 3、下面描述中哪两项相等:()[选择两项] A.<%= YoshiBean.size%> B.<%= YoshiBean.getSize()%> C.<%= YoshiBean.getProperty(“size”)%> D. E. F. G. 4、设float x = 1,y = 2,z = 3,则表达式 y+=z--/++x的值是:() A. 3.5 B. 3 C. 4 D. 5 5、下面的哪些叙述为真:() A.equals()方法判定引用值是否指向同一对象 B.==操作符判定两个不同的对象的内容和类型是否一致 C.equal()方法只有在两个对象的内容一致时返回true D.类File重写方法equals()在两个不同的对象的内容和类型一致时返回true 6、如果一个对象仅仅声明实现了cloneable接口,但是不声明clone方法,外部能够调用其clone方法吗?() A. 能 B. 不能 C. 不确定 7、下列说法错误的有() A.能被java.exe成功运行的java class文件必须有main()方法 B. J2SDK就是Java API C. Appletviewer.exe可利用jar选项运行.jar文件 D.能被Appletviewer成功运行的java class文件必须有main()方法 8、下列正确的有() A. call by value不会改变实际参数的数值 B. call by reference能改变实际参数的参考地址 C. call by reference不能改变实际参数的参考地址 D. call by reference能改变实际参数的内容 9、下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C. int number=[]={31,23,33,43,35,63}

Java开发工程师笔试题(带答案)

Java开发工程师笔试试题 (请不要在试题上留任痕迹,所有答案均写在答题纸上) 一.编程题(共26分) 1.任意写出一种排序算法。(6分) public void sort(int [] array){ //代码区 } 2.求1+2+3+..n(不能使用乘除法、for 、while 、if 、else 、switch 、case 等关键字 以及条件判断语句)(8分) public int sum(int n){ //代码区 return 0; } 3.完成下面法,输入一个整数,输出如下指定样式图案。(12分) 输入:3, 输出: 1*2*3 7*8*9 4*5*6

输入:4 输出: 1*2*3*4 9*10*11*12 13*14*15*16 5*6*7*8 public void drawNumPic(int n){ //代码区 } 二.选择题(定项选择每题3分,不定项选择每题4分,共63分) 1.在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?( B ) A.int float B.int double C.long float D.long double 2.只有实现了__接口的类,其对象才能序列化( A ) A.Serializable B.Cloneable https://www.wendangku.net/doc/c014500745.html,parable

D.Writeable 3.代码System. out. println(10 % 3 * 2);将打印出?( B ) A. 1 B.2 C.4 D.6 4.以下程序运行的结果为( A ) public class Example extends Thread{ @Override public void run(){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.print("run"); } public static void main(String[] args){ Example example=new Example(); example.run(); System.out.print("main"); } } A.run main B.main run C.main D.run E.不能确定 5.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?( B ) A.实例变量指的是类中定义的变量,即类成员变量,如果没有初始化,会有默认值

完整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

软件工程师面试题含答案

、你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用? 答: MVC设计模式(应用观察者模式的框架模式) M: Model(Business process layer) ,模型,操作数据的业务处理层, 并独立于表现层(Independent of presentation) 。 V: View(Presentation layer) ,视图,通过客户端数据类型显示数据, 并回显模型层的执行结果。 C: Controller(Control layer) ,控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图 MVC框架的一种实现模型 模型二(Servlet-centric) : JSP+Servlet+JavaBean ,以控制为核心,JSP 只负责显示和收集数据,Sevlet ,连接视图和 模型,将视图层数据,发送给模型层,JavaBea n,分为业务类和数据实体,业务类处理业 务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。StrutsMVC 框架(Web application frameworks) Struts是使用MVC勺实现模式二来实现的,也就是以控制器为核心。 Struts提供了一些组件使用MVC开发应用程序: Model: Struts没有提供model类。这个商业逻辑必须由Web应用程序的幵发者以JavaBean 或EJB的形式提供 View:Struts 提供了action form 创建form bean, 用于在controller 和view 间传输数据。此外,Struts 提供了自定义JSP标签库,辅助幵发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中Controller :Struts 提供了一个核心的控制器ActionServlet ,通过这个核心的控制器来

相关文档
相关文档 最新文档