上岸字节基架后端,这条赛道人少点

2023-01-30 11:01:09 浏览数 (1)

作者:阿秀

校招八股文学习网站:https://interviewguide.cn

这是阿秀的第「221」篇原创

你好,我是阿秀。

很多学弟学妹都一致纠结到底是学C 还是Java好呢?其实以前就聊过这个问题:Java or C ?选哪个?、再次认真聊一聊,Java or C ?

不过也有些人看的比较开,不选择这两种后端语言,而是将目光转向了另一种这几年比较火的编程语言Golang上,按照他们的话说就是这条赛道人少点。

阿秀已经分享过很多校招上岸经验了,其中有Java的,也有C 的、还有前端、测开、测试等方面的,也有一些算法岗的,但在我印象里貌似还没分享过选择Go语言上岸的文章,今天就来分享一下一位学弟的校招上岸字节系统架构的总结文章,他的技术栈就是Golang。

这篇文章是今年九月份这位师弟分享在阿秀的学习圈中的,现在已经快十二月份了,如果你想与他一对一沟通的话可以在阿秀的学习圈中的「精华区」找到本文作者。

以下是原文,其中的我代表这位师弟本人:

1、第一次转折点

2、第二次转折点

3、第三次转折点

4、我的面经(一二三面)


这里是迹寒,对于秀哥给我的这次机会,我十分感激,我想借这个平台给大家介绍一点秋招的经验。

秋招也是成功拿到字节提前批offer~,回顾这几年我感觉自己有几比较关键的转折点。

第一次转折点

我比较幸运,本硕都是985,本科读的光电,硕士读的计算机。虽然说学历还行,但秋招我还是碰了一鼻子灰。

本科专业和计算机不沾边,而且当时很想搞硬件,很长时间都在准备出国,2月拿到美国某名学校offer。

但是很不巧,那年是2020年,充满厄运的一年,疫情彻底改变了我的人生轨迹

隔离期间,我在家无事可干,便抱着玩的态度打开leetcode刷题,当时没想太远,就是想体验一下编程,结果这一刷就是三年

截止今年为止,我的力扣刷题量大概在900 了。

2020年8月底,我收到学校的电话,问我想不想保研,我当时还犹豫再三,最终选择保研,进了计算机专业,研究计算机体系结构。

现在想,我那时还是做了很正确的决定,没有去美国读硕士。

第二次转折点

本以为读研就万事大吉了,大厂offer躺着就能拿到手。

结果我发现事实并不如此,因为没经历考研,我的计算机基础可以说是0。

于是研究生前两年,我基本在恶补基础课:数据结构、计算机网络、操作系统、数据库等等。

但自学还是没老师讲的明白,许多知识都一知半解,后来也是各种看经典书籍、啃大黑书,才弄明白好多东西的。

读研期间导师给了一个课题,但是后面就不管了,基本是自己在做,但我还是坚持了下来,做了一个小项目放在github上,虽然做的很辣鸡,不过还是被我放在简历上。

我的项目的模板是geektutu的go分布式系统,有兴趣的可以看一下,写的很详细。

我从去年9月开始学习go,推荐看尚硅谷go教程:youtube、bilibili,是韩顺平老师主讲的。

然后就是一些教程,Go语言圣经(翻译国外)和Go语言42章经(李骁著);

有一定基础之后再看看geektutu的项目教程,每一行代码都有讲解。

正是凭借这个项目,我在今年3月拿到阿里实习的offer。

关于Go语言的学习路线和项目推荐,我看秀哥也写过,其中也推荐过geektutu的项目:https://interviewguide.cn/notes/02-learning_route/02-language/02-golang.html

记得当时的面试官(阿里P7)没有问八股,一个劲的问项目的细节,我也非常顺利的答了出来。

第三次转折点

今年的6月到8月,也就是2022年608月,我都在阿里实习。

在这之前,我对程序员的理解仅仅是停留在各种媒体的报道中,最显著的标签就是高薪钱多秃头裁员等。

真正进了大厂,我的认识才被刷新。

第一次看到这么多人在一起写代码,做一些很酷炫的产品,不管是手机上的APP,还是背后的云技术,都在深深改变我们的生活。

我的mentor很好,任何不懂的技术,问他就能解决。

Leader是P8,待人十分温柔,没有发过一次火,专门指导架构设计上的问题,在阿里八年就实现了财富自由。

7月8日,我投递了字节提前批,这也是我秋招第一次投递,相比之前的简历,我加了实习的内容。

当时想着提前批练练手,秋招再认真找,毕竟提前批和秋招是两个独立项目。

然后就随便投了一个客户端,7.18第一次面试到7.25三面,我都没好好准备,面试也没遇到啥大问题,结果过了几天,hr就通知我挂了,原因是方向不匹配。

我当时白天实习,晚上面试,一个人在杭州,离爸妈十万八千里,工作 想家让我觉得非常累,但上次的失利也让我感觉非常不甘,私下里也是一直复盘。

好在不久之后,我的简历就被另一个部门捞了,hr小姐姐很好,主动加我微信。

有了上次的教训,我决定认真看面经,我主要看秀哥的学习总结,秀哥以前的学习笔记很清晰,也很全面,给了我很大的帮助。

在跟他的聊天中我得知这是他以前的学习笔记,并不是各种拼凑在一起的八股文,确实质量很高阿秀的校招求职笔记PDF版本

实习期间,我也用到了很多基础技术,用的过程中就自然加深了对知识的理解。

8月1日到8日,我面完了3面,第二天,hr就通知我过了。

不得不说,字节的效率特别高,过不过的另说,至少整个过程不拖着你,快刀斩乱麻。

8.17日我拿到了oc,真的巨开心,感觉所有的累都是值得的。

总的来说,我觉得面试考的不是你背的能力,而是独立思考和知识栈的深度;

平时最好养成写博客的习惯,自己亲手写的东西更容易理解记忆,最好能参加实习,感受真正的业务场景;

面试时候不要紧张,多说点话,也不要不懂装懂,知之为知之,不知为不知;

面试后不管过没过都应该记录面经,去修补知识漏洞,这样才能不断提高面试能力。

今年已是极寒之年,只要经历过,不管成功与否,都足以铭记一辈子。

我的面经

8.1 字节系统架构一面

1、上来面试官自己介绍了自己。(太尽职了) 部门的业务,主要做边缘计算,包括基础设施,PaaS,SaaS,FaaS,存储,云原生等。

2、问项目中遇到哪些问题,如何解决的?

我一想,我还没介绍项目就问如何解决,是不是有些不合适,就果断介绍项目。

结果面试官没怎么听,直接又问了一遍刚才的问题。 。。。

3、k8s了解吗。

4、TCP是怎么保证可靠性的。

5、接上题,发送20个包,第三个包丢了,发送端和接收端会怎么做。

6、MySQL有哪些隔离级别。

7、MySQL间隙锁知道吗。(知道是解决“幻读”,不知道原理)

8、接上题,问“幻读”解决什么问题。

9、了解哪些分布一致性协议。(Paxos,Raft)

10、介绍一下Paxos协议。

11、如果发生脑裂怎么办。(IO hence,忘了)

12、写个SQL,从表中获取学生的名字和选课最多的前五个学生。

13、编程 最长的回文子串。 让我先讲思路,我讲了一个O(n^2)的,面试官说还可以优化。(不会) 力扣上有O(n)的实现,不过用的是manacher算法,我打死都不背。 面试官叫我运行,结果报错了,尴尬的一批,还好面试官说思路是对的。

14、编程 go基础语法 复制代码 1 2 3 4 5 6 7 8 9 10

代码语言:javascript复制
func main() {   
  defer A{     fmt.Println("defer1")   }()   
  defer B{     fmt.Println("defer2")   }()   
  fmt.Println("main")
} 

main() 打印结果是?

15、虚拟内存知道吗?

16、什么时候会发生缺页中断。

17、死锁如何避免。

18、系统什么时候陷入内核态。

反问: 你们部门用什么语言? 你们部门base在哪?

8.3 字节二面

面试官看我简历比较有特点,问了linux 文件描述符1,2,3,-是什么意思。

自我介绍 项目(10min) 针对项目狂问。

1、你们的项目架构是什么样的。(说了一大堆)

2、hook的原理知道吗。(不知道)

3、 有三种代码覆盖率统计方法,你知道吗?(语句覆盖、判定覆盖,分支覆盖)

4、代码覆盖率为什么要达到80%

5、MySQL的DoubleWriteBuffer是什么?为什么要关闭?

6、aio的优点和缺点是啥?(优点我知道,缺点。。。)

7、aio是半异步模式还是全异步模式?(???)

8、网络IO发展历程。(从阻塞IO到reactor模型)

9、题目:链表倒数第k个节点。 写完之后,知道太简单了,又问,返回值如何写注释,应该返回哪些标准错误。

反问: 同一面。 这次面试直接把我打回原形,觉得自己确实还有很多不足的地方,是纸老虎。

8.8 字节三面

面试官全程没开摄像头,可能忙别的事。

上来介绍项目,我叽里呱啦说了一大堆,发现只用了四分钟。

1、你们的文件系统和别的文件系统(比如AFS)相比有什么区别。

2、问你们项目一个完整的IO路径是什么样的。

3、项目中遇到什么难点,怎么解决的?

4、介绍一下aio模型

5、多线程模拟aio和linux原生aio有什么区别。(libeio和libaio)

7、epoll和poll有什么区别。

8、TCP的拥塞控制。

9、实现一个队列,能够入队,出队,统计最小值。 我的方法是队列queue map,感觉还可以优化。

10、红黑树原理是什么。(只记得旋转,平衡,其它都忘记了)

11、红黑树优势。

12、A,B文件各有50亿条数据,内存无法放下全部数据,问如何快速找到两个文件公共数据。 我说用哈希,但是面试官说不对。

13、对什么语言比较了解。(C ) ,new/delete和malloc/free有什么区别。

14、有继承的类,new/delete构造和析构的顺序。

15、什么是多态。

16、你有看过什么开源项目吗?(Ceph)

17、Ceph的CRUSH算法原理是什么。

做题:最长不重复子串。

反问: 你们部门业务场景? 面试多久出结果?(一周)

一起加油,跑下去,太阳自然会升起,不要在黎明到来前的一刻被黑暗吞噬了。

0 人点赞