8月30投递9月4日一面:自我介绍介绍一下SPI IIC UART CAN的区别(因为项目里面有用到) 主要根据同步与异步分开陈述 SPI IIC同步 CAN UART异步 再对他们的时序简述一下FreeRTOS移植过程 怎么移植的就怎么讲,主要是项目内容C语言的结构体对齐 简单讲述一下,自己举了个例子反问9月14二面:自我介绍还是讲述一下一面几个通信协议的时序CPU中断响应流程 很经典的问题,答出来了volatile关键字的作用 防止编译器优化,有些变量会因为被频繁使用,编译器优化后不是在内存中取值,导致一些后果,balabala下面这个结构体32位机对齐typedef struct{ char a; int b; char c:2;}x_str;改一下,再来一个typedef struct{ short a:7; int b; char c;}x_str; 冒号差点错了,不过大体上没啥问题看程序,哪里有错char * getName(int id){ struct city { int id; char name[8]; }; struct city data[3]={{0,"Beijing"},{1,"Nanning"},{2,"Shenzhen"}}; for (int i = 0; i <= 3; i++) { if (id == data[i].id) return datal[i].name. } return NULL;}int main(int argc, char *argv[]){ char *p ="Unknown City"; char *q = NULL; for (int i = 0, i <= 3; i++) { q = getName(i); p = malloc(strlen(q)); strcpy(p,q); }}反问期待三面