数据库内核开发 - 社招面经2
关联:百度 涛思数据 数翊科技 质变科技 TiDB 偶数科技
背景:9本 3年经验 社招
所有面试都有的自我介绍,离职原因,上一份工作的项目提问和反问环节都略过。
整体感受:
1、今年初的面试,感觉对项目和底层问的多,而不像前几个月爱问很多常规八股和DB基础概念;
2、年初机会也比年底多,DB内核方向很多公司都有hc开始招聘了;
3、初创公司感觉难度和大厂相当,并且算法题比我面过的大厂都稍难一点,算法现场不能给出最优解都会挂,所以拿到面试机会了就当做面大厂去准备吧。
欢迎交流。
百度 - Doris AI搜索引擎
4、DB
OLTP olap 区别,理解;
行存 列存使用场景?会怎么推荐给客户?
了解过Doris吗?
5、c++;java怎么样?
三种智能指针;weak-pointer怎么确定指向的对象是否有效?
virtual关键字作用;
lambda表达式,捕获参数,要注意什么?
C++原子变量,使用的内存模型是什么?
模板,完美转发(思考了一下没有问);
C++手动实现了析构函数,那么不会再默认生成哪些构造函数?
左值l,右值r,x值?怎么理解左值右值的区别?
gdb如何调试正在运行的程序?-p attach上去会阻塞进程,生产环境怎么gdb调试?或者说怎么抓取snapshot分析?怎么查看堆栈;
怎么排查死锁问题?
内存上涨,日志不全,怎么排查?
CPU瓶颈,怎么排查?
C语言,怎么跳到main函数开始执行的?
6、操作系统 Linux
线上看日志,用什么命令?
查看日志,如何检索某个字符串?
线程崩溃,会导致进程崩溃吗?
调试函数,如何确定哪些变量在堆、哪些在栈?栈有最大限制吗?
函数中定义了一个10M的数组,不涉及申请内存,会出现什么情况?
怎么根据进程PID确定它监听的端口?
7、网络
tcp udp属于哪一层?
arp协议了解吗?
http属于哪一层?
udp相对于tcp的好处?
tcp三握、四挥过程?
没有手撕,可能因为八股/场景题答得太差了;
面试官总是思考一阵子才给出问题,不知道是面试别人的经验少了还是KPI的成分多;(也可能,面试官很久没面初级在苦心思考八股文???)
但是提问都挺有质量的,收获很大。
涛思数据 TDEngine
3、DB
事务四种隔离级别;
读已提交的实现?
undo log会引入什么问题?
间隙锁是什么?
幻读的例子;
4、算法题:合并数组
数翊科技opengauss
项目问的多些,两个面试官前一个小时都不开摄像头,然后提问的面试官下线;
剩一个leader级别的这时开了摄像头,继续做一些开放性提问:base地,离职原因,绩效,新工作期望,对加班的接受程度,喜欢独立开发还是共同协作,晨会or周会形式的看法,工作期间和同事交流工作多还是生活多,管理喜欢平时松考核严还是相反。
8、DB
mvcc的流程;
9、算法题:
两个数组,互相交换一个元素,让数组和相等;
10、C++
引用和指针的区别?
一级指针和二级指针的区别?
函数指针和指针函数的区别?
质变科技一面 HTAP
不用开摄像头。
流程比较正规,面试官会问方便面试吧?确认面试,介绍此次面试流程:项目-基础知识-反问-bugfree平台笔试
共计100分钟左右
1、口述算法题解法:
假如现在我有两个单链表,一个pa,一个pb, 两个无管理的链表,我现在怎么判断这两个单位里面有没有相交?以及如果相交的焦点在哪里?
2、
OS:计算机系统调度里面有进程调度,对进程调度通常分为和抢占式调度和不可抢占式调度这两种方式,哪一种对系统的开销会更大?为什么。切换的损失具体是指什么?
OS:进程的内存分布
3、场景题:
int的数据的数组本身是一个无序的,找出两个下标,这两个下标所指向的元素之和等于100,我需要把这个所有的下标队都找出来。同时下标对不能重复使用。
有一个文本文件,比较大,有100g,每一行都是一些单词,这些单词是空格隔开的,有一台机器有十兆的内存,磁盘呢有十个t. 文本文件的所有单词,它去重之后,它的大小也超过了100兆,每一个单词是小于100个字节的,现在需要求出文本文件里面频率出现最高的前三个单词。
有一个文本文件,,每一行有一个用户的id,这第一列是用户的id,第二列是用户登录系统的登录时间,第三列是用户登登出系统的一个下线时间,测量时间是精确到秒的。现在文本文件记录了某一个系统,他一天的这种系统的一个上线,下线的一个记录时间就是一个日志记录,然后现在需要需要给定任意的一个时刻,知道这个时刻当时有多少的用户人数
4、笔试:共45mins
bugfree平台,在线coding,无需编译,只实现核心函数
多个有序数组,找重复元素;
字符串解码:栈or递归两种实现
质变科技二面
依旧是不用开摄像头,在线笔试题,面试官会先告知此次面试的环节和预估时间。
DB性能瓶颈定位?执行慢了怎么排查? perf+执行计划
gdb,有些变量因为优化级别,看不到怎么办?
如何调试多线程的core?
做过的项目,代码行数最大多少?
ai有了解吗?有使用吗?cursor?copilot?
mysql多版本控制,同时更新一行?
mysql行锁实现?默认隔离级别?
RC RR区别?
数据库性能指标,比如count(*),每秒多少行?
经典算法题:KMP
bugfree平台,在线coding,无需编译运行,只实现核心函数
//评测题目: 使用C/C++实现一个函数,int* match (const char* substr, const char* target)//返回substr在target中出现的所有位置
刷题少了,二面没过。
PingCAP - TiDB
流程依旧很舒适,不用开摄像头,面试官会先自我介绍。不过感觉问的比较难,面试官直接结合项目来出场景题。
数据库TRXID生成规律?
线程间通信,接触过哪些?
C++用的多?用到哪些标准、新特性?
移动构造函数,如何移动外部资源或文件描述符fd?
哪些数据库用了raft?选举结束,要发送一条空的log entry,是为什么?
code:有序二叉树构造(不用平衡)
可以用copilot,但这样会在细节问的更深。
简单实现、通过编译后,要求改造成智能指针的写法; acm模式,构造输入。
好难,修炼修炼再投吧。
偶数科技
hr很专业,态度好,有礼貌,提前说明考核重点及岗位指责。
面试不用开摄像头。
- 一致性协议了解哪些?raft怎么选leader,每个节点怎么确定要给谁投票?网络分区问题怎么解决?
- lsn-tre介绍,memtable在宕机时怎么保证不丢数据?
- 对mvcc的理解?如何确定历史数据不在被需要?
- 数据库性能优化怎么做?
- 网络方面,有遇到哪些性能问题?
- tcp udp区别?tcp流量控制怎么做?接收方接收窗口满了,此时会发生什么?
- 网络七层协议?上层传输的数据超过下层接收能力,怎么办?
- RAII
- C++智能指针,shared_ptr何时释放资源?引用计数保存在哪里?unique_ptr如何保证独占?
- std::move具体做了什么?或者说在语法库中怎么实现的?
- 算法题:int数组,相邻不等 找出极大值(该值比前后相邻元素值都大)logN时间复杂度
acm模式,构造用例,编译运行
算法题就是用二分法,不过好久前做过类似题忘记了,现场没想出来最优解。
这个岗位据hr介绍有四轮面试,并且前三轮都是技术面,hr和面试官的意思都是想要基础好的、不太看重DB背景。