必背八股文-嵌入式基础篇4
相同优先级的几个线程是怎么运行的?
通常,RTOS对相同优先级的任务采用时间片轮询的方式进行调度,确保公平性。
对于临界区数据的处理,使用互斥锁和自己通过条件来判断,哪样更好,为什么?
使用互斥锁通常更好,因为它提供了一个明确和标准化的方法来确保数据的同步和互斥性。手动通过条件判断可能会引入错误,不易于维护。
上下文切换的时候系统做了些什么?
在上下文切换时,系统会保存当前任务的状态和寄存器的内容,然后加载新任务的状态和寄存器内容,以便可以从新任务的上次停止的地方继续执行。
函数指针了解么,在哪里有用到?
函数指针是指向函数的指针。它们常用于回调函数,如qsort()函数中的比较函数。
struct字节对齐了解么?
是的,字节对齐涉及到数据结构中各个字段在内存中的布局。对齐可以确保数据结构的访问速度更快,但可能会浪费一些内存。
什么是大端小端?
大端和小端是指二进制数据在内存中的存储顺序。大端方式是最高有效字节在最低地址处,而小端方式是最低有效字节在最低地址处。
内存分配函数了解么?如果系统中只有10K内存,而我要分配12K,能分配成功吗?如果能,那么将分配到的区域用memset进行初始化,会成功吗?
了解。使用例如malloc()的函数进行内存分配。如果系统只有10K,尝试分配12K通常会失败,返回NULL。如果某种原因成功了,使用memset()进行初始化会导致未定义行为,可能会覆盖其他重要的内存区域。
除了堆区,程序运行的内存中还有哪些区域?
文本或代码区、数据区、BSS区、堆、栈。
智能指针有了解吗?
智能指针如std::unique_ptr和std::shared_ptr是C++的一部分,用于自动管理对象的生命周期。
容器了解吗?vector实现的机制是怎么样的?
了解。是一个动态数组,当元素添加到vector时,如果当前的内存不足以容纳更多的元素,它会重新分配更大的内存块,复制旧的元素并释放旧的内存。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要是介绍嵌入式软件开发岗位的相关知识和学习攻略,为大家提供一份笔试与面试手册。包括有嵌入式软件开发岗位介绍与学习攻略;校园招聘和offer疑惑问题的介绍;在笔试方面,如何刷题为笔试作准备,提供往年笔试真题;在面试方面,提供相关知识的复习重点,提供面试真题。包括有:华为、蔚来、文远、大疆、三一、深信服、亚马逊、Intel、百度、科大讯飞、OPPO、京东、中兴、比特大陆|算能、美团等等