layout: post title: “字节跳动” date: 2022-3-17 tag: 面试
一面 3/17 15:00 - 16:00
-
自我介绍
-
聊项目 数据库比赛
为什么想要参加这个比赛
通过这个比赛对数据库有什么更深的了解
如果自己从头到尾实现一个数据库,你会怎么实现
你刚刚提到了查询优化的模块,MySQL 怎么实现的查询优化
-
为什么需要数据库?数据库相比于查文件的话做了什么优化
-
为什么 b+ 树性能上会好很多
-
数据库除了用树,还可以用其他的什么数据结构来存呢?
我说了哈希表,他也没说对不对就继续往下了
-
为什么索引主键一般做成自增的?
我说了两点,主键唯一性还有方便范围查询,也不知道对不对
-
接下来是网络方面,谈谈粘包和半包?为什么会出现这种现象?UDP 会出现吗
-
操作系统方面熟悉吗
我说相对于网络和数据库来说不是特别熟
-
python 协程的概念
-
让你自己实现一个具备基本功能的线程池,你会怎么实现
在面试官引导下还是答得不是很好,线程池接触的不是很多,gg
-
你对计算机哪方面比较感兴趣?
我说数据库和人工智能结合,然后给他讲了一篇用强化学习给云数据库调参的论文,也不知道他有没有听懂,笑死
-
你有了解过数据库现在分为哪几类
-
为什么要有关系型数据库和非关系型的划分
-
写题,直接给了个 Trie 树叫我实现我是没想到的。。只能说听过但是没实现过。按着我的想法来搞了,每个节点存一个字符还有后继的字符节点数组,为了判断当前节点是否是结束节点又加了个 isEnd 来判断。下来查了一下感觉跟自己的想法八九不离十了吧
-
评价
评价倒也谈不上,你说你对数据库比较有兴趣,我看你对数据库的认知好像还不是特别全啊。有空的话还可以多了解下2333
面试反馈还是很快的,结束一个多小时吧 hr 就来电话约下一面时间了,想着刚好也是隔离在宿舍没事干,就约到了第二天了
## 二面 3/18 16:00 - 17:00
-
自我介绍
-
继续聊项目
实现了什么功能
做的印象最深的模块
加 date 字段的时候遇到了什么困难
有要求你们做索引相关的内容吗
……
-
开始聊八股 都学过哪些课程
-
讲讲计网七层或五层网络协议
-
基于五层网络协议,网站后台服务器做一个多台同构服务器处理,在它们前面做一个负载均衡组件来分发请求,这样一个组件是运行在哪一层
面试官“你说了个很专业的名词啊,叫反向代理” 。我想的是和路由器相同的作用,通过IP地址进行数据交换,然后就讲了一个三层的。面试官又说“开个脑洞,不止一种实现方式”。当时我就愣住了,下来查了一下发现还有两层的,有四层的还有七层的2333(nginx 用到了四层和七层的,想想还是很合理的)
-
TCP 拥塞控制详细讲一讲
-
我看上一面数据结构都问到红黑树了,那数据结构我就不问了,直接开始写代码吧
-
多路归并
多个有序一维数组,行之间无序,排序成一个有序数组
本来想参照普通的归并,每次把两个数组拼在一起然后进行一次归并,直到归成一个数组,但是忘记了vector有没有拼接数组的api了,一个一个push进去也太傻了。。然后就用遍历来写了,面试官问我时间复杂度,第一遍还答错了,提示下才说出来是O(nm2)
-
反问,技术栈
和很多团队用 go 不一样,这里基本都用 Java,因为和大数据组件结合比较有优势
-
评价
还行,没有什么要说的(怎么这部门的面试官都这么高冷的吗)
-
你对毕业之后的规划
这部门真的效率好高,一小时后又发消息来约下一次面试时间了,休息一个周末周一接着面,冲冲!
-
