必要需要吹一波乐鑫,面试两个小时,面试官全程引导你,不会的地方还能鼓励你,让你感觉就是在聊一些技术,很专业,真的爱了; 面试官基本上完全按照你的简历在问,首先是项目经历,会跟你深入讨论细节;你不会的有引导,引导还不会的给你讲明白哈哈;因为有一个电赛国奖,比赛的细节也被问了一下; 专业技能的话,虽然我写了C++,但是因为技术栈是C,所以问的C语言的语法细节,操作系统重中之中,网络协议的没怎么问;因为简历中写了基本的外设接口,也问了一下常用的SPI等通信协议; 就想起来这么多了,大家加油! 项目经历 生物电信号采集系统开发(15分钟) 1.介绍一下项目的技术指标和你主要负责的部分: 2.STM32中主要使用的模块: 3.ADS1299的数据传输细节 5.STM32如何实现多片ADS1299的扩展,内部采集到数据后的存储和传输过程: 6.上位机都有哪些功能,是怎么和STM32进行通信的,STM32里面是怎么处理上位机控制逻辑的 C++高并发服务器框架开发(25分钟) 1.介绍一下项目中的关键技术(协程,hook) 2.非对称协程调度模型是什么,和对称协程的区别是什么;协程调度的细节 3.有栈协程和无栈协程的区别--不会 4.Epoll模型介绍,与select/poll的对比 5.最小堆用什么实现的,如何实现最小堆的插入和删除功能 6.hook技术介绍,为什么要使用hook 比赛经历 我听你说你本科期间参加电赛,具有一定的嵌入式经验,能介绍一个有代表性的比赛吗,又问了比赛中STM32的使用细节,比赛的具体细节 专业技能(40分钟) 1.编译链接的过程 2.C语言struct内存对齐 3.#ifndef, #else, #endif 5.#define的使用,如果定义一个函数功能 6.给定一个struct,设计三个接口函数,第一个返回b的地址,第二个传入一个无符号32位整数,替换掉e,第三个函数穿传入一个字符替换c,并将其他位置全部置为0; struct Node { char a; char b; char c; char d; int e; }; 7.设计一个struct总长度为64bit, 里面下面这些变量(面试官说C语言位操作,但是俺不会) 0-3 bit a 4-11 bit b 12-31 bit c 32-63 bit d 8.Linux系统常见命令 9.进程的创建过程 10.进程中的写时拷贝 11.进程和线程的比较 12.CPU内核的调度 13.进程的调度,调度算法,完全公平调度(vruntime是怎么算的)、优先级设置、非抢占式和抢占式调度 14.操作系统硬中断和软中断 15.TCP/IP的三次握手和四次挥手 16.UART、IIC、SPI通信协议对比 编程题(20分钟) 设计一个struct数据结构,用它来实现链表,然后给定一个链表,给定left, right值将left和right区间内的节点翻转;leetcode中等题,链表排序2, 等你写完面试官会让你考虑一些极端情况,比如right的值大于链表长度;