一面
基础知识多,会随着你的回答往深了挖。
- TCP三次握手,四次挥手
- TCP如何保持可靠?(两个大点)
- 流量控制的四个核心算法(因为我答第三题提到了)
- Mysql的数据库索引是什么?
- B+树相对于B和红黑树的区别?
- B+的叶子节点用双指针链接除了可以范围查询还有那些优点?
- 红黑树有什么缺点?
- 事务的隔离级别,Mysql默认是使用哪一种?
- 事务的隔离级别是如何实现的?实现机制是什么?
- 详谈MVCC如何工作?
- 线程和进程的区别?
- 线程既然是轻量级的,那么进程上下文切换会比线程多哪些操作?
- 对于一个进程多个线程的单片机系统,是否需要用锁对共享资源进行控制?(例如 i++操作)
- 进程间通信的方式?最快的是?
- 什么是系统内核态,什么是用户态?
- 什么时候可以进入内核态?我的回答是中断
- 除了中断呢?系统调用是不是一种方式?
- 用嘴描述快排,说明时间和空间复杂度。
代码:
- select * from A where idx = ‘5’
select id from A where idx = ‘16’
idx is index,id is primary key
说明查找区别?效率? - 智力题:100个金币,一个坏的,不知轻重,如何用最少的次数找出来?次数是多少? (题目不难,细想一下就能解)
- 代码:一排孩子分糖果,每个孩子都给定分数,要求相邻的孩子分数高的一定要比分数低的孩子得到的糖果要多,其余人每人一个。
反问面试官
一面面试官很和蔼,问的问题也不难,第二天就受到了二面通知。但是面试时间间隔了一周
二面
基础面(二面碰到的基础和八股文有点区别了,问的多是你自己的理解和临场回答)
- 先来就是问简历上的问题,越难约问。
- 进程间的通信方式?
- 请你详说内存共享,管道,信号量和消息队列
- TCP / UDP 的区别?详说TCP握手挥手
- 为什么你说TCP可靠?是怎么保证可靠的?
- 你怎么理解你说的面向报文和面向字节?
- 为什么UDP不可靠?你提出一个最简单的修改方式让他可靠怎么做?
- UDP对数据是如何分片的?最大的长度是多少?
- UDP的首部有多大?有哪些字段?
- MySQL有哪些搜索引擎?
- 其中innoDB的隔离级别和其实现基本原理
- 事务的特性和实现的原理?ACID
代码:
- 智力题:25匹马,5个赛道,如何最快找出25匹马里面的前三名?
- 代码题:给定一个数组序列,先按序上升再按序下降,如何找出最大数?进一步,如何找出给定的数? 不可以遍历。
反问面试官
二面体验也很好,题目也不难,面试官也没什么头发···
三面
三面让我彻底失去了面试的兴趣,本来第二天收到了二面通过的通知,但是三面又得8天后,感觉好像不太缺人··· 结果八天后通知我leader生病了···又要推迟一周··
leetcode最后刷到180左右就看原题了。结果三面来的面试官非常年轻,内推学姐说并不是leader。速速懂了,要被润了···
三面由于没有做记录,两个月忘干净了···只记得除了简历还问了非常多Java底层机制和CPP的OOP代码特性,计网和数据库基本就是带过的问题,还给了一个sql代码题和一个leetcode中等,sql没做出来···这次面试我记得有两个(好像是Java和OS结合相关的)问题是我完全不了解的。
最后问到了实习时间,我坦言之年后估计只有不到两个月的自由时间(面试从一面到三面持久了一个月)然后要毕设。面试官提及时间远不够,连看文档都要1个月时间···遂结束谈话。
面试感悟
由于自己课业基本没有安排突发奇想就让学姐内推了这次面试,虽然最后三面被G了但也是一次非常重要的经历,自己准备面试的时候重点关注代码题了,结果最后代码题其实没有很难,三面基本都是15min就写出来,反而对简历挖的很deep。总而言之,等毕设做完我再来润。
ps:字节用飞书面试后代码题就是全代码模式了,不能只写核心了。