牛客嵌入式面经

大疆嵌入式

一面
简单说说进程调度和进程间通信。

大疆嵌入式

二面
LInux环境C/C++编程,Socket,Uboot,内核,根文件系统移植。

介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice命令)。

详细聊了进程间共享内存的分配,在哪个空间,读写速度怎么样,通信是否需要经过内核。

mmap,共享内存的API。

联发科嵌入式

一面
内存模型,变量都定义在哪个地方

算法题:在一个字符串里面删除另一个字符串里面出现的字符

二分查找

二面
你理解的嵌入式开发

大疆嵌入式

一面
说说SPI协议

delete []和delete的区别?

C++11的新特性有了解过吗?

虚函数是用来干嘛的?虚函数机制怎么实现的?虚表指针在内存中的存放位置?

智能指针用过吗?weak_ptr是用来干嘛的?怎么保证用weak_ptr不会崩溃?

二面
用到的STM32芯片硬件有了解过吗?(只说了内存、Flash大小。。。)

STM32中断控制器是什么?

C++多态怎么理解?C++有哪些多态的典型例子?

进程间的通信方式?线程之间的通信方式?

华为消费者BG终端芯片嵌入式

堆和栈的区别,各自用在什么地方

进程和线程有什么区别

相同进程的多个线程可以共享什么资源

多进程或多线程同步可能会造成什么问题

死锁和优先级反转,分别说下是如何造成的

中断和信号量的区别和各自的底层实现原理

中断向量表一般放在哪里,它有什么用

segmentation fault的原因是什么?对应的中断向量表的哪一个异常向量?

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

每个项目问了一下,介绍下里面的工作量,并且对里面的知识点(操作系统、 驱动、算法这几个大类知识点)进行简要的考察。

操作系统有哪几种锁?

如果我在中断里想和一个用户进程做同步,该使用哪种锁?

如果中断里一定要使用会造成阻塞的锁,那么系统会怎么样?为什么

小米嵌入式

几个RTOS的问题
1,RTOS的实时性是如何保证的
2,任务之间是怎么通信的
3,二值信号量和互斥量的区别
4,任务通知是怎么实现的

接下来问我Linux用的多吗

TCP问了几个问题
1,TCP的三次握手
2,TCP和UDP的区别,为什么不用UDP
3,什么情况下使用UDP

三道算法题
1,反转字符串
2,判断链表是否有环
3,数字字符转换成IP地址

简单说一下内核是怎么调度的

判断一个数是不是回文数

CVTE嵌入式

列举一下Socket中UDP/TCP 相关的封装函数

UDP/TCP区别

malloc和new的区别

宏定义在什么阶段

全局变量、局部变量、静态变量存储在什么地方

翻转单词顺序 the sky is bule 转为 bule is sky the

联发科嵌入式软件

什么是系统调用

虚拟内存,32位机虚拟内存分布,虚拟内存怎么到物理内存(MMU)

Linux文件系统了解不

手撕代码 链表第n个位置插入新节点

为什么C++可以函数重载,C不行

项目里用到epoll怎么效率就高了,用个循环不行吗

CVTE提前批嵌入式(Linux)面经

说一下C和C++的区别? C++到C有哪些类型的加强,举一下例子? 讲一下继承和多态?(说了继承的作用,多态实现的步骤)多态的是如何实现的?(答了类的底层布局,虚指针,虚函数表那一套), 虚表存放在内存的什么地方?(答 常量段,后面查了下:linux全局数据区,windows常量段)

C++有很多设计模式,你了解哪些? (单例)说一下单例的设计思想。(balabla)为什么这样设计?(只答了节省内存空间)

操作系统了解多少? IO、文件系统、内存、进程调度哪个最熟悉?挑一个?(我 虚拟内存吧)讲一下你的理解我再切入。(我 balala讲了为什么要虚拟内存,虚拟内存有什么用)然后他问 进程的地址空间是由什么决定的?(我系统的位数)这个位数又是什么位?(地址总线的位数 [还好懂点硬件:)]))假如一个32位的电脑它的虚拟内存多大?(为2^32,4G,实际只有3.几G)为什么只有3.几G?(为维护虚拟内存自身有一定的开销),什么开销?(我,只是了解,不确定。)

我的磁盘里有个文件,应用程序打开这个文件并且使用里面的东西,这个过程是怎样的?(我 调用read函数, 后面直接说读文件描述符。。 他要的是底层原理。。)。用户态和系统态知道吗?(babala八股文)那如何进入内核态(恍然大悟先有 系统调用)。操作系统如何收到系统调用?(不会。。盲猜中断)什么中断?(你说的这个例子里面的吗)是,软中断还是硬中断(软中断吧)软中断和硬中断有什么区别?(硬中断是设备发出的,软中断不是太了解)哈哈,你自己系统去看一下,系统里面做了一个表通过中断来触发空间的切换。

操作系统API,内存数据的搬运,内核空间到用户空间的搬运,用那个函数做这个动作?(我,一脸懵逼。。 我mmap)面试官纠正我,这是内存映射关系,不算搬运。。你知道mmap的原理是什么吗?(虚拟内存到物理内存的映射)你确定?哈哈。 继续怼内核空间到用户空间搬运的函数。(回答不上来。。。。 后面查了知道是cocy_to _user)

进程和线程的区别。(八股文一顿背)

linux创建一个进程调用那个函数?(fork)底层呢?(vfork)再往下看呢? (再往下没有看)你下面可以再去看一下。(下面一查是 clone)

多线程学过吗?(学过)用过什么线程同步的方式?(互斥量)说一下为什么用互斥量(为了线程安全)你当时为了保护什么数据?(说自己的学习多线程的时候用的)了解

你在windows下编程多还是linux下多?(总体来说windows)windows下用什么 IDE(vscode),linux下呢(也是vscode)

一个源文件到可执行文件的过程?(预处理,编译,汇编,链接)。链接阶段做了什么事?(汇编阶段生成的.o文件和系统调用的.o文件进行链接)链接的具体动作,比如你说的系统调用的链接过程。链接这个词很宽泛你细化一下他为了解决什么问题?(不会)

C语言整个文件里面没有main函数可以编译通过吗?(不行)为什么(main是程序的入口函数,它去链接别的.o文件,没有它链接不了)假如我想实现我锁编写的程序没有main函数,还能生成可执行程序怎么搞?(我,可以通过宏来实现)具体怎么实现(用宏替换main)[后面查了一下,其实他想问的是在main函数执行之前 _startup函数,编译的时候可以设置程序的启动点为其他函数编译能通过]

你对嵌入式了解多少?(讲了自己本科搞单片机,硕士后面主要学习软件了,他可能看我简历,说我 已经纯软了。 笑)你自己的一个技术方向是怎么样的, 你对行业了解多少?(讲了嵌入式可以搞驱动,还有应用开发?)你想搞哪个? (应用开发) 那你最近有看什么书吗?( 他想问有没有看与嵌入式相关的。。。 我, 算法和语言看的多一些)讲一下什么算法(快速排序,归并排序, 深度优先遍历,广度优先遍历)说一下深度优先和广度优先的区别?(balabla)他们用什么数据结构(栈和队列)。还有看什么书吗?(他还想追问有没有看与嵌入式相关的。。。 我: 计算机网络)网络分层7层的(balabala)你主要学哪块?(我 传输层)。TCP和UDP有什么区别(八股文一顿背)

CVTE面经

笔试
二十五道不定项选择题,其中有多选,有单选,自己判断,内容包含了c语言,c++,数据结构,linux操作系统,计算机网络,串口,USB,SPI,IIC等知识;

一面:
1.c语言中的malloc怎么使用,有哪些需要注意的,与calloc,realloc又有什么区别,与new有什么区别?
3. 虚函数指针及其原理,多态的实现条件与原理;
4. 驱动相关的问题;
5. Linux系统的启动流程;
6. IIC总线协议原理,描述时序图,上拉电阻与下拉电阻的作用,IIC总线最多能挂载多少个设备;
7. SPI协议相关;
8. c程序内存布局;
9. const关键字的作用,static关键字的作用;
10. 树的相关知识;
11. Linux基本命令;

二面:
6. 网络socket流程;
7. linux中有哪些锁?死锁;
8. TCP和UDP的区别?什么是三次握手,四次挥手?TCP协议靠哪些机制保证了数据的可靠传输?
9. socket默认使用的是TCP协议还是UDP协议?如果想使用UDP协议怎么设置?
10. 二叉树的遍历方式;
11. 结构体对齐及优化;
12. linux下有哪些设备,他们有什么特点,彼此的区别是什么?靠什么实现的;
13. arm寄存器组有哪些,13,14,15号寄存器的作用,PC寄存器的作用;
14. 堆栈的区别;
15. linux怎么切换网卡上网,你怎么判断网卡是否可以正常上网的?
16. 串口通信协议相关知识;

最后是一道有关链表删除结点的算法题。

Guess you like

Origin blog.csdn.net/weixin_44576259/article/details/120471832