数据库内核开发岗位,时间线:8.3 一面,8.7 二面+三面,8.9终面(终面挂)
一二面都是做题+各种知识考察,三面偏工程问题+聊天,四面是线下老板面,当场做题没做出寄了
一道题目:求x的范围,使x的阶乘有k个后缀0(找规律看5的个数)
c++11新特性,介绍一下智能指针,智能指针怎么实现的,项目里怎么使用的
malloc底层原理,malloc是不是系统调用
平时遇到过什么内存问题
内存泄漏中虚拟内存和物理内存什么表现
git rebase
有没有了解持续集成(CI)
LRU为什么线程不安全,怎么改进
有没有做过什么性能调优
给了篇论文读10分钟讲讲introduction(后来看了下是15721上的一篇)
程序纠错:数组覆盖问题
程序纠错:生产者消费者
写二分查找
git squash
gdb相关
了解HBase吗
RocksDB的column family
多个有序数组怎么合并
......还有些想起来写
怎么避免资源泄露,包括文件泄露,内存泄漏等等(大佬说看来你工程做的不多呀
b+树插入过程(这里大佬说看你了解的都是理论,没看过源码吧
leveldb怎么优化查询的
聊天,读论文多吗,英语咋样
三面是工程大佬,感觉人很好,最后反问问他做数据库有什么建议,他说了挺多。1. 自学能力 2. 基础知识,"你操作系统要补补",3. 要敢做工程,不怕解决复杂问题。最后说工程能力差点没关系,因为学校也没有这种环境,可以工作了学习。
四面是老板面(说实话有点觉得浪费半天时间请假去线下了),出的题目是两个1TB的文件里面放的字符串,但内存只有4KB,让我给字符串做strcmp。后来想想他题意可能是文件里有多个string,让我多线程做。但我当时以为就一个string,就每次读进来2KB循环比较。文件输入输出不熟花了很长时间调,但最后只能读进来一次,循环读进来还卡住了。。。
然后问我你这个程序估算一下要跑多久?我说这个要看磁盘读文件的速度,假设读一次的时间是t。。。然后他打断说那这个假设是多少,我说不知道,然后他问你知道磁盘输入的时间吗?我说也不知道,没了解过。。。
然后就开启了聊天模式,问我的项目是哪的项目,导师怎么让你实习的,导师有多少个学生,读论文多吗,最后和我说,你知道我们做的这个挺难的(让我有点不知道怎么接?
当时回去的时候就感觉不太好,前三面的体验我觉得都很好,也遇到了很多我答不上来没了解过的问题,但面试官都有引导,或者最后给我讲解下,让我感觉收获挺大的。但终面就感觉没有问我什么有价值的问题,也没有和我探讨问题的过程。不过总归是没手撕出来,还是要练习一下文件读写。