大约是下午两点半开始,不过由于他们工程师有事情,所以推迟了一个小时左右。这次给我面试是两位工程师,他们一共给我出了两个题,第一个题是C++关于指针基础的问题:
void testFun(char* pArg);
调用:
char* ptr;
testFun(ptr);
这样调用有没有问题?为什么?
这道题由于我经常编写C++程序,所以知道这种情况通常需要如下调用:
void testFun(char** ppArg);
char* ptr;
testFun(&ptr);
应该回答得还算可以。
第二道题是将整数以32位二进制表示,将其倒序输出,并给了一张纸,让我写出程序。可能由于我当时比较紧张(因为我太想进入创新工场了,为此已经精心准备了两三个月,还辞了爱立信的工作),这道题没有考虑到边界条件,所以写了两次没有写对,所以面试就这样结束了。
我很沮丧,这个本来是很简单的问题,我居然没有答出来。所以我没有立即离开,而是静下心来,把程序重新写了一遍,然后又等了那两个面试官一个多小时,然后找到他们说:“我刚才太紧张了,我又重新做了一遍,您看一下吧!”当时他们的感觉是很惊奇,因为他们都已经把面试结果交上去了,我在说这样做没有什么意义了。不过他们还是出于礼貌,看了一下我的程序,说是没有问题,然后把我客气的送了出来。
我在回家的路上,非常不甘心,连夜验证了我后来给出的程序确实是正确的,同时,我想他们也许不仅要考一下这个简单的程序,还要考一些底层编程的知识。于是我把跨平台性、执行效率等方面,写了一封邮件给他们发了过去。
然而我又担心他们不会看我的邮件,所以第二天我又特意跑过去,经过辗转数次,终于找到了那个面试官,他很客气的接待了我,但是并没有看我的邮件,只是很客气的告诉我,他们只是负责技术评估,具体做决策是人力资源部门来做,最后非常客气的把我送出公司的大门。