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,因为和大数据组件结合比较有优势

    • 评价

      还行,没有什么要说的(怎么这部门的面试官都这么高冷的吗)

    • 你对毕业之后的规划

    这部门真的效率好高,一小时后又发消息来约下一次面试时间了,休息一个周末周一接着面,冲冲!