搜索
查看: 720|回复: 0

[分享] 20个嵌入式工程师必学面试题(中)

[复制链接]

131

主题

256

帖子

1142

积分

金牌会员

Rank: 6Rank: 6

积分
1142
发表于 2024-2-7 10:42:32 | 显示全部楼层 |阅读模式
在嵌入式工程领域,面试过程中通常会遇到一系列核心和深入的问题,以评估应聘者的专业知识和技能。今天,我们将探讨20个嵌入式工程师面试中常见的问题,这些问题旨在探索应聘者的理论基础、实践经验以及解决问题的能力。通过这些问题,面试官能够更全面地了解应聘者的专业素养和适应岗位的能力。


在接下来的讨论中,我们将逐一分析这些问题,并提供一些建议和思考方向,以帮助应聘者更好地准备面试,展示自己的专业实力和潜力。无论您是即将参加面试的嵌入式工程师,还是对此领域感兴趣的人士,相信这些问题和讨论都会为您带来宝贵的启示和帮助。




011Q:引用与指针有什么区别?


A:1) 引用必须被初始化,指针不必。


2) 引用初始化以后不能被改变,指针可以改变所指的对象。


3) 不存在指向空值的引用,但是存在指向空值的指针。




012Q:关键字static的作用是什么?


A:在C语言中,关键字static有三个明显的作用:


1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。


2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。


3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。



013Q:static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?


A:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。




全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。


这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。


由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。


从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。


static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。


对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。




014Q:进程之间通信的途径有哪些?


A:进程间通信主要通过管道、消息、信号等途径进行。


1、无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。


2、高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。


3、有名管道 (named pipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。


4、消息队列( message queue ) :消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。


5、信号量( semophore ) :信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。


6、信号 ( sinal ) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。


7、共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。


8、套接字( socket ) :套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。




015Q:产生死锁的原因是什么?


A:多个并发进程因争夺系统资源而产生相互等待的现象。即:一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁。


产生死锁的本质原因为:


1)、系统资源有限。


2)、进程推进顺序不合理。


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|RF技术社区

GMT+8, 2024-4-28 08:17 , Processed in 0.061376 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表