记录一次字节的面试
面试官首先讲了一下流程说大概有三次技术面试+一次hr面
然后这是第一次技术面试。
小笔试
一开始的话问了一下我为什么非科班学计算机,我其实也是因为自我认知上感觉不如科班学生,回答说试试看能不能做这方面。
之后面试官让我做了一道相对简单的笔试,就是两个字符串,S和t,找到t的字符在S中全部出现的第一个索引。做完了之后跟面试官讲了一下思路,时间复杂度,空间复杂度,然后有没有更好的实现办法。
提问阶段
接下来面试官就问你觉得你基础方面哪方面比较好?
我想了想数据结构、操作系统、计算机网络、算法我觉得我都挺一般的,我就说数据库还行。
然后面试官就问数据库的相关知识:
1、MySQL 的binlog 是什么?作用是什么?
我回答二进制日志文件,作用就是作为mysql集群主从复制的基础,回滚操作需要参考这个binlog。
2、那么回滚是怎么做的?假如一个sql 更新语句 如何回滚?
我回答将一个失败sql和这个sql 作为一个事务 运行,结果就会回滚,binlog中记录了增删改操作。
3、Mysql事务的底层实现是什么?
当时我有点懵,回答了ACID原则,然后我想到是由锁实现(实际上还有MVCC多版本并发控制)。显然我应该解释一下具体是什么锁…
4、数据库索引的数据结构有哪些?mysql的索引所用数据结构?
数据库结构我当时就想到红黑树 B/B+树, mysql 默认B+树。(面试官更想听到的是为什么用B+,以及他的好处)
5、这些索引数据结构分别在什么场景应用?
这个我没回答上来,当时有些紧张 有些懵。。。
剩下记不起来了 应该没多少问题了。
建议
然后我就是让面试官给我一些建议,这位面试官确实很好,跟我聊了十分钟的发展建议问题。包括跟我谈其实还是看重个人的潜力,需要更多的好奇心,一个东西不能光知道怎么用,或者一两句话就概括出来,更多的需要知道为什么选择这个东西,它和同类型的有什么区别,分别应用在什么场景。
另外面试官还告诉我,其实招聘应届生不要求他全都会或者会的非常多,主要是看有没有哪一方面是你真正能让面试官看到你有学习能力,钻研能力。这是面试官非常在意的。把目标定高一些,而不仅仅是开头我所说的“试试看”,要做就要做到行业领先水平
其实以上建议这也是我非科班从事这行确实也是希望自己能做到的,也正在努力去做,真的非常感谢这位面试官!。