想来字节技术实习,看我这篇就够了!——保姆级面经大放送
我本人是中科大软件学院研二学生,明年毕业。找实习过程中面试次数很多,面试经历应该也算是丰富。
其中两段实习,都是在字节,总时长也有半年多了。字节对实习生的培养是很好的,一般是跟着mentor做东西,任何需要和疑问都可以和mentor提出来,认识很多实习生在字节也都在做很重要的工作了,对自己的技术和经历都是很不错的成长机会。
现在这个阶段,可能很多同学都在准备暑期实习的投递和面试,所以我决定分享一下我面试字节以及在字节实习的心得给大家!👇
整体面试指南:
一般互联网面试的流程都是比较固定的,拿字节技术面试的流程来举例,我面试字节的流程为:自我介绍->问基础知识和项目->编程题->反问环节。
下面我来说说这其中的一些心得和技巧。
关于「如何做自我介绍」:
自我介绍环节其实是一个给对方第一印象的环节,大多数企业的面试官在面试之前应该都已经详细看过你的简历,知道你的基本信息了,自我介绍环节其实在我的观点里是希望你能系统的再介绍一下自己的经历,对于求职者来说,自我介绍环节其实是展示自己表达能力的一个环节。
由于几乎所有互联网公司的每一次面试都会有一个自我介绍环节,我建议大家在招聘季需要密集面试的时候准备好一套自我介绍的稿子,演练几次,每次自我介绍的时候按照提前准备的自我介绍来说。这样能尽可能在自我介绍环节展示自己的优点和长处,也能避免自我介绍的时候表述卡顿给面试官带来不好的印象。
关于自我介绍的内容,我每次都是按照“学校-专业-所修课程-在校荣誉-竞赛奖项-实习经历-项目经历-社交经历(志愿者、担任班长、兴趣爱好之类的)”的顺序来做自我介绍。注意,自我介绍的时候不需要详细谈实习和项目的细节,只需要告诉面试官自己大概做了什么事情,完成了什么优化或任务就可以了。
这里有一个小技巧就是,如果你对某个项目/实习的细节把握很好,你可以在自我介绍里稍微详细重点的突出一下那部分,潜移默化会给面试官更深的印象,某种程度上会引导他在后续环节详细问那个部分。
关于「基础知识与项目问答」:
基础知识基本上都是计算机网络,操作系统,内存,数据结构,编程语言等内容,少数面试官会问一些智力题。想必这块大家都比较有经验了,这里我也不再详述了,类似“阿秀的求职笔记”这样的网站有总结梳理得很全面,招聘季的时候大家对着它查缺补漏就好。抛开面试来说,能熟练掌握这些基础知识对自己的成长也是一件很不错的事情。
项目问答环节的话,我的感触就是求职者必须对自己写到简历上的项目非常熟悉,能清楚地说出自己在其中做了什么事情,有哪些优化和改进,如果是常见的项目(例如web server)的话要能说出来自己做的和别人做的比起来有什么改进或者自己独特的优化。如果项目细节一问三不知的话在面试官心里会大大减分的。所以贴主建议自己不熟悉的项目就尽量不要写到简历里,可能会适得其反。
在这个环节被问到不会的问题是很正常的,不管面试官是bfs还是dfs地去探索你的知识栈,大概率都会命中到一些我们不懂的地方,这时候我的建议是,先和面试官说自己并没有详细地了解过xxx这块的内容,但是从我的角度和思考来看,我觉得它大概率是这样的:xxxx。也就是虽然你不知道某个问题的细节,但是你可以告诉面试官你的思考和理解,就算答案不对也能向面试官展示出你的思考,让面试官对你有比较好的印象。
关于「绕不开的编程难题」:
编程题是很多同学面试绕不开的一个难题,在这里贴主也没有太多的建议能给。我本身是ACM竞赛选手出身,对算法题本身就有着一定的积累,但是我也有系统的去刷过类似“Hot100”这样的题库,贴主当时刷题的方式实在leetcode上对着算法来刷题,leetcode或者牛客有按照算法分类的面试题,比如二分、双指针、滑动窗口、链表、字符串处理、动态规划、各类排序算法的实现等等算法归类。个人觉得对照这些刷一遍+刷完Hot100这样的题库是可以应对大部分面试会遇到的题目。贴主了解的,还有类似“小林code”,“代码随想录”这样梳理过刷题算法的优秀网站,对算法题薄弱的同学来说也会是比较好的学习途径。
另外大家要注意的是leetcode模式和ACM模式都需要积累,简单来说ACM模式就是自己写头文件、输入输出的模式,leetcode模式就是leetcode刷题时那种只需要自己实现solve函数的模式,这两种模式都要刷一些题准备一下,避免在面试的时候措手不及。
至于刷题的平台的话,一般公司的面试会议软件里都会有自己能写代码和运行的窗口(类似牛客和leetcode),也有个别情况下会让你在本地投屏写代码+运行。
写编程题环节也有一些技巧:
- 读完题目后对不清楚的部分向面试官确定,例如数据范围、边界问题、corner case等问题,题目描述不清晰的地方可以大胆询问。会让面试官觉得你解决问题思考比较全面,留下不错的印象。
- 在写之前和面试官说一下自己大概的思路,自己会用什么算法来解决问题,预估复杂度是多少,一般面试官觉得没有问题的话说明思路就对了,可以开始写了。
- 写的时候注意代码规范,时间允许的话可以留下一些记录自己思路的注释(比如某个变量表示的含义等),也方便面试官读你的代码,变量名要注意尽量可以反应变量本身的意义(非临时变量避免直接取a,b,c这种意义不明的名字)。以及重复使用的部分可以单独写成一个函数解耦成一个模块,让代码看起来简洁清晰。这些细节能让面试官觉得你写的代码很干净易读。
- 写完之后可以自己造几个样例测试一下结果对不对。然后对着自己写的代码再和面试官讲一下自己每一步的实现,说一下每一行/部分的代码在处理什么,是如何处理的。最后运行几个样例跑出正确结果给面试官看。
一般能做到以上几点,编程题这个环节就能比较完美地展示了自己的算法和编码能力~
关于「最后的反问环节」:
面试的最后一个环节,一般面试官会问求职者有什么想要问自己的吗。
这时候尽量不要说没有,这样会显得你对他们的岗位不是很感兴趣。如果实在不知道问什么,贴主这里有几个自己经常问的问题给大家借鉴:
- 部门具体是做哪些业务的,如果我去了的话大概率会做什么呢?
- 刚刚某个环节有一个问题我没有答出来,你能告诉我大概的结果/我能去哪些地方系统学习哪方面的知识吗?
- 面试结果大概多长时间可以出来呢?
最后的最后,一定要记得,和面试官笑着说感谢你,再见,不管体验如何,最终自己能不能过面试,尽量做好自己,留下好的印象。
在字节实习的感受
最后说说我在字节跳动实习的这两段经历的收获吧。在字节跳动实习的时间里,我可以接触到各种各样的项目和团队,从中学习和获得了许多新知识,尤其是字节跳动内部的ByteTech,经常能看到很多团队的技术大牛在其中分享一些技术文章,这让我不仅能接触到我工作的这一块知识内容,还能通过技术分享平台学习到别的团队的先进经验,拓宽技术视野。得到了非常珍贵的学习和成长机会。
我所在的团队非常尊重每个人的意见,这让我感到很赞,同时也为我提供了发展个人潜力的机会,可以独立负责很多有挑战性的任务,从技术选型到Design woc发布,从代码实现到最终launch都由你全权负责。对我来说,字节给了我很大的自由发挥空间,因此做完每份独立的需求我都觉得非常有成就感,也能从中复盘学到许多做事的方法论。
此外,字节跳动也有一系列的培训和发展计划,帮助实习生们一步步成长。你可以和同伴们一起交流技术,一起健身,一起参加兴趣小组。总的来说,在字节跳动实习的经历,不仅仅让我提升了技术能力,同时也帮助我提升了解决问题的能力和团队协作能力。对我来说。这是一次非常有收获的经历。
最后也欢迎大家投递字节,祝大家面试顺利,offer++!
加入我们,和优秀的人做有挑战的事!
#字节跳动##字节跳动工作体验##聊聊这家公司值得去吗##offer比较##我发现了面试通关密码#