求职面试-总结的一些
1.自我介绍
- 各位面试官上午好,我非常荣幸参与贵公司嵌入式开发岗的应聘,下面我做下简单的自我介绍。我叫林坚,本科毕业于南昌航空大学,生物医学工程(医疗电子)专业,19年考入华南理工大学攻读生物医学工程,专业硕士学位。本科期间获得三等奖学金,并且参加院足球队,并获得一次冠军,一次亚军,获得个人体育道德风尚奖。研究生二年级发表一篇“柔性可穿戴传感器用于心血管疾病的监测”的SCI综述。现在在marvell公司的固态硬盘固件开发部实习,未来想从事嵌入式开发相关的工作。联发科是顶级的芯片公司。我非常希望能够加入贵公司,做一些有挑战性的工作。
2. 介绍自己的项目
- 讲自己的柔性传感器用于压疮的监测的项目
3.你的优缺点是什么
- 我个人觉得优点是自律性和目标感比较强,有比较强的抗压能力,包括我师兄也是这么评价我的。我每周坚持跑步一次10公里或者keep健身一到两次,坚持每周打一次篮球。这样能够保证我有足够充沛的体能来进行工作。
- 我的缺点就是有时候太过独立,不太喜欢求助于别人,能够自己解决的问题就不会麻烦别人。这样就会导致自己封闭,不太擅长交流。不过我都在不断的克服。
4.最挫折的事情和最自豪的事情(最成功的和最难忘的事)一件让你印象深刻的失败和项目课题上印象最深刻的事
4.技术问题

#define SetBit(x, y) (x |= 1 << y) //置位
#define ClearBit(x, y) (x &= ~(1 << y)) //清零
- 结构体对齐:
考虑两个因素
第一个是结构体本身
第二个是结构里面的成员需要对齐 - 对于volitate和restrict的用法以及memocopy和memomove函数的区别
4.7.4.2、volatile
(1)volatile的字面意思:可变的、易变的。C语言中volatile用来修饰一个变量,表示这个变量可以被编译器之外的东西改变。编译器之内的意思是变量的值的改变是代码的作用,编译器之外的改变就是这个改变不是代码造成的,或者不是当前代码造成的,编译器在编译当前代码时无法预知。譬如在中断处理程序isr中更改了这个变量的值,譬如多线程中在别的线程更改了这个变量的值,譬如硬件自动更改了这个变量的值(一般这个变量是一个寄存器的值)
(2)以上说的三种情况(中断isr中引用的变量,多线程中共用的变量,硬件会更改的变量)都是编译器在编译时无法预知的更改,此时应用使用volatile告诉编译器这个变量属于这种(可变的、易变的)情况。编译器在遇到volatile修饰的变量时就不会对改变量的访问进行优化,就不会出现错误。
(3)编译器的优化在一般情况下非常好,可以帮助提升程序效率。但是在特殊情况(volatile)下,变量会被编译器想象之外的力量所改变,此时如果编译器没有意识到而去优化则就会造成优化错误,优化错误就会带来执行时错误。而且这种错误很难被发现。
(4)volatile是程序员意识到需要volatile然后在定义变量时加上volatile,如果你遇到了应该加volatile的情况而没有加程序可能会被错误的优化。如果在不应该加volatile而加了的情况程序不会出错只是会降低效率。所以我们对于volatile的态度应该是:正确区分,该加的时候加不该加的时候不加,如果不能确定该不该加为了保险起见就加上。
4.7.4.3、restrict
(1)c99中才支持的,所以很多延续c89的编译器是不支持restrict关键字,gcc支持的。
(2)restrict也是和编译器行为特征有关的。
(3)restrict只用来修饰指针,不能修饰普通变量。
(4)http://blog.chinaunix.net/uid-22197900-id-359209.html
(5)关于memmove和memcpy的区别就是
https://www.cnblogs.com/luoquan/p/5265273.html
(6)关于extern关键字(2个作用)
https://blog.csdn.net/u010636314/article/details/50880337
一个是用来代替#include “*.h”
一个是使用extern“c”
4.智力题药丸和白鼠
https://blog.csdn.net/zxd1754771465/article/details/70749290

4.有关项目的描述以及项目中遇到的难点以及未来的规划
5.有关技术
- IIC和链表
- 什么是多态,如何实现多态
- *引用和指针的区别,为什么要用引用,为什么要用指针,你能不能举一个之鞥呢使用指针的场景,引用的地址可变么
- tcp/ip协议中OSI模型中有几层,每层都有哪些协议
- linux相关你读过哪些书,都是谁写的,里面有哪些内容
- 串口协议是用的八线还是二线
- jtag一般用在哪里
- 多线程的问题
- 平时如何调程序,最难以调试的bug是什么
- *堆和栈有什么区别,使用堆有什么好处
- 重写和重载有什么区别
- static的作用,static函数能不能访问其他的非static的变量,为什么,static修饰的函数可以被覆盖么
- struct和class的默认访问权限
- 接口和抽象基类是什么,有什么区别
- 子类可以继承多个抽象基类么,为什么
- 了解字符串么,能不能说下streambuff和stringbuf的区别
- 操作系统的多线程是如何实现的,你如何看待多线程通信
- 多线程解决了什么问题?
- 多线程中为什么存在同步问题?,怎么解决同步问题?同步的方式有哪些,具体怎么实现的
- TCP怎么保证可靠性
- 函数指针和指针函数,哪里会用到
- *new和malloc的区别
- 多态和动态多态以及静态多态,动态多态是如何实现的
- 智能指针
- linux用户态怎么进入内核态
- 条件变量的惊群效应,
- C++怎么嵌入c代码
- C++如何避免拷贝构造
- 数组和链表的区别,为什么数组插入效率低(重写笔试编程题)
- strcpy的返回值是,自己如何实现strcpy(char*src,char *dest,size_tt)
- makefile,如果给你两个.c文件,请你编写对应的makefile文件
- 输出A+B的值
- 一根绳子分成若干份,计算若干份之积,使之成为最大值
- 求一个数的平方根
- shell中在一个目录查找.a文件并且复制到另一个目录中,用什么命令
- vi中删除一行,和跳转到某一行用什么命令
- gcc编译优化用什么参数,gcc怎么让有warning就编译不通过
- linux解释下信号量和共享内存
6.一些其他的问题
- 父母是干啥的
- 怎么看待加班
- 为什么来联发科应聘
- 学过的最好的课和最坏的课
- 怎么处理小组成员之间的关系的
7.可以反问面试官的问题
- 我应聘的部门有所少人员
- 我应聘的部门员工待遇一般处于一个什么样的水平
- 我应聘的部门员工是刚入职的么
- 公司员工的薪资是如何规定的
- 公司有哪些福利保障
8.一些其他的面试题
有关TCP为什么要三次握手
https://blog.csdn.net/sinat_36629696/article/details/80740678
有关中断产生的整个过程:

https://zhugeyifan.blog.csdn.net/article/details/116107587
https://blog.csdn.net/jacklondonjia/article/details/78874421
这里做个补充:
启动过程为什么从0x00地址处执行取出MSP,这个地址存放的就是MSP堆栈指针。复位过程中可能有NMI和hardfault的产生,这样就会进行入栈操作,这里就是为了能够将中断产生后的东西能够后期通过msp进行出栈还原
9.linux启动过程
主要是先按键按下后会进入复位中断函数里面跳转到BIOS上进行执行代码进行上电自检,BIOS运行完会去找寻MBR,之后将运行MBR里面的bootloader程序之后会将默认操作系统的loader程序复制到MBR里面进行运行,之后开始运行内核进行一些参数的设置
参考下面的视频
https://www.bilibili.com/video/BV1L5411W7Tk?from=search&seid=17738703411630859732&spm_id_from=333.337.0.0
10.有关ARM中的各个寄存器的功能
https://blog.csdn.net/wh8_2011/article/details/53195320?utm_term=arm寄存器r0-r4&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-0-53195320&spm=3001.4430
浙公网安备 33010602011771号