小猿圈之嵌入式软件工程师面试题汇总二(有答案)

上次小猿圈加加已经总结过一套《嵌入式软件工程师面试题一》,这次更新了,欢迎大家阅读,建议大家看的时候先不要看答案,先自己做一下,做完之后和正确答案对一下,看看自己做的怎么样,不说太多鸡汤了,小猿圈带你看一下面试题。

1、char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s);有什么错?

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

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

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

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

char * const p是一个char型指针,指针是常量,不允许修改,即类似p=q的语句是错误的;

char const * p和const char * p是同一种char型指针,指针指向的字符被看作是常量,不允许修改,即类似*p = q的语句是错误的。

3、一个32位的机器,该机器的指针是多少位?

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

4、请问以下代码有什么问题:

int  main() { chara; char *str=&a; strcpy(str,"hello"); printf(str); return 0; }

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

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

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

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

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

7、进程之间通信的途径

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

8、死锁的4个必要条件

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

9、.数组和链表的区别

答案:数组:数据顺序存储,固定大小连表:数据可以随机存储,大小可动态改变

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

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

11、 写出程序运行结果

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静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。

12、请写出下列代码的输出内容#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

第二套嵌入式软件开发面试题就到这里了,大家做的怎么样,自我感觉良好的朋友,那应该是基础很牢靠了,如果你现在处于找工作状态,你可以大胆试试;感觉做的不是很顺畅的朋友,也不要气馁,把不会的知识点重新好好学习一下,也可以去小猿圈看看,把不会的好好掌握一下。


你可能感兴趣的:(小猿圈之嵌入式软件工程师面试题汇总二(有答案))