26届秋招字节后端一面面经详细版(已更新二、三面)
感觉之前发的心得分享流量有点低,在此引流一下:美团后端暑期实习经历+S级转正心得分享
二、三面及后续timeline已更新:26届秋招字节后端二+三面速通面经详细版(附timeline)
timeline:
当天投递半小时后约面,9.1一面,面完立即约二面(已OC,二、三面后续更新)
总结:
主要关注实习(30min),少量八股和场景(12min)+mid+hard算法两道(20min)
详细:
先自我介绍,重点讲解一下实习做的是什么业务
1.详细说一下你实习的整个系统,让我看看你对系统的理解
答:实习相关,略(这部分可以结合自己的实习内容,重点在于梳理整体的链路,你主要负责的服务位于系统上下游的位置,和哪些上下游进行交互,提供什么功能,为了完成什么业务)
2.你们系统如何保证分布式系统中的一致性?
答:适当扩展一些分布式一致性的八股,细说我们系统采用最终一致性的方案
3.你在实习中遇到最大的技术挑战是什么?
答:这个因人实习经历而异,但是每一轮面试基本都会问这个问题,需要重点关注
----------------开始八股----------------
4.询问我的语言,我回答cpp转Java,问我cpp和Java的区别
答:cpp翻译为机器码运行,而Java是翻译为字节码在JVM上运行,运行速度较cpp慢但是换来了更多平台的兼容性;以及cpp需要自己管理内存,不再引用的对象需要手动释放,而Java有自己的GC机制进行垃圾回收,不需要复杂的手动管理内存,减少内存泄露风险;以及还有一些类的继承上的差异以及指针有无的问题;
5.那Java的GC机制是怎样实现的?
答:详细回答四种垃圾回收算法(标记-清除,标记-整理,复制,分代回收)以及对应的垃圾回收器(CMS,G1,Serial,Parallel等)
6.什么是数据库事务,事务的基本特性是?
答:事务指的是我们对数据库的一系列操作,特效是ACID,a为原子性,事务要么全部执行成功提交要么全部失败回滚;c为一致性,比如转账扣钱,事务执行前后两方数据变化保持一致;i是隔离性,多个事务并发操作互相隔离,互不干扰;d是持久性,事务一旦提交结果将提交到数据库,系统崩溃也不丢失;
7.Redis有哪些常见数据机构?
答:首先是最基础的String,可以用来存储字符串、整数和浮点数;然后是List,双向链表实现的集合,支持范围查找和左右两边插入;以及Set,存储一个集合,可以用来去重,还可以计算交集和并集,以前做过一个论坛系统,用户的共同关注就可以使用计算交集得到;还有对Sorted Set,顾名思义就是排序的Set,基于跳表实现,可以自定义排序规则,可以应用于排行榜;还有Hash,便于进行对象的存储;
8.了解Redis热Key吗?如何解决热Key问题?
答:热Key是指在短时间内被高频访问的Key,可能导致该redis节点负载过高,响应变慢甚至宕机;解决方案我能想到两个,一个是做一个本地缓存缓存热Key数据,减少对Redis的访问;第二个方案是对热Key进行分片,将一个热Key通过哈希分片到不同的节点,减小对单节点的高频访问;
9.那现在有一个10g的大文件,里面存着不同的ip地址,你只有1g的内存,如何找出里面出现最多ip地址的top10?
答:把这个10g的大文件通过内存读入和写出,打散为100个文件,这样每个文件只有100m;在对100m的文件进行处理,使用哈希表对ip出现次数进行计数,遍历完100个文件,再维护一个容量为10的大根堆,从哈希表中拿出出现频次最多的10个;
10.如果里面ip地址重复的数量特别少,你这1g内存是不是还存不下你的哈希表呀?
答:我刚刚的方案确实考虑不周,那我干脆只用大根堆维护每个文件的前十个出现频次高的ip,遍历到到最后最坏情况只有1000个ip和他们的相应的出现次数,再把同ip的数量合并,取top10;(我感觉这个还是有疏漏的,无法避免非top10后面少累加)
----------------开始算法题----------------
11.来写算法题
题目一:输出二叉树节点的和
leetcode中mid难度,我用的dfs递归;
题目二:接雨水
leetcode第42题hard难度,我用的双指针;
----------------反问环节----------------
12.问了面试官业务
13.问了流程:常规是三面+HR,开大包会加面
#字节求职进展汇总##字节跳动##后端##字节##发面经攒人品#