嵌入式软件工程师面试 2

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

1、关键字valotile有什么含义?

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

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)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

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

6、异步IO和同步IO区别

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

7、C的关键字

解:数据类型关键字;

控制语句关键字

存储类关键字

其他关键字

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

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

9、Norflash与Nandflash的区别?

解: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 *类型的返回值?

解:为了实现链式表达式

17、关键字static的作用是什么?

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

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

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

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

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

19、OSI协议分为哪几层?

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

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、引用和指针的区别?

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

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

指针可变,引用不可变

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

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

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

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

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

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

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

26、进程调度策略

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

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

28、MAC层协议有哪些?

解:ISO2110;IEEE802;IEEE802.2;

29、进程间通信方式

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

30、宏和函数的优缺点

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

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

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

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

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

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

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

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

总线地址:I/O地址

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

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

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

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

36、中断活动的全过程?

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

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

希望小编的文章能对小伙伴们有帮助,在这预祝各位读者都能顺顺入职,拿到满意的offer!!!

 (可以动动小手给小编三连嘛嘻嘻!!!)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小y979

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值