几周前我第一次作为面试官,对一位投了我们实习生职位的同学进行了电话面试,结果是这位同学被我拒了。也算是我第一次当面试官,写点字记录一下。
某周五收到经理一封邮件,叫我联系一位同学进行电话面试,同时邮件里附上了简历。并且经理又告诉我,如果这位同学入选了,最后会安排来帮我的忙。所以我对这场面 试还是很重视,也是很期待的。
首先是看简历,乍一看排版比较简单,于是不敢怠慢,因为据说牛人的简历常常排版很简单。再看内容——希望国某排名不靠前但也算出名的大学本科 CS Major 在读,嗯,学历上没有问题。海外求学经历略有加分,只可惜不是牛校。再看技能,Java 和 Python 精通,嗯,正好是我现在用的最多的两种语言,加分。其他么,当然少不了人人都(以为自己)会的 HTML, JavaScript, CSS……最后还有 MATLAB。然后看学的课,该学的基础课都学了,貌似还特别喜欢图像处理。项目经历里也有一 个 HDR 图像生成的项目。嗯,这么看来面试应该有得聊,他一定想不到当年我本科 FYP 也是搞的图像处理。
于是开始准备面试题,从经理那边要来一份题库,看了下,大部分我也不会:-( 只好慢慢挑,找了几条挺基础的题目。代码题找了两条,都是挺简单的。最后又准备了一道 当年我去 Google 面试的时候被问到的题目,算是智力题吧,如果答上来也能当代码题做(不过我那次没有被叫写代码)。嗯,题目准备的差不多,我再把客套题也准备了下,比如自我介绍啊,介绍自己做的项目啥的,都想了一下要怎么问,我这准备也算是充分了。
周一早上约了个下午面试,下午我准时打了电话过去,面试顺利开始,这都没啥好说的。
客套了下,叫自我介绍,再介绍一下项目经历,实习生嘛,项目经历也没太多可聊,于是就直接开始问问题了。
先问了个 OO 的概念多态,嗯,反应不快……想了会儿还是基本能答上来。
再问了个 Singleton,呃,不知道,想了一会儿能说个大概,但是不知道怎么实现。
再问问进程和线程的区别,这个就说不大清楚了,除了一个进程能有多个线程外,好像其他就都不知道了。
再问进程间常用的通讯方式有哪些,这个就……也啥都不知道了。
也许没上过 OS 课?他又说上过……好吧,也许你们学校教的比较简单吧。
没关系,会写代码就行,反正招来也就是写代码的~
折腾了半天,打开了 collabedit.com,一个协作工具。
于是第一题
方法输入一个字符串,里面包含一些空格分隔的单词,将这些单词逆序排列,并仍旧以空格连接成字符串输出。
提示了可以随便用啥语言,随便用什么库。输入里没有奇怪的东西,不用考虑异常和边界。
既然 Python 精通,我想这题目可以用 Python 快速搞定,本来这题的目的也是热身。不说写个 Python One-Liner,写个 Loop 也就几行的事。可是,这位同学选择了用 Java……那也行,没啥不好,Java 也就稍微多几行嘛。结果后面就开始磨蹭了:先是声明个数组存单词,可是又不知道单词有多少个,倒是知道数组长度不能变,于是怎么办?不知道有 List…… 这下好,想了半天,真机智,先数一下有多少个空格,再声明数组吧…… 于是继续写,呃,好像又搞不定,数完 空格,不知道怎么把词搞到数组里去……好吧,再提示一下,别折腾了,可以用 String.split 啊!于是擦掉,改用 split,得到了一个数组,可是怎么把它倒过来呢?啊,有个数据结构叫 Stack,FILO,嗯,就用它!少年你怎么能如此机智……把一个数组倒过来输出,需要用一个 Stack 吗?Anyway,最后得到了一个逆 序的数组,可是不知道怎么拼成字符串,算了就这么输出吧。这段代码写了有20分钟吧……
于是第二题……也就可以不用写了。本来我是准备了一个求二叉树高度的题目,也没啥难度,递归的话就几行。
嗯,这样子不开心,不如再问个题,于是把 Google 的智力题问了,想了一会儿,这题目倒是能想出来怎么做,当然代码就不写了吧。
后面又客套了几句,什么你有啥要问我的之类,后来我也记不清自己说了啥就拜拜了~
终于完了,我跟经理说,这人不行。经理说你要求太高,我说字符串单词逆序不会写…… 这下经理没话说了。当晚回去后我还纠结了好一阵,也算是我第一次面别人,把人拒了会不会不好。甚至想到晚上睡得都不踏实,总觉得据了别人挺不好的,是不是我真的要求太高了?我事先没说面试要考写代码,会不会不公平?他是不是紧张 了?
后来我又看了一遍这位同学的简历,Java 和 Python 精通…… 于是我决定拒了他。