字节电商面经(已意向书)
在鹅厂实习了一段时间然后就准备了秋招提前批,字节是最早约我面试的,杭州的电商部门,刚好想去杭州,于是就兴冲冲的去面了。好久没面试还挺紧张的。
字节整个流程的体验都非常不错,基本都约的是晚上八点钟面试,每一面的面试官看起来都非常疲惫的样子,目测是个很累的部门了。二面面试官尤其好,聊得非常开心,希望十月开奖能有个不错的结果吧。
一面(60min)
- 算法题
(1) 数组实现栈
(2) 判断平衡二叉树
进程和线程的区别
Go和C++中分别如何阻塞线程
协程知道么 协程和进程线程的区别
GMP
IO复用?现实中有哪些IO复用的场景,展开说说?
数据库索引什么数据结构?B+和B树相比的优点
mysql索引有哪几种
索引失效
事务的原子性如何保证?
binlog、redolog、undolog细说下
反问
二面(70min)
二面面试官人超级好,一开始看我有点紧张,先闲聊了下,问了下兴趣爱好什么的舒缓了下我紧张的情绪,之后问问题我不会了也是各种引导我,还安慰我,体验超级好。
自我介绍
说一件学校里经历的有趣的事
tx实习中学到了哪些,针对后台开发有哪些自己感兴趣的方向?
服务高可用是如何保证的?有哪些策略?
多地部署会有些什么问题,面临哪些挑战?那为了容灾不就是机房越多越好,就无脑各地机房全都布置上服务器不就行了吗,大厂为什么都不会这么做呢?(说了数据不一致还有灾害感知等等,就又继续深挖这方面)
数据不一致那在两边的机房都存一样的数据呢?如何感知到另一边机房挂了,这边服务能自动启动?如何通知开发人员?
说说实习中的项目?(让我别扯整体架构那种大而空的,让我说项目的亮点)
项目中rpc用的什么协议序列化的?(答 pb;给了个场景然后让我写rpc接口协议的pb -_-!pb总共也没写过多少行,但凭记忆里的语法还是坑坑巴巴写出来了)
项目中Redis是用来干什么的?
Redis有哪些数据结构?(答:string、hash表、set、zset云云)
问我项目中Redis用的哪种数据结构?
给了个场景问我Redis中的hash表具体是什么样的,让我写一个例子,然后问我取某个key的某一个字段Redis命令怎么写?
为什么Redis要有zset呢?(答:范围查询很快)然后让我想一个现实中的zset使用场景然后写一下具体zset是怎么存的,写下范围查询的命令。(本八股狗已扑街)
Http的状态码有哪些?
对比一下RPC和HTTP调用
如何知道HTTP的调用方法是Get还是Post等等?HTTP报文头信息和body信息是如何区分的。
问我C++和Go哪个用的多?我说都可以问,然后就开始问我C++
C++中的virtual是什么意思?
动态绑定是如何实现的?
纯虚函数有了解吗?说说用来干什么的。
inline是用来干什么的?为什么比函数调用快?为什么要保护现场?
宏定义define是用来干什么的?跟inline比有什么区别?为什么不把inline全用define代替?
virtual函数可以用inline修饰吗?为什么? 我真没想到还有这种用法,面试官就让我推理推理,我想了想说了自己想法然后面试官就笑了,说我推理能力还挺不错的(Redis给我带来的阴影一下子被驱散了),然后说确实说的有道理,但是实际上可能并不是这样,让我之后自己再研究研究。
算法题—堆排序 先问让我说堆排序的思路,然后问我堆的几个条件,说是不是随便拿个完全二叉树,然后根节点最大这就是个大顶堆什么的。
反问
总之二面就是告诉我他们招人都是看候选人迄今为止积累到了什么样的技术,而不是背背八股临时准备的,说哪些是我真正用过的,哪些是我背的,随便问一下就问出来了(怪不得让我写pb,写Redis命令 (lll¬ω¬) )
三面(45min)
自我介绍
怼项目,问我为什么要这么做,缓存用在哪了等等。
算法题
a) C++的智能指针了解吗?写个类实现一下shared_ptr
b) 前序中序构造二叉树
- 反问
前两面基本都是面完30分钟就告诉我结果了
三面完了之后等了大概将近两周,HR问我要了身份证号发了意向书。