历时两月,终拿字节跳动offer,算法面试题分享「带答案」

字节跳动面经
字节跳动一面
1、自我介绍了一下(学校、年级、奖项、GPA)

2、讲讲UDP 和 TCP 的差别(具体讲 TCP 怎么实现可靠传输的,我讲了拥塞避免的三个状态及全部过程,扯了一下TCP的版本问题,面试官补充了重传机制)

3、UDP的使用场景(视频传输,DNS详细地讲了一下)
4、如何实现redis分布式锁?需要注意什么问题?
5、⼀段代码要执⾏多个redis命令,不加锁的情况下如何保证原⼦性?

6、线程和进程的区别(从操作系统、JVM、协程,CPU调度的什么,协程与线程调度的区别)

7、HTTP协议(状态码(涉及的不够细),HTTP1.0 ,1.1,2.0,HTTPS,非对称加密和对称加密)

8、怎么实现 Redis 的快照机制,能够保证在 dump 过程中能够相应其他请求(让我自己来设计,我借鉴 Hash 的内存结构设计,自己简单设计了一个,用了两倍的内存空间)

9、Java 怎么标记 GC 的(引用计数法,GC roots,roots 由哪些构成的)

算法题:

先给了一题LeetCode 困难问题,接雨水(我大致讲了一下实现思路)

然后又给了一题LeetCode 中等问题,计算两个链表倒序相加的,比较简单

一面反思
面试官人真的超好,问的题目也比较基础,接下来还是再认真准备一下,说不定就进字节跳动了呢?

字节跳动二面
简单自我介绍一下

直接开始写算法题

LeetCode medium 难度 :链表排序(要求空间复杂度为常量),我用插入排序写出来了,面试官让我再用归并排序写,我稍微讲了一下思路,没写出来

LeetCode hard 难度:n 皇后问题

写完两道算法题之后,面试官让我简单讲讲 MySQL 懂的所有知识、Redis 的数据类型

最后问了 cookie、session 的详细问题

二面反思
一开始都觉得自己要挂,后面突然状态好了起来。

字节跳动三面
这次的面试感觉出乎我的意料,不像是面试,更多地是面试官去引导我怎么思考。

一开始和面试官讲了我的基本情况,以及展示了自己的博客, 然后和面试官聊了一下关于抖音产品的看法。

之后面试官出了一道比较困难的 24 点组合问题,我在提示下一点点理清了思路,但是后面的递归的写法不太好。

最后面试官问了一个偏向架构设计思维的问题:抖音 的话题排行榜该怎么设计

我只是简单地从系数加权的角度来讲,后面面试官给我普及了大量的思维方式:

可以从视频内容、地址、时间、主题等信息去做一个相似度的分组处理,同时如果要做一个话题评论区,就从单纯的只读需求,到了写需求,如何做到评论的时效性和通知信息等等。

三面反思
其实这次面试表现不太好,面试官也直说我的能力和竞争的本科生没有太大的优势。不过,我还是要乐观地去面对它,希望能够拿到这个令我心动的Offer吧。

字节跳动四面
四面是 HR 面,主要是聊了一下自己基本情况(成绩、比赛、入职时间、毕业时间(读研还是工作)、自己的相处能力、团队配合能力)

字节跳动总结
字节的第一轮面试是员工面,强调基础,需要特别注意复习好操作系统和计算机两门课程,有精力还可以学一下图论和密码学

字节的第二轮面试是小 leader 面,强调算法,需要尝试去刷一些 LeetCode Hard的提醒,训练一下自己思维,我每一轮面试都遇到了 Hard 问题

字节的第三轮面试是大 leader 面,强敌算法思维的极限和架构分析思维,可以去看一些架构设计的书和一部分 ACM的题
总结
这些面经其实社招的朋友不是很适用,都比较基础,不过他学习的心态可以模仿一波,各种利用网络资源去学习,不要在群里天天划水当个干饭人了,特指某些群的仔哈(可以对号入座)

以上字节跳动的面试题以及系统学习资料可以免费分享给大家,需要完整版的朋友,点这里可以看到全部内容!暗号CSDN。

如果需要PDF版本可以在群文件夹里,自行领取!
在这里插入图片描述
40套2020年Java面试题合集1000+页PDF文档!
在这里插入图片描述

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

猜你喜欢

转载自blog.csdn.net/weixin_47345084/article/details/110533553