Mythsman


乐极生悲,苦尽甘来。


我的牛客网面试经历

前言

近期发现有很多同学通过搜索 “牛客网怎么面试“、“牛客网面试怎么作弊“之类的关键词进来。。。感觉职场还是要多一些真诚,少一些套路😊。

起因

其实本来我并不知道牛客网也在招人,不过一直觉得牛客网这个平台非常棒,之前也在这里刷过一些题目,平时没事的时候就会到讨论区默默窥屏,看看大牛们是怎么面试的,顺便也将自己的经历分享给其他人。一次偶然的经历,我得知了牛客网似乎也在招聘,抱着试试看的态度,就投了一份简历过去。可能由于是初创的小公司,办事效率很高,第一天晚上投简历,第二天就打电话约面试,第三天晚上就正式面试了。而且让我没想到的是,面试官就是牛客的CEO叶老大。。。

面试过程

和我想象的不一样,这次面试没谈项目,没谈人生,没谈理想,也没谈什么诗和远方。我想应该是由于面试官本身是一个资深程序员,相比hr出身的面试官,更有务实性,给人一种talk is cheap的感觉。不过我也没感受到来自他的压力,他本人应该是那种文静随和的类型,不会大段大段的罗嗦,而且,很显然他早就准备好了套路,估计也是阅人无数的那种类型。下面简要整理下这次的面试过程。
我们是在牛客网的面试平台上进行的,让我耳目一新的是,面试平台不仅仅是视频聊天,还可以直接编程运行。而且你所敲的每一个字母,面试官那里都能实时显示,所以可以非常方便的就代码进行沟通。当然,这样也基本杜绝的作弊的可能。
和我之前说的一样,主考官非常务实,上来就说我先搞几道题试试。。。
题目是他当场边打字边解释。

第一题

第一题大概是热身,让我实现一个字符串比较函数。
显然这个还是很简单的,不过发生了一个小插曲,就是他让我实现的函数名叫strcpy。。。我不知死活的向他提议何不改成strcmp。。。他想了想似乎很有道理,把函数名改成了strcompare。。。
题目很简单,一小会就写好了,他研究了一会,试了试边界条件,发现没什么问题,这道题就算是过了。

第二题

第二题稍微考察算法能力,让我实现一个正则匹配的判断函数,也就是给两个串s1,s2,其中s1是含有*和.的模式串,s2是普通字符串,让我写一个函数判断s1是否能匹配s2。
这就体现出我楞的一面了。
我上来想都没想,直接用递归搞,虽然三下五除二把一些简单的样例过了,但是仔细研究则发现很多边界条件都不对。面试官则跟我一起看,有种帮我一起找bug的感觉,不过我心里清楚,要是我自己的bug让别人找到了拿岂不是很没面子。还好我当时没有太抽,研究了一会终于找到了那个小bug。面试官看了看,试了试几个边界,分析了下我的代码,发现没啥问题,就说ok。但是,他接着问,你能分析你这代码的复杂度么。。。我有点小懵,其实递归算法的复杂度我还真没仔细研究过,于是瞎猜了猜,感觉不太对劲。他想估计有点觉得我开始不靠谱龙,问我你知道递归函数的复杂度怎么算么。。。我忽然想起了徐老师乐此不疲讲的归并排序,就说应该是要解一个。。递归方程?他表示大差不差吧,这才算放过我。
正当我以为万事大吉的时候,他又问我,你能不能把你的时间复杂度降低一点啊,我想了想没想出啥好办法。。。他问我会不会动态规划。。。我。。。好久没刷题,想了一会才想出正确的解法。。。回头一看。。。这不就是个简单的不能再简单的dp么。。。虽然绕了一些弯子,不过好歹搞了出来。。。

第三题

面试官问我会不会java,我当然会,不过考虑到好久没写,怕手生,顺便也给自己台阶下,我表示我们虽然上过这课,但是课比较水,没有项目练手,他笑了笑表示了解。于是就让我说一下java中抽象类跟接口的区别。我当时短路,只说我知道接口只定义函数的声明,而抽象类的函数可以有具体实现。然后他问我一个类能实现多少接口,一个类能继承多少个抽象类,我这才想起来原来这也是一个区别。。。

第四题

这是我整场面试最大的痛。。。
问,给你八颗药,AAAABBBB,他们从外观上一模一样,现在我要每天吃一个A一个B,问有没有好办法。
我想了半天,表示我办不到,如果有什么好方法,我也会觉得很神奇。。。他笑笑表示。。。你回去好好想想。
回去我问了舍友。。。被嘲讽。。。

第五题

第五题还是挺有意思的,有种诡辩的感觉。
问,我们照镜子的时候,大家都说左右是反的,但是为什么不说上下是反的呢?
显然,常识告诉我上下是不“反”的,但是他这么一说,倒是真给人一种上下也应该是反的的感觉。其实问题的关键应该在于参考系的选择,我们说左右反,是因为我们以上下为轴来看的,这显然不够“有说服力”,如果我们把脑袋横过来看,把以左右为轴来看,那么上下也是反的。我当时感觉答的意思应该差不多,面试官表示其实这其实是个开放性的题目,主要看你能不能把你的话圆过去,只要没有太大的逻辑问题都行。

其他

总体上,整个过程下来感觉还是挺轻松的,主要是现场编程可能会有点压力。有人说小公司更加注重让你直接做事,大公司才注重你的学习能力,其实我倒觉得这个表述还是不够客观的,至少这次面试,面试官没有出任何项目经验(板砖)的题目,反而全是算法题和思维题,而且虽然公司是用java做开发,但是他也能包容没有很多java开发经验的同学。不过这次体验最大的收获应该在于,小公司有时候也不比大公司容易进,从工作角度讲,小公司的工作激情可能比大公司更高,从待遇上讲,一个有潜力的小公司待遇甚至不输BAT。
Exp++。