字节跳动后端开发面经

本文禁止转载

先讲讲博主的情况,中流985通信,大二因为对数模的伪科学很失望开始学ACM,用很大的代价最后拿了块渣铜

研究是密码学,没有论文(一是水平不够,二是这个领域跟ai不一样,确实也不容易发)。

博主寒假比较迷茫,各种事都做了一点,众所周知这是效率最低的。3月中旬觉得是时候走出舒适区了,就开始找实习,春招除了学院帮忙推的只投了字节跳动和华为。投宇宙条第二天就来电话了,博主感动的快哭了。

总体来讲,以下知识点是要理解的:
数据结构和算法:二叉树、BST、链表、栈、红黑树、散列表、AVL树、字典树、动态规划、二分查找、递归、各种排序(堆排、快排、归并排、希尔排、桶排)及复杂度稳定性

计网:tcp/ip(握手挥手,各个信号的意义,超时重传,滑动窗口,拥塞控制,流量控制),http/https(长连接短连接,头压缩,服务端推送,二进制传输,各个请求类型,各种状态码,幂等,网络攻击),tcp/udp,七层模型、四层模型、五层模型

数据库:ACID,隔离级别,常用语句,锁,B树B+树,磁盘操作,存储引擎,主从复制,读写分离,关系型/非关系型,事务/非事务,组合索引,二级索引,范式

操作系统:进程线程协程,进程通信,并发并行,虚拟内存,进程调度,锁,linux,IO复用,链接库,程序运行过程

C++:各类知识,多看一点总没错

一面:
3.27 14:00
因为是视频面试,博主特地穿好白衬衫,梳了个发型,到图书馆开了个包间
一面是一个微胖的程序员

1、自我介绍

2、(自我介绍中说到数字签名)说说数字签名
就说了说私钥签名、公钥验证,提了一下我做的研究

3、说说hashmap
原理,冲突解决办法,拉链,红黑树

4、hashmap线程安全吗?
看过但是忘了,只好笼统的说加锁,面试官想听更详细、性能更好的,提醒我可以看看java的相关库
其实整个hashmap加锁就是java的hashtable,concurrenthashmap则是分段加锁

5、数据库了解吗(了解一些),说说二级索引
emm,二级索引从来没听说过(其实就是非聚簇索引的别名),只好问面试官是不是组合索引,面试官说不是

6、那好吧,问你组合索引,举个例子,ABC索引,某语句用了AC,实际哪个有用哪个没用,为什么
A有用,C没用,因为数据库表格对于索引是按顺序主次排列的(当时没答出来,后来才想到)

7、说说事务隔离级别
常规题,数据库讲过

8、撕个代码放松下,链表反转
嗯这个题其实是很简单的,但是第一次视频面试,所以操作完全变形,说思路说的很乱面试官没听明白,然后写代码指针搞了一堆错,调了5分钟也没调出来,面试官说算了这题算了,博主这时候已经很绝望了

9、继续撕,开根号
二分法,所幸注意到了输入判断。一面的代码题真的不难,但是一定要注意调整心态。

10、例行反问

一面完博主大脑一片空白,半天反应出来三个字:我凉了。一是因为表现确实辣眼睛,二是听说头条一般三面连在一起,一面结束时没通知二面就凉了。

回到宿舍发现室友科目二也挂了,心情安慰了少许、、

二面:
3.29 15:30
第二天下午,已经快忘了这事的时候,头条的hr又打电话给我了:“面试官还想和你聊聊,明天有空么?”我差点就跪下了:放过我吧我再也不想视频面试了。当然,hr姐姐清甜的声音让我不忍拒绝,于是又接受了面试。

二面的面试官可以用儒雅随和形容,说话有点港台风格?反正就是很温柔,加上我已经不抱希望,瞬间就不紧张了

1、自我介绍

2、数据库了解吗,说说事务的概念,事务的隔离级别,sql中事务怎么写
这些还是比较常规的,不过事务的语句没听懂是问啥,后来才知道就是指的就是begin…commit…

3、说说STL,你知道哪些STL,打在代码板上
就打了比赛常用的list,vector,map,set,queue,stack之类

4、那你讲讲map吧
(一面后刚学习了一下线程安全的map,都讲了)

(这里问了几个计网问题,记不清了)

5、了解c++11新特性吗
这个真没了解、、

6、撕个代码吧,给个字符串例如ABCD,输出全排列
先讲讲思路,直接dfs实现,要输出就用一个ptr模拟一个vector
博主主要比较怕二分这种,大概是因为C++课讲二分时的一些误导,对于递归还是比较拿手的,于是5分钟左右写好
除了没加cstring编译报了个错,其他一遍过

7、嗯,这样就输出全排列了,对了,刚刚你加了个头文件叫bits,这个是啥
这个属于acm的奇技淫巧,就是把所有C++标准库都加上

8、再来撕一道,给出一个寄存器和两种操作,问到达某个值的最少次数(原题是用字符串表述的,比较难懂,转化一下)
凭借打比赛的直觉我问面试官是不是有数学解法,面试官想了想说是有的,你可以先用常规解法
深搜,返回值比较大小,一遍过,和面试官又讨论了一下一些小的优化

9、那你想想有没有数学解呢,比如你看,4的结果是2,7是一个奇数,结果是6
因为已经有代码了,所以输入几个特殊值看看,想了一会立马想出这个跟质因数有关(博主虽然ACM有大佬带躺,但数论学的还可以)

和面试官讨论了下,觉得可行,面试官又给出一些小的提示,然后让我尝试实现,有个小地方写错了,时间也快到了,面试官就让我先不用写了。

10、例行反问

二面完的感受就是:天哪怎么有这么温柔的小哥哥啊,我一定要和他做同事

三面:
3.29:17:00
20分钟后就打了个电话来,问有没有空三面,博主已经抑制不住内心的激动了,但是还是尽可能让自己冷静下来,毕竟牛客网上一堆三面凉经,说不定下一个就是我

三面一看就是个部门大佬,技术专家那种,年龄也比较大

1、自我介绍

2、说说项目
(大佬对我讲的环签名挺有兴趣,我就详细的讲了很多,大佬还问了一些不安全情况的解决办法)

3、挑战性的事?
讲ACM,不是计算机院,高中没学过oi,一年怎么一路熬过来(泪目)

大佬听完问,你觉得因为没学过oi这个就是最困难的》?

当然不是,又讲什么关键在于耐住寂寞,坚持不懈,不畏艰难,灌鸡汤(泪目,不知道为啥此时想起濒临挂科的模电)

大佬觉得有点人生经验,“那挺好”

4、没拿到银牌有你的责任吗?
emm,当时要不是我签到题莽了一发,可能就银牌了,毕竟只差几分钟罚时啊啊啊(泪目)
大佬对我说的“莽了一发”比较感兴趣(好奇怪的关注点),问我这是啥意思,我立马解释:就是搏一搏,单车变摩托的意思

5、能实习多久?

6、你会写Go语言(我一想,糟了,头条后端很多用Go语言写,大佬一定很有造诣,而我只是拿Go写过一点文件操作密码运算),那你说说Go语言的method输入时pointer还是变量值
这个我是真不会,但是因为Go上看的代码还比较多,就凭印象说了个pointer,大佬问为什么,emm

7、说说数据库范式
1NF,2NF,3NF,当时学数据库理解过,可惜2NF我忘了

8、为什么要规定范式
去冗余,然后在大佬的提示下又说了个维护一致性

9、说说https
证书,对称加密,非对称加密,整个流程说一遍,因为对密码学比较熟说的还可以。

10、例行反问

3.31 offer,博主一直比较喜欢字节跳动(可能名字很Q?),加上不想再让过多面试影响生活节奏,直接接收。

博主总结了一下,感觉面试比较重要的几点(因为博主目前没挂过面试,所以可能比较肤浅):
1、要有思考的过程,有的同学刷leetcode较多,面试官问个问题立马说出一个很巧妙的思路,给人的感觉是你背的题多,比如《剑指offer》那个逆序对用归并排序做我感觉就很邪门。

其实题型就那么多,面试官要看你分析的能力,你要循序渐进的说说不同方法的好处、坏处、时间复杂度、空间复杂度,和面试官讨论可以优化的点,面试官也会乐于给你一些提示,要让人感到你很geek,而不是来投机的,但是总归怎么说呢,相由心生。

2、项目多说一点,就会少问你一些比较偏的知识,所以有一些ACM,项目还是很好的。

  • 25
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_viceversa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值