重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

【嵌入式面试】嵌入式知识点面经整理-创新互联

秋招java失败,2022年十二月份转战嵌入式。 这里主要整理牛客上的大佬无偿分享的一些嵌入式基本知识点面经

创新互联是专业的五常网站建设公司,五常接单;提供成都网站制作、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行五常网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
总线协议

总线协议如果弄清楚了能够在面试中获得加分

用过通信协议(SPI、IIC、UART等),一定要清楚具体细节。spi、ii2c的通信模式,几根线?IIC和SPI区别,UART奇偶校验?RS232、485、CAN、直连还是交叉等、SPI CAN?手绘I2C时序图

画图解释can报文;

项目中用到了spi,spi有几种工作模式,简单介绍一下。

问了modbus协议中的一些内容

通信协议怎么设置的

蓝牙有遇到过丢包吗?

串口数据格式,空闲电平

串口你是怎么接收数据的,怎么判断一帧数据结束啥的?

I2C自己写得还是调库?驱动过哪些设备?通信过程?主机读完一个字节会应答吗,通信时应答和结束时应答有什么区别?

C基础/C++

c++面向对象的三大特征及其内容;

  • 封装:将类的方法或者变量设置为private,其他类不能够访问改类的一些封装成员,这样做的好处是增加代码的安全性。不能通过类直接修改该类的变量。如果要修改变量可以给外界提供方法来对变量进行修改,隐藏了实现细节。
  • 继承:子类继承父类,子类可以继承父类的方法和变量从而省去重复代码的编写。也可以覆盖父类的方法,从而实现不同的子类表现形式。
  • 多态:多态是基于继承实现的,同时需要父类指针指向子类,在使用的时候可以使用一个指针调用多个子类来获得不同的功能。未完

u8类型的变量的取值范围、short大小

C语言的一些基础知识(volatile、const、static、指针之类的);举几个什么时候需要用到volatile关键字的例子。

malloc,在函数里定义一个很大的数组,应该直接定义还是用malloc?malloc使用中的注意事项

也问了static关键字,函数里用static定义的变量,存在哪个区?

C语言指针

静态存储和动态存储区别及引申

string和sizeof区别

switch能不能用浮点型

介绍一下虚拟内存

介绍一下死锁

结构体大小如何计算

vector和map的了解

C++构造函数和析构函数是怎么理解的?为什么说析构函数?有几种构造函数?移动构造

C++的四种类型转换

C++智能指针

strcpy和strncpy的区别、手写strcmp、实现memcpy(chardest,charsor,size_t size);

写一个宏OFFSET,已知结构体中一个成员,求出该成员在结构体中的内存偏移量,#define OFFSET(type,member) ((size_t)&(((type*)0)->member))

堆和栈、内存分区

堆栈溢出和内存泄漏,怎么排查,怎么避免

通过const成员函数实现非const成员函数

虚函数、纯虚函数、虚函数表

结构体中的内存分布等;

c++虚函数表里具体有什么,具体到结构

迭代器有用吗;有;哪些;vector,stack,unordered_map(我是当成哈希表用的);有了解过容器底层吗;map或者set的底层是红黑树,unordered_map和unordered_set底层是hashtable,增改的复杂度;

函数回调是如何实现的(可以翻译为栈帧的工作原理或者调用函数时栈帧是如何变化的)?

变量声明和定义的区别

const和指针组合有几种情况,分别介绍一下。

C语言内存分区,未定义的全局变存放在哪个区。

指针和引用的区别

指针的优缺点

c++程序中,如果要调用c语言写的程序,一般要加extern C,为什么?

vector在内存里面是怎么组织的,有什么特征?

多态是什么?多态是怎么实现的?

C++继承关系

C/C++区别

动态链接和静态链接

STL容器用过哪些,用在什么地方

虚函数实现多态原理

给你1G内存怎么管理?怎么实现动态内存分配?

说了malloc底层实现?操作系统做了什么?

共用体的作用

内存堆叠?

定义一个类,一个成员都没有在64位上占多少字节?如果加一个虚析构函数呢?

struct{char,double,int} 在64位占多少字节;

内存泄漏

头文件重复包含解决

深拷贝和浅拷贝的区别

多线程如何保证线程安全

问结构体内存对齐问题,如何解决因为对齐产生的内存碎片

Volatile

链接过程涉及到的文件类型,这个问题感觉他问的不太清楚,提示让我从堆栈角度分析

如何将左值强制转换成右值(这里开始考查C++11了)

使用auto在程序中是否会显示变量类型?

你最喜欢C++11的那些特性?

static在C语言中的函数和C++的对象中有什么区别

指针和数组的区别

16位机器中,char* 和 int* 的内存大小

什么是函数指针,指针函数

struct和class的区别

virtual函数的作用

讲一下都有什么数据结构

平衡二叉树有什么特点

glibc的内存管理的实现

static 变量存储位置;

typedef和#define

指针数组和数组指针;

数据结构与算法

栈和队列

数组和链表

队列,栈,二叉数介绍

3种排序

链表有哪几种,双链表删除怎么操作

写代码判断链表是否有环

写代码判断链表环的入口结点,然后输出

十分钟写一个输出二叉树的深度

什么样的场景选取不同的数据结构

链表找环、小于n的质数、二叉树前序遍历(递归+非递归)

单向链表的排序;

快速排序;

页面置换算法(FIFO先进先出,LFU最不经常使用(访问次数最少)和LRU淘汰最久没有使用使用的算法

已知有一个硬件计数器控制该计数器有两个寄存器,一个用于设置时钟的初始值,一个用于设置时钟的门限值,当时钟初始值设置好后开始计数,当计数值达到门限值后,便会触发一个函数的执行。编写两个函数,分别实现:
•在任意时刻能够设置多少时间后触发某个函数的执行;
•在任意时刻能够取消之前设置的执行任务;
[解决思路是用链表实现一个最小优先队列,设置任务对应着队列的插入,到时间执行和删除对应着优先队列的结点的删除,触发时跳到相应的函数中]

假设有一个很大的文件,里面的数据结构如下:
XXX.XXX.XXX.XXX(IP地址) 天气;[如192.168.1.1 晴转多云];问怎么用最快的方式找到一个地区的天气状况。
[我的思路是在存储文件的时候就将每一条信息对齐(即占用大小一样的地址),然后使用二分法搜寻每一个IP段的位置,移动文件指针即可(O(lgn));]

手写程序判断大端小端,

手撕–数猴王

算法:IP地址分割(leetcode93)

链表的插入

怎么用两个栈实现一个队列

字符串查找子字符串,编程题考查sizeof等

手撕代码(简单,但是忘记了,好像是求素数)

手撕(宏定义交换两个数、把数字转换为字符串、判断程序对错(记得是函数返回的一个局部变量的指针出错))

计算机

判断计算机是大端还是小端。

内存对齐

介绍一下进程跟线程的区别

进程和线程、同步、锁

优先级反转、优先级继承

为什么内核区要放在虚拟内存的高位地址

问了一些进程间同步及通信的手段,也就是自旋锁、信号量这些东西的原理

实现自旋锁;自旋锁的底层实现原理?为什么自旋锁不能睡眠

内核同步有哪些方式

共享资源如何避免多个线程抢占,有什么方法(线程运行状态)

线程锁

线程同步

互斥锁原理

如果有一个线程长时间占用资源怎么办?

介绍操作系统;

说说内核态和用户态

说说缓存吧!为什么操作系统有缓存机制?

进程什么情况下会发生调度!

操作系统怎么管理物理地址的?

如果向0地址写或者读数据 操作系统会发生什么?

高速缓存为什么有用(局部性原理

进程调度算法(先来先服务,短作业优先,最短剩余事件优先,时间片轮转,优先级调度?各个调度算法的优缺点

用户和内核切换的时机?

哪些通信方式是单向的(管道和信号),哪些需要借助内核

计算机工作原理?你知道啥说啥?

STM32

核心电路主频,外设,选型依据?
参考野火视频教程stm32的选型
从内核上分有 Cortex-M0、M3、M4 和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。基于 Cortex-M3 内核,主频为
72MHZ,F4 代表了高性能,基于 Cortex-M4 内核,主频 180M。之于 F1,F4(429 系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了 LCD 控制器和摄像头接口,支持 SDRAM,这个区别在项目选型上会被优先考虑。
在这里插入图片描述
明确了大方向之后,接下来就是细分选型,先确定引脚,引脚多的功能就多,价格也贵,具体得根据实际项目中需要使用到什么功能,够用就好。确定好了引脚数目之后再选择 FLASH 大小,相同引脚数的 MCU 会有不同的 FLASH 大小可供选择,这个也是根据实际需要选择,程序大的就选择大点的 FLASH,要是产品一量产,这些省下来的都是钱。有些月出货量以 KK(百万数量级)为单位的产品,不仅是 MCU,连电阻电容能少用就少用,更甚者连 PCB 的过孔的多少都有讲究。项目中的元器件的选型的水很深,很多学问。

嵌入式系统启动流程简介。
STM32 有三种启动方式,从 FLASH 启动(包含系统存储器),从内部 SRAM 启动,从外部 RAM 启动,这三种存储器刚好对应的就是M0、M2 和 M6 这三条总线。内核Icode总线将程序读取到自己这里来执行。

ARM的体系结构了解吗?

问了项目用了STM32的哪些外设?这些外设功能分别干什么?

结果问到项目用了哪些数据,怎么采集的,提示我把ADC给忘记了。

SD卡读写部分。

FLASH读写

串口+DMA收发数据,如何配置DMA

我是以x86架构回答的设计rbp和rax寄存器,arm架构操作的寄存器有所区别

input输入子系统,怎么实现的,怎么和中断联系起来

如何在中断里面等待数据准备完成

中断有传参和返回值吗,为什么

bios是什么?bios有什么作用?怎么引导后续的启动?

DMA的配置

延时怎么写的?说systick,然后又问我systick中断相关的。

高优先级中断在执行时有一个低优先级触发,高优先级结束后会不会执行?

外部中断的两种触发方式,低电平触发的话如果一直低电平会一直中断吗?

编译流程

STM32采用小端模式,常见设备的大小端模式:ARM既可以工作在大端模式,也可以工作在小端模式

比如中断处理的步骤。基本都答了。

STM32自带ADC相关参数

MMU是什么东西?MMU是如何实现虚拟内存和实际物理内存的切换的?

adc基本原理?经过哪些流程?

FPGA和MCU的区别是什么

计算机网络

tcp建立连接和收发数据用到的函数

TCP为什么能保持稳定(感觉像开放题)

4.TCP/IP模型 HTTP FTP UDP

以太网的MAC地址占多少字节?

TCP/IP熟悉吗?TCP有一个ACK和ACK的number有什么区别?

GET/POST区别

计算机的存储结构(寄存器,高速缓存L1L2L3,贮存,本地磁盘等

计算机网络有几层

拥塞避免,路由选择哪一层?

http的状态码,400常见的几个状态码

ARP协议是什么?在那一层

FreeRTOS/linux

linux信号机制

问了简历中写的FREERTOS,信号量消息队列,多任务调度

RTOS和Linux的区别

FreeRTOS和Linux哪个熟些,用FreeRTOS时,创建了几个任务,任务怎么通信的?如果give 10次信号量,那么take信号量是一次还是十次?

问了信号量怎么用。

linux命令 怎么在文件夹中查找关键字 并排序。

Linux下有一个fork()函数有什么作用?创建成功父进程返回什么?子进程返回什么

信号量怎么通信?(辅助共享内存的手段

什么是临界区(答错了,答成了临界资源,临界区是需要访问临界资源的代码

make、cnake说一下

linux进程有几种状态?(我:是6种吗?面试官:不是,是3种。我:呃,那我应该不太了解。然后是面试官自己回答这个问题…)

问Linux socket编程步骤

问使用什么命令查看socket编程的ip和端口状态

问条件变量的函数名是什么

介绍一下libevent库

问vim命令,编辑模式,命令模式,末行模式

问linux查看内存命令,查看cpu占用命令

问一般怎么调试代码

Linux的设备:字符设备、块设备、网络设备

Linux的一些基本命令(ifconfig、touch、vim等)

设计模式

单例模式、观察者模式
代理模式、单例模式之类的八股。
为什么饿汉模式线程安全

Linux驱动

驱动加载匹配过程,具体讲下

uboot移植流程;

交叉编译怎么做的,相关的gcc链路是从哪里获取的;

项目

1.画图解释项目

询问通信api格式;

tlb;

socket编程过程;

什么时候需要Bind,什么时候又不需要?

项目中数据上传用的通讯协议是什么?

如何重构项目中的某些方法

其他

数据库的范式(不太记得了

数据库长连接问题

牛客搜索关键词:嵌入式面经
第37页

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:【嵌入式面试】嵌入式知识点面经整理-创新互联
文章路径:http://cqcxhl.com/article/dooojc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP