第一次实习面试——字节跳动


自己学的是电子,但是一直都想往计算机转,这几年自己弄了不少项目都是计算机的,以后的规划是读完研究生直接找计算机的工作。
我也向学长学姐打听了很多,大概知道了一些打法,自己在找工作之前需要掌握哪些技能。基础+算法+项目,这些我都已经规划好了,但是一直拖着,在忙别的事情。本来以为只需要在硕士毕业之前准备好就行,没想到挑战来得还是太快。虽然离硕士毕业还有三年,但是今年面临着找实习的问题,在秋招季拿着自己的项目经历投了几家大厂,本来海投不报希望的,但是最终得到了字节跳动的面试机会。
那天我接到HR电话的时候就不知所措,我知道虽然我投的是后台开发岗位,但是一面向来都是不问项目和技术栈,而是重点问基础和做算法题,而这个时候我还什么准备都没有。
于是在不到一周的时间里,我只能每天学到晚上,打开牛客网的剑指offer刷题,在面试的前两天看了看计算机网络和操作系统的面试知识点总结。最后临近面试感觉总算到了一个至少不会被立马拆穿的状态。
国内时间晚上8点面试,也就是我这边的早上7点,先做了个自我介绍,然后就是直接开始算法题,求一个二叉树的最长路径,这应该是一道很经典的算法题,然而我却并没有做到过。刚起来加上有点小紧张,以及自己对二叉树并不是很熟练,导致第一道题直接崩了,想了一会儿先是要了个提示,然后又过了一会儿只好说想不出来,面试官给我换一道题。
这道题是给一系列区间,要求输出合并之后的区间结果,最开始我的想法是每个区间都和后面的区间进行比较,写了还是好一会儿之后面试官问我有没有更好的思路(我一边写代码他都能实时看到。。),还好我终于想到先对区间的左值进行排序,这样只需要比较相邻的两个区间而不需要每次都遍历了。然后写了一段代码比之前简洁得多。
之后就没有算法题了,问了一下计算机网络中的三次握手和四次挥手,以及HTTP协议和HTTPS。我准备的操作系统并没有问到。然后又出了一道题,说爬虫的时候要检测重复的URL,问如何设计一个数据结构用来存放URL,我最开始想的是用集合,面试官说了内存的限制,比如URL文件有8G,内存只有1G,硬盘有100G。然后我说用数据库(其实我对数据库一无所知),面试官说数据库也要考虑内存的问题啊。最后我想到用文件夹名和文本文件名作索引。这个方法至少解决了内存的限制。不过看起来面试官心里想的并不是这种算法,一直在说我这样会怎样怎样,然而我实在是没想法了,只能说这样的话解决了读取的问题。
最后面试官还问我数据库的问题,然而我只能告诉他我没学过数据库,面试官说你知道数据库在开发中的重要性吗,,,他还问了我我的机器学习算法是自学的还是学校的课,最后让我问他问题,我问实习生平常主要干嘛,用什么技术栈,就结束了。
迟早都会面对自己的第一场面试,只是我的第一场面试来得我毫无准备。当时拿到面试机会的时候,我想的就是不能因为自己过不了就不去面试,面试还可以让你积累更多的面试经验,也许这一次没过,但是以后就算准备好了基础和算法,不也需要这样的面试经验吗。
之前大学三年做对了的地方就是一直在往计算机靠,无论是做了几个比较大的项目都是计算机相关,让我得以在实习的时候投后台开发,还是自己自学一些课程以及有意识地了解算法,至少给了我一些初始积累。能进入大厂的面试环节,说明自己努力的方向是对的。但是在有了这些项目经历的同时忽略了对基础+算法这部分的准备。之前一直沉迷于各种小项目,我很愿意花时间在上面,很享受开发的过程,自己折腾了不少,也学到了一些东西。对Python、Linux、Git更加熟练,爬虫、网站、深度学习,这些应用都上手过了,也有了自己的GitHub主页和个人技术博客。但是直到这次面试才真正醒悟,是时候不要继续那么沉迷于这些项目,接下来,花更多的精力,专注于算法的准备。
还好大学还没毕业,还有一年的时间给自己准备一下。这次回国之后,剩下的一年,目标明确,好好沉淀,好好看专业书籍,既然知道了自己还欠缺什么,那就趁着大四事情较少去花大量的精力弥补,不去补这些基础课,在找工作之前永远都会存在没有填的坑。
到顶部