嵌入式笔试刷题(第10天)

16. 为什么调用 C 编译函数时要加 extern "C"

原因: C++ 编译器对函数名进行 name mangling(名字修饰),而 C 编译器不做修饰。

解决方法:

extern "C" {
    void c_function();
}


这样可以让 C++ 编译器生成与 C 编译器兼容的符号。

17. 用 C++ 判断操作系统是 16 位还是 32 位(不能用 sizeof)

方案:通过地址移位判断

int check_bits() {
    long x = 1L << 31;
    if (x == 0) return 16;
    else return 32;
}


说明: 16 位下左移 31 位结果为 0,32 位下非 0。

18. 三条输出语句的结果是什么?

char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc"; 
const char str4[] = "abc"; 
const char* str5 = "abc";
const char* str6 = "abc";

cout << boolalpha << ( str1 == str2 ) << endl; // (1)
cout << boolalpha << ( str3 == str4 ) << endl; // (2)
cout << boolalpha << ( str5 == str6 ) << endl; // (3)


结果分析:

  1. str1 == str2 比较的是地址,不同 ⇒ false
  2. str3 == str4 也是数组,地址不同 ⇒ false
  3. str5 == str6 指向字符串常量池,同一地址 ⇒ true

19. C++ 中空类默认会生成哪些成员函数?

  • 默认构造函数
  • 拷贝构造函数
  • 拷贝赋值函数
  • 析构函数
  • 移动构造函数(C++11 起)
  • 移动赋值函数(C++11 起)

示例:

class Empty {};


空类也占用至少1字节内存。

20. 是否所有动作都由 main() 函数引起?若不是,举例说明

不是。

示例:

  1. 全局对象构造函数在 main 之前执行。
  2. 静态对象析构函数在 main 返回后执行。
  3. C++ atexit() 注册的函数也在 main 后执行。
class A {
public:
    A() { cout << "Global A constructed" << endl; }
    ~A() { cout << "Global A destructed" << endl; }
};

A a;

int main() {
    cout << "main" << endl;
}


输出:

Global A constructed
main
Global A destructed


更多内容全在下方专栏

全网最受欢迎的嵌入式笔试专栏

笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学

3000+订阅还会涨价,提前订阅提前享受,持续更新中。

专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

#嵌入式测试,嵌入式开发##嵌入式笔面经分享##面试经验谈#
全部评论

相关推荐

最近刚结束暑期实习,现在回忆起来,之前找实习的经历还是蛮痛苦的...现在分享一下之前的实习面经吧,赞一波人品,大家秋招加油!##&nbsp;高通实习&nbsp;4.101.STM32智能手表项目你觉得做的最出彩的地方是什么2.STM32智能手表项目遇到了什么困难3.多个任务间如何进行数据交互4.任务优先级怎么安排5.C语言如何实现“封装“?让结构体外部看不到某些成员的具体类型(不透明指针)6.按键是不是用了中断?它如何更新显示的页面的7.LVGL是什么东西8.低功耗是怎么设计的9.用堆栈来切换页面/低功耗策略的设计是自己想的还是看博客10.FreeRTOS里的线程和进程有什么区别11.如何对全局变量这种存储进行优化12.如果要显示历史数据,该用什么方法传数据13.U-Boot启动流程14.启动介质用过哪些?如何直接从SRAM启动15.概述一下项目里那几个字符设备驱动的开发流程16.了不了解块设备、网络设备17.了解MMU吗?MMU的工作原理18.MMU除了内存映射,还有什么功能-&nbsp;当时回答的是PTE的权限检查,面试官好像想让我答和cache相关的东西...19.了解Cache吗?知道它的大概作用还是在使用的时候遇到过什么问题看看博客把,cache应该和os无关,属于体系结构的知识了[计算机体系架构——一文读懂Cache(一)&nbsp;-&nbsp;知乎](https://zhuanlan.zhihu.com/p/386919471)[Cache与MMU的爱恨纠缠_有cache一定要有mmu吗-CSDN博客](https://blog.csdn.net/setul/article/details/128243607)20.DMA与Cache一致性的问题是怎么发生的,怎么解决21.从high&nbsp;level的角度,不是从code角度。你觉得cache的不一致最直观该怎么解决(比如DMA造成的缓存一致性问题),Linux内核是怎么解决-&nbsp;提供一些API,对于invalid&nbsp;cache情况做操作22.知道C语言里Cache有什么操作吗?比如刷cache,知道含义吗-&nbsp;完全不了解23.用ARM板的时候有去了解ARM体系结构吗,知不知道CPU的特权等级、相关寄存器-&nbsp;不太了解,后面强行借RISC-V回答了一波...24.CPU什么时候会切换特权等级,切换时的具体流程25.OS内核态下CPU是什么特权等级26.page&nbsp;fault的处理流程,什么时候会分配物理页27.从CPU的角度,函数调用时是如何传参的总结:1.感觉STM32手表项目虽然是本科做的,而且我投的是Linux驱动开发,但是面试还是可能会被问到,当时做的时候很多细节都忘了,而且代码设计的也不好,比如用全局变量来在多个任务间共享数据,还被面试官说了。2.简历上的项目一定得完全掌握透彻,就算都是自己写的代码,时间长了也可能忘,还是得再好好复习下3.感觉体系结构这块还是有很多需要学的,比如cache相关的,当时有点被问懵了4.感觉自己的简历可能和底软还是不是很match,简历上4个项目,2个都是Linux应用开发的,这次面试都没被问,后面还是需要再做个什么项目5.面试官问“你懂xxx吗”的时候,不要只回答个“懂一点”就结束了,可以直接开始解释,不需要等他继续问##&nbsp;海康BSP实习&nbsp;4.291.是保研吗?学校的保研是看成绩还是比赛,排第几名2.老家在哪,未来期望工作地点3.本科做的都是MCU吗?这些竞赛挑一个介绍一下4.刚才提到你是离线规划的路径,运行中如果小车超出了离线规划的路径,该如何返回5.在做电机开发的时候可能会关注电机的哪些参数6.在开发电机的时候,会不会实现让电机旋转来让小车精确前进1m这样的功能7.比赛是几个人参加的?本科其他的比赛都是MCU开发吗?8.讲一下研究生阶段Linux主要做了哪些开发9.讲一下uboot、内核的移植也裁剪是怎么做的-&nbsp;忘完了,这部分完全自己给自己**埋坑**啊woc10.字符设备驱动开发的关键函数11.实习能实习多久12.研究生课题做的怎么样13.未来想做算法还是上层应用还是驱动还是硬件,为什么反问:1.如果能来实习,会做哪些业务?-&nbsp;安卓的BSP,和Linux驱动差不多-&nbsp;业务方面,主要是类似希沃教育屏之类的产品,相机是小部分2.面试结果多久通知3.实习生会有培养方案吗?-&nbsp;会有导师带,根据实际情况决定干什么
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务