Post

[复盘] Arista Networks第一轮面试后,被拒

[复盘] Arista Networks第一轮面试后,被拒

我人生的第一场技术面试。

Arista Networks只允许在C/C++, Java中三选一进行coding interview,因此我此前一直用的python毫无用武之地了。

用什么语言刷题

说起来我在刚开始刷题的时候就纠结过这个问题。我会C++和Python,两种语言的熟练程度差不太多(都不行),我看了很多人的经验贴,也问了一些大佬,基本大家的答案都是选python。因为python写得快,不用在很多语法问题上卡半天,可以更专注在算法本身而不是细枝末节上。

我觉得很有道理啊!从那开始我就专注python刷题,python学算法,选的算法课也是以python举例的课(MIT 6.006)。为了让python越写越快,后面做项目也选了Django来做,这样双向促进学习。

谁知道我人生中第一场技术面试不允许用python……

收到HR邮件之后我就开始了为期四天的C++复习。是的,从我决定用python刷题开始,我就一点都没再碰过C++,我至今写for循环都不记得打括号,python真的已经形成肌肉记忆了……!

用C++刷了四天的leetcode和hackerrank,基本上就是复习基本语法,然后把glassdoor上看到的面试题找出来做几遍。我自我感觉已经100% prepared了,于是自信上场。

面试过程

一打开CoderPad我就懵了。我一个用leetcode, hackerrank, Visual Studio的人,哪会用GDB啊……不会debug,连run程序run出错了都不知道下一步要怎么办。

界面不熟悉这是其一。第二个问题是,leetcode, hackerrank这种更注重考察算法而不是基本功的网站,至少我是没见过输入参数长这样的:

int FunctionName(char* v1, char* v2)

如果要比较两个字符串,我理解怎样都应该是

int FunctionName(string v1, string v2)

开局吧?

我都忘了,原来在公司每天搞得焦头烂额的,就是在那不停地找指针,这个指针指到哪里去了,那个指针又是个什么鬼。结果第一步,零零零基础的,怎么获得指针指向的字符串,就把我难住了。

当然面试官人很好,给出了很多建议,也看出来了我平时不怎么写C++(其实一年前我都是写C++的,但是自己写C++从来不给自己使绊子……),总之是磕磕绊绊地,在第一题,用python可能10分钟就写完了的easy难度的题上,卡了一小时……

其实第二题也是easy难度的题,不过面试官希望我用二分法做,而我没时间写了,就口头描述了一下。

面试一共90分钟,原本应该要做出来3道题,写完第二题已经75min了,原本要留出来45min交流coding以外的事情,现在只留了15min。

其实我觉得我沟通还行的。我原本以为半年没说英语了,现场可能会开不了口,但实际上我感觉沟通方面十分顺畅,也有可能是面试官向下兼容了,但至少在英语这方面没有打击到我的自信心。

面试题

第一题是给两个软件版本号 v1v2,版本号是这样的格式:"1.100.2", "2.3.1.4", "1.1"。 比较这两个版本号的大小,有一些规则啥的。

很简单的题,把字符串按点分开,然后每个小字符串转成整数,再比较就行了。没有涉及到算法。

但是这题用python,一个split函数就能解决的问题,在C++里需要手动实现这个步骤……而我,卡在这里一会之后问面试官:C++里有没有像Python的split那样的函数……?

面试官:据我所知没有的。

好吧,只好硬着头皮处理字符串。如前所述,这个处理甚至卡在了第一步,获取这两个字符串。

说实话,比起失去信心或者受到打击,我更多的是感到丢脸……这家公司在organize面试之前还把我成绩单收走了。我拿着TCD的1:1学位,连easy难度的题都卡了一小时,感觉给TCD丢大脸了。

第二题是给一个连续数组,这个数组有且仅有一个数字是缺的。比如[2, 3, 4, 6, 7, 8],找到这个数组中缺少的那个数。

我直接就写了这个数组不缺数字的时候的Sum,减去这个数组实际上的Sum,得到的结果就是缺少的那个数。很straightforward,但是效率是O(n)。面试官让我想个效率更高的办法,我说二分法可以做。然后口头描述了一下就只有不到15min了,没让我写。

feedback

其实没有找HR要feedback,我自己感觉表现就不好。最后那15min我就直接问面试官了,你觉得我表现得怎么样。

面试官人真的很好,讲话都不敢说重。他说原本90min你should have solved 3 questions, now you only solved 2. And you supposed to implement the binary search at least.但是还给我找补说,看得出来你的main language不是C++。

我说对,我最近在做我的personal project,是用python做的,所以有一段时间没写过C++了,但是真的做起项目来还是很快就能pick up。

他说我理解,但是我们没有Python面试,对你来说最好的选择就是C++了,也没有办法。

这话一说我就知道这把面试结果不好了。

总结

虽然结果不好(今天也确实收到拒信了),但总的来说还是很庆幸第一场技术面试不是微软(我的第一志愿),而且如果这场面试结果positive的话,为了准备下一轮面试我还得继续扑在C++上,那我的算法学习又得继续卡着。

我的Graph卡了一个多月了还没学完,BFS和DFS至今不会应用……还是要算法优先才对!

另外我感觉自己的英语还可以,真的面对面试官的时候,还是很能侃的!我只是不会small talk,幸好面试不考small talk!

This post is licensed under CC BY 4.0 by the author.

Trending Tags