炎凰数据 Java研发 一二面凉经
9月份的时候在牛客上投的,一家不简单的小公司,估计是看到我简历上面有个数据库项目就约面了
10.14 一面
40min
- 面试官自我介绍
- 自我介绍
- 第一个项目(挂号),为什么要做这个项目
- 数据库项目(面试官也知道这个项目,就不让介绍了)
- 使用到了哪些数据结构
- 在插入数据非常频繁的时候,使用B+树是不是也会很高效
- 插入数据的时候,顺序表和链表,哪个效率高一点
- 从数据库查询数据怎么实现你的数据是怎么存放的
- 算法题:输入input字符串,字符串先按照空格分割加入到HashSet里面,然后分割得到的字符串再按照.或者=分割,再放到HashSet里面,最后返回一个HashSet
- 反问:
- 部门业务:国产自研的OIAD数据库
- 后端开发主要做什么:实现数据库里面的各种需求,比如我刚刚问你的XXX怎么做
- 技术栈:k8s/c++/rust/python/java
10.19 二面
70min
- 自我介绍
- 实习经历
- 算法题:LRU,我自己选的C++语言,纯txt
- 你如果现在运行你的代码,会有什么问题吗(我说没有)
- 那unordered_map这里会报错吗(有,忘记引入头文件,随后我引入了万能头)
- 你为什么要使用这个头文件呢而不是引入一个具体数据结构的头文件(习惯了)
- 那你使用万能头有什么缺点呢(会引入很多自己没用到的库,C++编译代码分四个过程:预处理、编译、汇编、链接,其中链接过程会把库依赖和自己的代码组装在一起,最终生成的可执行文件会很大?猜的)
- 会有内存泄露的问题吗(没有,因为我删除操作会执行delete操作)
- 那如果程序执行结束呢(没考虑到析构函数)
- 那你的这个是线程安全吗(不安全)
- 假如我要实现多线程,应该怎么实现(说了Java的解决方案)
- c++里面的unordered_map和map有什么区别(map有序,基于红黑树实现;unordered_map无序,基于哈希表实现)
- 哈希表如果遇到哈希碰撞,有什么办法解决这种情况(拉链法、线性探测法、再哈希法)
- 如果有1M的数据,他们在内存中也是连续的,所以他们碰撞的概率也不是很大,如果把他们加到哈希表里面你觉得是使用拉链法好还是线性探测法好一点(拉链)
- 你有个数据库项目是吧,说一下你的数据库从输入SQL到输出结果的过程(balabala...)
- 你的分组查询是怎么实现的?是基于哈希还是?(建立一个map,分组字段作为key值,要统计的信息作为value值,最后将所有的value返回)
- 你的数据库有实现查询优化的部分吗
- 你刚刚说了你是使用到了迭代器的模型,那迭代器有什么缺点呢
- 那除了迭代器模型还知道哪些模型吗(不知道)
- 除了MySQL,还知道哪些数据库吗(说了Oracle、SqlServer、Redis、MongoDB)
- 一般Redis用来做什么
- Redis的缓存穿透怎么解决
- c++执行文件的读写操作,操作系统是怎么执行的
- 如果操作系统直接在用户态对文件进行读写,有什么优缺点
- 算法:一个数组,分成两个真子集,使得这两个真子集的和相差的值最小,应该怎么分
- 反问:
- 部门业务:数据库底层引擎的实现(自研),我们这个岗位要做的是SQL解析、计算、解析、分布式存储,技术栈主要是C++、Rust、Goland,所以我们要求你们要对操作系统、分布式、数据库要有非常多的了解,我们的数据库也有非常多的特性,比如说我们的数据库是不需要预先定义表的,而且字段也是支持多种类型的,所以我们的字段是可以同时存储String/int/double,而且在数据库之上我们可以做很多的一些行业应用,比如日志分析,如果你还有印象的话ETL其实是一个很烦的事情,所以我们是不需要用到ETL的,然后在这个应用之上呢我们还会做一些前端,主要是做一些大屏啊还有统计啊这样的一个开发
- 你们自研的数据库是叫什么名字:我们的数据库是不开源的,对外就叫做炎凰数据,但是在里面我们有很多的代号
- 你们的产品主要是卖给企业的吗:对的,我们的客户主要有 1. 他们以前是用es的,但是es不支持join还有多表查询,但是我们可以支持,es所有的功能我们都可以满足;2. 做安全的,特别是日志的处理
- 对应届生的建议:完成MIT的所有课程(操作系统、分布式、数据库),进阶的话还要完成CMU的课程,我希望他们还能够多阅读lab db的源码
二面完无消息了,估计是挂了,经过两轮面试下来,发现这家公司的技术氛围很不错,虽然公司比较小,但是竞争力很强!
#炎凰数据#