字节【抖音/抖音火山版/直播/智能创作】后端开发秋招二面面经

1 前言

这场面试持续了一个半小时,是体验最棒的一次,因为面试官人真的太nice了,全程一点一点引导,试探我的知识边界。下面就来总结一下这次的面经。


2 面经问题汇总

2.1 八股文

  • 常规:

    • 1 HTTP的响应码都代表着什么?
    • 2 HTTP协议最大的问题,如何解决?能否简单聊一聊HTTPS的SSL连接建立的过程?
    • 3 讲一讲在浏览器中键入URL后,从点击回车到返回页面中间历经了哪些过程,越详细越好。
    • 4 Redis为什么这么快?
    • 5 Redis数据结构都有哪些,了解不了解跳表?
    • 6 简历里写了了解索引,讲讲MySQL的索引吧。
  • 进阶(我认为的当时有点难度的题,和实践结合的多)

    • 7 你为啥要用线程池来处理xxx问题,用了线程池有什么好处,不用不行么?
    • 8 会不会用linux的一些简单的命令筛选出特定关键词附近的日志?(linux命令相关的)
    • 9 完成一个RPC框架都需要哪些模块?(泛泛的说一下就行,我当时只是简单的了解了一下RPC的作用,会调接口,没有深入了解)

2.2 设计题

  • 10 如何设计一个短链系统?(这个其实是之前的面试题,觉得有意思就一起放在这儿了)
  • 11 设计一个算法,在两个各存放有50亿个URL的文件中找到共同的URL,每个URL大小为64B,内存限制为4GB,现场手撕代码

2.3 算法题

12 因为可能前一个找相同URL的题浪费的时间太长了,算法题就没出特别难的,写一道传统的回溯 —— 全排列


3 答案

3.1 八股文答案

特别建议大家自己总结一遍计算机网、操作系统、数据库、MySQL、Redis等等八股文的内容到一张思维导图上。总结的过程中可以多看一些资料,集思广益,用自己的话总结出来并且描述出来;总结完之后可以按照遗忘曲线每隔一段时间去过一遍;并且在每一次面试之后查漏补缺,不断完善。

举个例子,我学的语言是Java开发,所以就把Java语言相关的内容,以及上面提到的基础课程在内的所有八股文问题都总结
并且写在了一个思维导图上,答案写在备注里,这个用的模板是github上CyC Java面试百科全书的模板。我大概在找完实习之后,一些常规的八股文就已经全部总结完毕。

八股文思维导图

下面开始说一下答案,注意这些答案是我【集思广益】,看了很多篇优秀的博文和书籍之后总结出来的比较全面具体的答案,不用完全照搬,可以理解大致意思后凭借自己的理解说出来即可!

1 HTTP的响应码都代表着什么?

图片说明

2 HTTP协议最大的问题,如何解决?能否简单聊一聊HTTPS的SSL连接建立的过程?

图片说明

3 讲一讲在浏览器中键入URL后,从点击回车到返回页面中间历经了哪些过程,越详细越好

4 Redis为什么这么快?

5 Redis数据结构都有哪些,了解不了解跳表?

6 简历里写了了解索引,讲讲MySQL的索引吧。

图片说明

7 你为啥要用线程池来处理xxx问题,用了线程池有什么好处,不用不行么?

这题可以反过来回答,如果我们手动去启动一个一个的线程去完成任务,会发生什么事情?

  • 因为没有拒绝策略,如果任务阻塞那么会很快把资源耗尽。
  • 长作业很快会把短作业全部给搞死。
  • 线程启动和销毁需要消耗资源和时间,效率太低。

8 会不会用linux的一些简单的命令筛选出特定关键词附近的日志?

grep命令,awk命令

9 完成一个RPC框架都需要哪些模块?

因为我至今对RPC了解的还不够深入,所以就不误人子弟,放一个牛客上的字节大佬总结的RPC知识点,我就是看他的总结:
(近)万字总结,RPC 项目相关问题及解答

3.2 设计题答案

10 如何设计一个短链系统?(这个其实是之前的面试题,觉得比较有意思就一起放在这了)

这道题是我一面的面试题,只不过我觉得挺有意思,我就放在这了,因为当时考虑的十分不周全,只想到了里面一丢丢的思路,但整个设计思路我觉得还是挺考验基础的,包含重定向、短链生成算法(哈希算法、自增序列算法)、follow up也有用户自定义短链接的设计思路等等。
这个大家直接去百度一下就可以找到这道系统设计题的各种思路,大家不用死记硬背,只需看一遍有个大致的印象,因为这道题似乎面试中也不太经常出现。

11 设计一个算法,在两个各存放有50亿个URL的文件A和文件B中找到共同的URL,每个URL大小为64B,内存限制为4GB,现场手撕代码。

这种题腾讯会经常出,就是海量数据问题,在内存限制下完成一些大文件的筛选过滤。如果大家想一网打尽的话还是推荐看看左程云的那本算法书上的其中一章(只推荐这一章,可以找找pdf版或者看看别人有没有,没必要为了这一章去买书)。

下面来说说这道题。
首先内存是4GB,那肯定没办法把URL全部读到内存里去做比较,所以必定是需要“分而治之”的。

第一步:用有限的4GB的空间遍历文件A(一次就只读不到4个G的URL就可以做到),对每个url求取hash,并且模1000,然后根据所取得的值将url分别存储到1000个小文件,把小文件记为A0,A1,...,A999,这样每个小文件约300M;
第二步:用同样的处理方法对文件B进行处理,把小文件记为B0,B1,...,B999,这样每个小文件约300M;这样处理后,所有可能相同的url都被保存在对应的小文件,A0和B0,A1和B1 …… A999和B999,中,不对应的小文件不可能有相同的url。然后我们只要求出这个1000对儿小文件中相同的url即可。Tips:这每一对儿小文件的大小加起来也就600M,完全可以放进内存里。
第三步:求每对儿小文件中相同的url时,就可以把Ai的URL放在内存里的HashSet里,然后再遍历Bi文件中的每个URL,看是否在刚才的HashSet里,如果是的话,那么就是共同的URL,存到文件里就ok了。

按照以上步骤就可以把代码写出来,我感觉代码没什么难的,主要是读写文件的API忘了。。。。。

#实习经验分享##字节跳动##面经##校招##后端开发#
全部评论
楼主能否发我一下你的思维导图,感觉很全面
3 回复 分享
发布于 2022-01-30 13:26
楼主能否私发一份思维导图,感觉很有帮助。😀
1 回复 分享
发布于 2022-01-30 16:21
帖子很有帮助,感谢分享
1 回复 分享
发布于 2022-01-30 19:21
求思维导图
1 回复 分享
发布于 2022-02-22 13:41
友友是抖音serve那个组吗
点赞 回复 分享
发布于 2022-01-30 11:11
非常有用!
点赞 回复 分享
发布于 2022-01-30 12:04
是直播-营收吗?😂
点赞 回复 分享
发布于 2022-01-30 14:29
帖子很有帮助谢谢
点赞 回复 分享
发布于 2022-01-30 21:26
求一份思维导图
点赞 回复 分享
发布于 2022-02-02 19:09
求一份思维导图 🤤🤤🤤
点赞 回复 分享
发布于 2022-02-08 18:22
求一份思维导图
点赞 回复 分享
发布于 2022-02-15 17:04
楼主思维导图做得真好,求分享一份
点赞 回复 分享
发布于 2022-02-15 19:52
求一份思维导图
点赞 回复 分享
发布于 2022-02-16 11:00
求一份思维导图
点赞 回复 分享
发布于 2022-02-16 12:48
求一份思维导图😊,谢谢楼主!
点赞 回复 分享
发布于 2022-02-16 19:00
求一份思维导图,谢谢楼主😊
点赞 回复 分享
发布于 2022-02-17 00:31
求一份导图
点赞 回复 分享
发布于 2022-02-17 02:28
求思维导图
点赞 回复 分享
发布于 2022-02-17 09:26
大佬,🙏即将准备春招实习的小白想求一份导图!
点赞 回复 分享
发布于 2022-02-17 16:29
求一份思维导图😊,谢谢楼主!
点赞 回复 分享
发布于 2022-02-17 16:58

相关推荐

头像
03-10 11:27
已编辑
门头沟学院 Java
📍面试公司:字节跳动👜面试岗位:后端开发📖面试问题:1. 自我介绍2. 开源经历都做了什么3. 项目里的延时任务怎么用的4. 定时任务呢5. 分布式锁怎么实现6. 如果锁过期了导致其它节点也执行定时任务怎么办(redission的看门狗,续期。或者不给锁设置过期时间,并将锁的value设置为节点ID,其它线程拿到锁的时候判断一下value是不是自己的ID,如果不是就不执行定时任务)7. volatile具体是怎么保证可见性和指令重排序,禁止指令重排序有什么实际的例子吗,具体是怎么起作用的(单例模式双重校验锁)8. synchronized又是怎么保证可见性的9. 写代码,两个线程分别打印奇数和偶数10. 给了一个SQL题,有id,type, createtime,name四个字段。建立了一个联合索引(type, createtime, name)。select * from table where type = 1 and createtime > xxx and name = %xxx%。怎么走索引。name = xxx%呢11. 又给了一个sql题,有id 和balance两个字段。A给B转账,怎么实现。12. 如果与此同时,B也在给A转账呢,两个事务会发生什么情况13. 有一个存储了几百万个电话号码的文件,怎么找到重复的电话号码(哈希表,位图,字典树)14. 算法题,最长公共子序列 15. 反问🙌面试体验:事后复盘发现问题还是比较少的,但是一共面了70分钟。。。#软件开发笔面经#
点赞 评论 收藏
分享
昨天 21:51
河北大学 后端
结束后20分组约二面1. 自我介绍2. 专业都学了什么相关课程?3. 说一下你觉得 SpringBoot 是干什么的4. 如何使用springboot搭建一个程序?5. mapper service controller是springboot的吗?6. 为什么要拆成这三层?为什么是三层?7. 除了三层架构还有别的架构吗?8. 介绍mybatisPlus?9. 如果用mybatis查询需要写哪些文件?(xml或mapper层接口)10. 写在接口里的,没有实现类,该怎么调用?11. websocket在项目里是干什么的?12. websocket和http的区别?13. 写多线程代码,通过输出内容可以看出是多线程运行的。(写了一个出现并发问题的代码)14. 如何解决这个多线程问题?(加锁)15. reentranktlock相比另一个锁,为什么更灵活?(trylock,公平锁)16. 什么是公平锁?17. 从你学过的课程里面,你觉得如果要实现一个锁,最关键的是什么?(答保证操作的原子性)18. 原子性是什么?19. 获取锁的过程需要几步?(答要获取到锁,把互斥变量改为1)20. 什么叫获取到锁?(答用cas操作记录下获取锁的线程)21. 什么是cas?是干什么的?22. 结合上面这么一条链路,你觉得实现一个锁最关键步骤是哪个步骤?(答cas)23. java能实现多进程吗?24. 线程和进程的区别?25. 你刚刚说的,启动qq会启动一个进程吗?手撕1. 链表里倒数第k个元素(一次遍历)跟面试官说上午刚写过这个,讨论实现方式和时空复杂度2. 把数组转化成二叉树3. sql,先设计表再写sql(sql太不熟练了,才写了一般面试官说时间到了就没接着写,中间还问了关系表的“关系”是什么,数据库三范式)#牛客AI配图神器#
投递抖音信息等公司10个岗位
点赞 评论 收藏
分享
评论
54
461
分享

创作者周榜

更多
牛客网
牛客企业服务