嵌入式软件工程师面试题(八)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 嵌入式软件工程师面试题(八)

a31747bfbad64df58203c6c448b1ae7f.png

1、在FreeRTOS中,任务通知的运行机制是怎么样的?


点击查看 原题更多的解析与讨论

任务通知的数据结构包含在任务控制块中,只要任务存在,任务通知数据结构就已经创建完毕,可以直接使用。

任务通知可以在任务中向指定任务发送通知,也可以在中断中向指定任务发送通知,FreeRTOS 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulNotifiedValue就是这个通知值。

只有在任务中可以等待通知,而不允许在中断中等待通知。

如果任务在等待的通知暂时无效,任务会根据用户指定的阻塞超时时间进入阻塞状态,我们可以将等待通知的任务看作是消费者;其它任务和中断可以向等待通知的任务发送通知,发送通知的任务和中断服务函数可以看作是生产者,当其他任务或者中断向这个任务发送任务通知,任务获得通知以后,该任务就会从阻塞态中解除。


2、什么情况下会栈溢出?如何避免?


点击查看 原题更多的解析与讨论

1.局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。

2.递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太多时,也会导致堆栈溢出。

3.指针或数组越界。这种情况最常见,例如进行字符串拷贝,或处理用户输入等等。 解决这类问题的办法有两个, 一是增大栈空间,二是改用动态分配,使用堆(heap)而不是栈(stack)。


3、深复制和浅复制的区别?


点击查看 原题更多的解析与讨论

浅复制:被复制对象的所有变量都含有与原来对象相同的值,而所有其他对象的引用仍然指向原来的对象。

深复制:被复制对象的所有变量都含有与原来对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制的新对象,而不再是原有的那些被引用的对象。


4、从一个源文件到可执行文件的过程?


点击查看 原题更多的解析与讨论

主要包括4个过程:


预处理;

2.编译(产生.s文件,-s);

3.汇编(产生.o或者.obj文件,-c);

链接


5、简述一下快速排序的步骤


点击查看 原题更多的解析与讨论

1.从数列中挑出一个元素,称为 “基准”;

2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置;

3.递归地把小于基准值元素的子数列和大于基准值元素的子数列排序;


6、头文件的两种包含方式的区别,<>与""区别


点击查看 原题更多的解析与讨论

< >引用的是编译器的类库路径里面的头文件,#include <> 的查找位置是标准库头文件所在目录;

" "引用的是你程序目录的相对路径中的头文件, #include “” 的查找位置是当前源文件所在目录。


7、CAN通信介绍;CAN通信报文的标识符有几位?


点击查看 原题更多的解析与讨论

CAN 是ISO国际标准化的串行通信协议。

CAN 控制器根据两根线上的电位差来判断总线电平。

总线电平分为显性电平和隐性电平,二者必居其一。

发送方通过使总线电平发生变化,将消息发送给接收方。

通信报文标识符有标准格式和扩展格式两种格式。

标准格式有11 个位的标识符(ID),扩展格式有29 个位的ID。


8、C语言结构体怎么定义节省内存


点击查看 原题更多的解析与讨论

1.在保证值域足够的情况下,用小字节变量代替大字节变量,如用short替代int

2.将各成员按其所占字节数从小到大声明,以尽量减少中间的填补空间(字节对齐)。

3.可以取消字节对齐,#pragma pack(1),当然这会牺牲效率,谨慎采用。



相关文章
|
13天前
|
运维 Kubernetes 关系型数据库
云计算运维工程师面试技巧
【8月更文挑战第6天】
54 1
|
1月前
|
算法 网络协议 Linux
|
2月前
|
存储 异构计算 内存技术
【硬件工程师面试宝典】常见面试题其一
- Setup时间:时钟前数据需稳定的最小时间。 - Hold时间:时钟后数据需保持稳定的时间。 - 竞争现象:不同路径信号汇合导致输出不稳定。 - 冒险现象:竞争引起的短暂错误状态。 - D触发器实现2倍分频电路。
48 5
|
1月前
|
传感器 芯片
嵌入式通信协议全解析:SPI、I²C、UART详解(附带面试题)
通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。从广义上来说,通信是指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质,将信息从某方准确安全地传送到另方。在出现电波传递通信后,通信被单一解释为信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。通信方式包括利用“电”来传递消息的电信,这种通信具有迅速、准确、可靠等特点,且几乎不受时间、地点、空间、距离的限制,因而得到了飞速发展和广泛应用。
229 0
|
3月前
|
人工智能 开发工具 Python
2024年利用Python突破验证码限制,2024年最新Python高级开发工程师面试题
2024年利用Python突破验证码限制,2024年最新Python高级开发工程师面试题
2024年利用Python突破验证码限制,2024年最新Python高级开发工程师面试题
|
2月前
|
安全 网络安全 网络协议
精选30道“渗透测试工程师”面试题
渗透测试 信息收集 网络安全 web安全
83 3
|
2月前
【硬件工程师面试宝典】常见面试题其二
检查单片机上电不运行:电源电压、时钟信号、复位电路、程序烧录。三极管特性:输出特性曲线和转移特性曲线。频率响应指系统对不同频率信号的响应,稳定要求幅度和相位不变。改变响应曲线方法:调整反馈、使用滤波器、改变元件参数。差分运放相位补偿通过在反馈回路加电容,波特图显示补偿效果。基本放大电路类型有共射、共集、共基,差分结构用于抗干扰和提高共模抑制比。电阻电容串联,电容电压为低通滤波,电阻电压为高通滤波。选择电阻考虑阻值、功率、温度系数、精度和尺寸。CMOS电路传递低电平用N管。电流偏置电路通过R1、Q1产生稳定电流。施密特电路回差电压由R1、R2决定。LC振荡器的哈特莱、科尔皮兹、克拉
27 0
|
3月前
|
SQL 分布式计算 算法
程序员必备的面试技巧——大数据工程师面试必备技能
程序员必备的面试技巧——大数据工程师面试必备技能
80 0
|
3月前
|
前端开发 算法
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
|
3月前
|
NoSQL Dubbo Java
StringBoot编程式事务与声明式事务java工程师面试突击第一季
StringBoot编程式事务与声明式事务java工程师面试突击第一季