转发: Arista 面经,电面后offer

第一次在地里发帖,之前断断续续浏览地里的分享收货颇多,现在也想回馈一下~
Arista是一个Network Device Company,比较专注于高频交易领域。虽然是network company,但是公司一直都强调他们的software solutions,基于操作系统的扩展,然后可以根据客户要求快速灵活部署。我朋友的朋友在那里实习过,对公司评价很高。我之前在湾区的时候,我室友公司的旁边就是Arista的hq,每次路过都会看两眼,印象还不错。公司software主要基于近似C++的语言开发,操作系统没办法嘛肯定很底层。所以他家面试也确实非常偏向底层,对system programming的理解要求比较高。

lz是CE的本科应届生,在加拿大,得到面试机会是career fair上投的简历,他家在高通旁边,好多人排高通然后我就挤了进去投了简历。第二天在campus面的第一轮,很基础的编程题,但是有好几道。他家面试特点是都要ssh到server上然后用vim去写。通常写完还会直接gcc编译然后run。。

第一轮问了好多小题,比如char * 和char []的区别,看一段程序理解是在干什么(其实是bitwise operation),分析程序复杂度,给一段程序问需要多长时间(比如200ns)运行完(先分析程序目的,然后复杂度,然后分析memory behavior,lz还说了cache hit/miss的区别,然后按一个cache hit用3 cycles来大概估计运行时间是xxx ms)。接下来算法题是merge two sorted linked list,然后第二道是find bianry tree successor。写完之后要compile和test过。。

过了一周给了phone interview,第一轮是design a stack。虽然这是他家常考的题,而且感觉也不太难,但是lz答得并不好,因为面试官有很多要求,而且必须按照他的思路来想。事后想想其实这个问题远没有那么简单。比如通常来讲stack可以是linked list或者array实现,然后要分析一下两种情况的复杂度(best, avg, worst case),我其实一开始想用linked list,但是面试官说要用array,并问为什么。想了想说cache performance会更好。同时当array不够大时需要resize,每次按照double的关系去resize,不够面试官提示说可以不用每次double(我其实不太懂。。)。然后真正实现起来,用C++,需要写一个class,设计好接口,然后面试官要求要用template实现。。。之后具体实现要求code质量很高,比如要加const keyword啊,要抛exception啊之类的。其中还问了一个挺偏的问题,问如果C++中对NULL pointer call member function会发生啥。。我其实也没说太明白,最后面试官说它会call NULL pointer之后有一个offset的address,这是C++member function的原理。然后问virtual memory space上NULL旁边是啥,我说是text,他说其实不是,是一个什么什么readonly的东西。我说我确实不知道这个(lz之后还特意去查了半天,还是没查到这个到底是什么)。然后又问这个stack怎么优化啊,面试官又说可以用memory pool之类的呀等等。

事后想想,其实还可以再优化得好些,比如这个stack能不能做到thread safe,是通过lock来做到,还是用些更高级的technique,比如可以用lock-free的办法使用Double CAS instruction,再高级一点可以RCU (Read Copy Update)。顿时觉得自己实在是答得不太好。。

结果过了几天给了第二轮phone,还是ssh然后vim,问了memory操作的问题,然后聊到怎么判断这个machine是little/big endian,然后算法题倒是很简单Fibonacci,分析复杂度,然后简单改写成dp同时优化到O(1)空间。也是现场compile跑过。

接着居然直接就在电话里给offer了。。我有点惊讶,原以为需要跑过去onsite几轮呢,结果直接就给了。不过他家要求必须要有两个references…… 一个是internship时我的manager,一个是professor…… lz之前还没听说过本科生找工作需要reference而且是直接打电话过去聊。。

总体来看面试并不难,但是需要有比较好的low level system programming skills,同时课上的基础知识要理解到位。还是很practical的。而真正要扩展的话,简单常见的反而空间更大。

第一次发帖写了好多,好像有点啰嗦了。。 不过最后求[],真的太少了,很多帖子都看不了很可惜。。。谢谢各位了!

作为一个本科生。。。楼主真是实力超凡。一些东西现在我都没理解,太厉害了