嵌入式软件工程师面试题总结

嵌入式软件工程师是现在人才市场上比较紧缺的职位,该职位由于学习困难大,学习资源少,对开发者拥有的知识面较广,所以很多招聘公司找不到这类人才,所以需要我们不停的学习自我,充实自我,走向成熟才行。下面我们一起来看看嵌入式软件工程师一般面试的题目。

1、关键字valotile有什么含义/p>

解:一个硬件寄存器;中断中的一个非自动化变量;线程任务共享的变量

2、嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

解:

#define bit3 0x1<<3

int a;

void set_bit(void)

{

    a|=bit3;

}

void clear(void)

{

    a&=~bit3;

}

3、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。

解:int * ptr;

    ptr = (int * )0x67a9;

    *ptr = 0xaa66;

4、中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。
__interrupt double compute_area (double radius)
{
    double area = PI * radius * radius;
    printf(“nArea = %f”, area);
    return area;
}

解:ISR不能拥有浮点数返回值;ISR不能拥有浮点数参数;ISR做浮点运算是不明智的

5、尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么/p>

解:内存碎片,回收碎片,变量执行时间

6、异步IO和同步IO区别

解:同步IO执行一个IO操作时,应用程序需要等待;异步IO执行一个IO操作时,应用程序可以同步进行

7、C的关键字

解:数据类型关键字;

控制语句关键字

存储类关键字

其他关键字

8、宏定义在什么阶段进行处理

解:宏定义在程序预编译阶段进行处理

9、Norflash与Nandflash的区别/p>

解:Norflash只读存储器,Nandflash为随机存储器,Nandflash容量大,没有挂接在地址总线上,地址线与数据线共用

10、反码,补码,原码的概念

解:反码:原数除符号位以外逐位取反

补码:负数的补码是原码取反+1

正数的反码、补码、原码一致

11、线程,互斥锁,信号对应的函数

解:pidcreate(),pidjoin()等

mutexinit(),mutexlock(),mutexunlock()等

init(),wait(),post()等

12、内存管理MMU的作用

解:内存分配及释放,内存扩充,地址映射,内存保护

13、SRAM,DRAM,SDRAM的区别

解:SRAM为静态随机存储器,掉电,数据不会丢失

DRAM为动态随机存储器

SDRAM为同步动态随机存储器,与同步时针保持一致

14、编译和链接有什么不同如外部符号的处理)

解:编译产生目标文件.o,链接产生可执行文件。

15、已知strcpy函数的函数原型是:
 char *strcpy(char *strDest, const char *strSrc)。其中,strDest是目的字符串,strSrc是源字符串。
 不调用C++/C的字符串库函数,请编写函数strcpy

解:char *strcpy(char *strDest,const char*strSrc)

{

    int i = 0;

    if(!(strDest&&strSrc))

    return;

    while(strDest[i++]=*strSrc++);

    return strDest

}

16、strcpy能把strSrc的内容复制到strDest,为什么还要char *类型的返回值/p>

解:为了实现链式表达式

17、关键字static的作用是什么/p>

1、修饰局部变量,生命域全局,作用域局部

2、修饰全局变量,生命域全局,作用域模块内

3、修饰函数,生命域和作用域均在模块内

18请列举常用的串行通信方式(两种以上),并简述串行通信和并行通信不同之处、优缺点。

解:异步通信和同步通信;并行接口通信快,串行通信口线间干扰小。

19、OSI协议分为哪几层/p>

应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

20、路由协议

解:网关-网关协议,内部网关协议,外部网关协议

21、位颠倒程序。

解:

unsigned char bit_reverse(unsigned char c)

unsigned char buf = 0;

int bit = 8;

while(bit)

{

    bit–;

    buf|=((c&1)<<bit);

    c>>1;

}

    return buf;
}

22、字符串倒序。

解:

inverted_order(char *p)

{

    char *s1,*s2,tem;

    s1 = p;

    s2 = s1+strlen(p)-1;

    while(s1<s2)

    {

        tem = *s1;

        *s1 = *s2;

        *s2=tem;

        s1++;

        s2–;

    } 

}

23、引用和指针的区别/p>

解:指针是一个实体,引用时一个别名

指针可以用const修饰,引用不可以

指针可变,引用不可变

指针需要解引用,引用不需要解引用

24、这4层包括:应用层,传输层,网络层,链路层。

TCP/IP协议包括:TCP,IP,DNS,TELNET,UDP等

TCP建立和结束的过程:三次握手和四次挥手;端口的作用:发送和接收数据

25、死锁的四个条件和处理方法。

解:互斥条件,请求保持条件,不剥夺条件,循环等待条件

处理方法:预防,避免,检测和恢复

26、进程调度策略

解:先进先出法,优先调度法,轮转法,多级队列法

27、时间换空间的例子:冒泡排序法,空间换时间的例子:快速排序法,堆排序法。

28、MAC层协议有哪些/p>

解:ISO2110;IEEE802;IEEE802.2;

29、进程间通信方式

解:管道,命名管道,消息队列,共享内存,信号,信号量,套接字。

30、宏和函数的优缺点

解:函数需要分配内存,宏不需要;函数需要计算表达式,然后代入形参,宏只是简单的字符替换

31、由C/C++编译的程序占用的内存分为以下几个部分

解:堆区,栈区,全局区,文字常量区,程序代码区

32、线程同步的方法:信号量,条件变量,互斥锁

33、物理地址,线性地址,逻辑地址和总线地址的区别

解:逻辑地址:段相关的偏移地址部分

线性地址:逻辑地址到物理地址变换之间的中间层

物理地址:地址变换的最终结果地址

总线地址:I/O地址

34、编写内核程序中申请内存和编写应用程序时申请内存有什么区别/p>

解:编写内核程序中用malloc()申请内存的同时,会设置一个维护值brk。

35、tcp/udp是属于哪一层cp/udp有何优缺点/p>

解:tcp/udp属于运输层,tcp提供稳定的运输服务,包头大,冗余大,udp提供不稳定的运输服务,包头小,开销小。

36、中断活动的全过程/p>

解:中断请求,中断屏蔽,中断响应,保护现场,中断源调查,中断处理,清除标志,保护现场,中断返回

嵌入式软件工程师面试题总结

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113313 人正在系统学习中

来源:ZZXSZT

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月2日
下一篇 2021年10月2日

相关推荐