文本描述
技术面试
首先是问项目,就聊天,了解一些项目的实现,只要项目是自己做的,问题不大(30min不到?)然后是问一些c语言基础和操作系统(这是重点重点重点)我记得的问题如下:
volatile的理解(我的可能理解不够,说的不够详细)
线程有哪些资源是共享的,哪些资源是自己独有的,栈是自己独有的吗
进程间通信的方式,栈是进程独有的吗
可执行文件的结构,每个区的功能(就是.bss之类的),bss和data分别存储的是什么,未初始化的和初始化了的是否放在相同的区域
char array[] = "Hello"; array存在哪里?hello又存在哪里?他们之间是独立的吗?sizeof(array) strlen(array)分别是多少
指针sizeof是多大
静态变量、局部变量、全局变量的生命周期;定义了全局变量,是在哪一步被初始化的(具体对应什么语句),是在main前还是main后
程序装载的过程
malloc和new的内部实现原理,用了什么系统调用,具体操作的函数名是什么
C++有哪些构造函数,说说区别
拷贝构造和重载等于号的区别,然后面试官给出两条代码问调用构造函数的次数
map的实现原理,底层是什么
红黑树的查找时间复杂度是多少
hashmap的查找时间复杂度、插入时间复杂度(回答的不够确定)
红黑树的查找效率比hashmap低?
mmap,内存映射的理解
改错:题目:给出一段代码,看看是哪里出错了,具体的不太记得了,就是在函数内部定义了一段字符串,用字符指针指向该字符串,因为它是局部变量,所以不能直接返回局部指针。
手撕:题目:给出一个无符号数,如0x1234,返回又移动n位之后的值,如右移4位,变成0x2341题目很简单,easy中的easy,但是我没有很好的考虑边界的问题,如n如果为负数的处理等等,并且使用的变量没有用面试官的标准stdint.h
小总结:问的比较基础,主要还是c和操作系统,面试官说时间不够了,不然还会问计算机网络,我认为如果是cs科班的,这些问题都是必会的(或者说是必须要会的),如果本科跟我一样是电子的,可能需要需要补充很多操作系统的知识,毕竟电子本科的os真的是水课,dddd;另外一个就是面试强度相对来说是比较大的,全场100分钟,这是我第一次面这么久,问题可能不难,但是面的久了,可能自己反应速度就会变慢,对于一些不清晰不熟悉的问题,很可能会答错。
HR面
这部分主要是聊生活、爱好、自己人生规划,一般人都不会在这里挂吧本来以为HR面是最后一面了,后来HR说“如果需要的话,还会有下一轮的技术面试”,OK,那么继续等待
电话聊天
本来以为这轮是主管面的,结果是一位乐鑫的工程师跟我聊天,通知我面试通过,跟我聊以后要做的事情,介绍业务的具体应用场景,很愉快,总共就8分钟。这一轮仅供参考,我的舍友技术面总共面了3轮,我就只有一轮,可能还是情况不太一样。