【嵌入式面试】嵌入式知识点面经整理-创新互联
总线协议秋招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/linuxlinux信号机制
问了简历中写的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等)
设计模式单例模式、观察者模式
代理模式、单例模式之类的八股。
为什么饿汉模式线程安全
驱动加载匹配过程,具体讲下
uboot移植流程;
交叉编译怎么做的,相关的gcc链路是从哪里获取的;
项目1.画图解释项目
询问通信api格式;
tlb;
socket编程过程;
什么时候需要Bind,什么时候又不需要?
项目中数据上传用的通讯协议是什么?
如何重构项目中的某些方法
其他数据库的范式(不太记得了
数据库长连接问题
牛客搜索关键词:嵌入式面经
第37页
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页名称:【嵌入式面试】嵌入式知识点面经整理-创新互联
本文路径:http://pwwzsj.com/article/dooojc.html