最近准备面试了,梳理一些面试经常考试的细节点,不然每次都要去整理,答案未给出。
一、C语言基础
1.1、字节对齐
link Struct和Union字节对齐的内存占用计算方法
link 怎么计算union和struct中字节数计算
1.2、union数据空间大小计算
link 怎么计算union和struct中字节数计算
link union、struct、class占用的字节数
1.3、多级指针和多维数组
link 一维数组名、取数组首元素地址、取数组名地址三者值与含义辨析
link C 语言 —— 指针和多维数组
link 字符串指针数组详解
link [C语言]二维数组传参的格式(详细+总结)
1.4、常量指针和指针常量
link 详解指针常量和常量指针
1.5、C语言编译过程
预处理,编译,汇编,链接
link C语言编译过程详解
1.6、算法、红黑树、二叉树(未研究)
1.7、编写双向链表、链表队列
1.8、一些标准库函数的实现(应届毕业会考)
link memcpy/memset函数的c语言实现
link strcpy函数的实现
link strcmp函数的C语言实现
link strcat函数
1.9、静态内存和动态内存
link 动态内存与静态内存的区别
link 动态内存分配与静态内存分配
二、FreeRTOS 操作系统
2.1、任务状态关系图
link FreeRTOS任务概述
2.2、消息队列、信号量、事件组、任务通知
link FreeRTOS消息队列、信号量、事件标志组、任务通知
2.3、任务切换的细节,PENDSV内部执行的细节
link FreeRTOS高级篇4—FreeRTOS任务切换分析
2.4、内存管理的5种模式,每种模式内存管理方式
link FreeRTOS高级篇7—FreeRTOS内存管理分析
2.5 调度方式
抢占式、时间片轮转、合作式
link freertos中任务的调度方式
2.6、 堆和栈,任务栈区别
link FreeRTOS ------ 栈、堆、任务栈
三、LINUX
3.1、TCP/IP的三次握手,4次挥手
link TCPIP协议详解
3.2、虚拟内存
link 【Linux】Linux的虚拟内存详解(MMU、页表结构)
link 深入Linux内核(内存篇)—页表映射分页
3.3、文件管理 (一般不问)
3.4、 UBOOT启动细节(驱动开发,一般问不到)
四、嵌入式
4.1、UART、SPI、I2C、CAN、LIN、USB细节
link UART详解
link 一文搞懂SPI通信协议
link I2C详解(一)
link LIN总线详细介绍
link USB协议简介
link CAN通信详解
link 以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍
4.2、启动文件分析
link STM32启动文件分析(startup_stm32f10x_md.s)
4.3、 DMA传输
4.4、FAT32文件系统
link 扇区(sector),块(block),簇(cluster)
link 详解FAT32文件系统
link FatFs源码剖析
link FAT32文件系统结构
4.5、bootloader(没见人问过,车企的bootloader还是复杂的)
4.6、IP网络层细节
4.7、蓝牙细节(只会使用芯片厂商接口,未学到手)
link 蓝牙4.0 BLE 广播包解析
4.8、FLASH数据存储段
Code为程序代码部分
RO-data 表示 程序定义的常量const temp;
RW-data 表示 已初始化的全局变量
ZI-data 表示 未初始化的全局变量
Code, RO-data,RW-data …flash
RW-data, ZIdata…RAM
link .bss .data .text 与Code, RO-data , RW-data, ZI-data的关系
五、应用层协议
5.1、MODBUS协议
link modbus的03,06,10,14,15,17指令
5.2、UDS刷写
link UDS诊断看这篇就够了,吐血整理
link 基于CAN总线的汽车诊断协议UDS (网络层 ISO 15765)
link UDS(一)入门概述
link UDS(二)网络层
link UDS(三)网络层时间参数
link UDS(四)应用层
link UDS(五)应用层10/3E
5.3、MQTT协议
link MQTT协议详解