发信人: lolhaha (长期骑驴,一直找马), 信区: JobHunting
标 题: 被VMWARE鄙视了(面经并求comment)
发信站: BBS 未名空间站 (Tue Apr 8 21:02:44 2014, 美东)
两年没面试了,想出来找找面试的感觉然后冲击一下版上公认的那些dream company,没
想到一出来就遭受当头一棒。
一月初的时候在linkedin上收到V公司recruiter的来信,说是在多伦多搞一个event,问
我有没有兴趣。
于是先做了一个online test,本来说还要有一个phone screen的,正安排的过程中一开
始联系我的猎头说直接来吧
这是2月中旬了,接下来的5-6周忙着手头的一个小project,业余时间大多给公司+网络了
,没什么心思准备。
3月21日开始,项目没什么问题了,开始刷了两周的leetcode,别的几乎什么也没看就匆
忙上阵了,本来只希望
积累点interview经验,为其他公司面试做准备。。。谁成想,两轮就被踢出来了。。。
旅程就不顺利,12点从家出来最后11点才进旅馆,第二天7:30就开场。
先是原定直飞的flight被cancel,然后弄了一个1 stop的,前后两段都分别延误了不少
时间
时间不定结果都没来得及吃晚饭。9点到多伦多,租车花了半天,冒着大雨开了几十公
里,
11点进旅馆屋里连水都没有,又饿又累就睡了
online test:
1)integer array, 0->9 , only swap once ,get the biggest result(consider the
whole array is an integer)
2)0,1 array,find a sub array,for the sub array, change all 0 to 1 and all 1
to 0,let the result have most 0
onsite:
1)一个黑丑矮的三妹,不过一直笑容可掬,搞得我误以为交流很畅,反馈很好。
上来似乎就问我对UI是否感兴趣,我虽心里一凉,但只好应当,用什么语言,做什么的
UI.然后说可以have a try.
似乎还问我跟low level面向OS的职位比呢,我说either is OK
==>难道我应该信誓旦旦的说很感兴趣?回想起来似乎来的6-7个面世官中有2-3都来自
于UI related team.
又问我的工作经历等闲聊了几分钟。
然后进入正题,题目就是把BT的node跟它的sibling相连。跟我说先实现,然后讨论复
杂度然后优化
对于这种高频常见基本题,我心中暗喜,心想看起来这轮肯定没问题了。。
先假装弄清题意,然后说跟level order traverse类似,应该用BFS..
但是怎么连结点呢,o, consider each level as a list and use a pre reference.
我的code如下,
List<Node> list=new ArrayList<Node>();
if(root==null) return;
list.add(root);
int index=0;
while(index<=list.size()-1) {
int len=list.size();
Node pre=null;
while(index<=len-1) {
Node current=list.get(index);
if(current.left!=null) list.add(current.left);
if(current.right!=null) list.add(current.right);
if(pre!=null) pre.sibling=current;
pre=current;
index++;
}
}
她went through the code with her sample,没问题。
问我时间空间复杂度,我说都是O(n)又问我有什么可优化的吗?
我故作犹豫,(其实用queue好一点,每次可以把node pop出去,但是这样的话需要一个
null node来区分level)
我就说可以用一个dummy node,然后每次用上一层的结果去处理下一层。。
我正说着,记不清怎么回事他插进来,问我怎么从一个node找到它的sibling,我犹豫了
一下,
他开始画着node->parent->parent's sibling->parent's children 说可以这样。
我当时可能没反应过来她要干什么,就说了一句这不需要parent reference?
然后他开始写他的code,还没见过面试官主动写code的。我有点愣了,当然她是psudo
code
if current has left {
if current has right {
sibling of left is right
} else if current has sibling {
if current sibling has left child {
sibling of left is left child
} else if current sibling has right child {
sibling of left is right child
}
}
显然他这么做太麻烦了,如果sibling没有children呢?再去找sibling的sibling??
但是我当时没有说,只说我有更好的解法。重新画图给他讲了dummy node的o(1) space
complexity的方法
她似乎也没有异议,认可了我的方法。
然后我随便提了两个问题就结束了。现在回想起来,我问问题的同时她已经把黑板擦干
净了,而且她什么memo也没有写。
从结果看,这轮就fail了,我有点无语。
==>大家看看哪里有问题?难道我应该一上来就上dummy node的解法?就算我给的不是
最优,这轮怎么也不至于给我fail吧
难道他认为我没找到它的最优解法?可是我最后已经给他讲清楚了,而且她的方法
也不好啊
2)第二轮fail我无话可说
似乎东南亚/中国南方那种风格的man,脸长个子不高比较瘦。不知道很困还是在怎么
的,说话过程中总是闭眼睛。。
先让我介绍一个项目,我介绍了几分钟
然后第一道小题,integer array shuffle
下面是我的final code, 开始有点问题是一上来随手把第一行写在循环里面了,立刻
被指出还问我有什么问题。
接下来的code好像没什么问题吧?他还照了一下
Random rand= new Random();
int index=0;
for(int i=0;i<=arr.length-1;i++) { ==>也许这个应该直接写 i<arr.length-1 更
好点?
index=rand.nextInt(arr.length-i)+i;
if(index!=i) {
int temp=arr[index];
arr[index]=arr[i];
arr[i]=temp.
}
}
接下来的题目一出来我就知道肯定不会。基本就是一个integer数组分三份,使彼此
的和
有最小difference.
这种NP问题的算法我真不会,学校里没学过,大部头算法书也懒得读,它提示了几下也
没什么进展就被告知超时了
==>看了这1-2年的面经,似乎这种难度的题目已经不太多了,还以为搞定基本题就可以
过关。看来想的太简单
当然在牛人眼里,这也是基本题,但是对于我这种离校多年,只上过国内数据结构
课程的人来说还真是不易
另外也许工作久了,思维没那么灵活,没做过的题即使给些提示,也很难在面试那
么短的时间里得到答案
难道真的要搞本大部头的算法书好好学习一下什么NP/DP/greedy。。。才能找得到
dream company的工作?
然后的结果大家都知道了,recruiter来了告诉我不能继续,让我收拾收拾走人。我表示
出不解的样子,说第二轮这题
比较难,不知道有多少人能做出来,而且我离开学校这么久了。没想到人家说第一轮的
反馈也不好,我有点shock了。
他也没说出点什么出来还说可以发信complain不过我问email的时候他说有我的email
and he will reply me.
想了想,可能英语交流还是有些问题,那个三妹的似乎交流得很流畅,但是第二个人的
声音很小,我经常要求重复
也许这是一个red flag.但是这种问题从EEO的角度来说似乎它不可能告诉你。
==>其它的,大家看看我还有哪些问题,欢迎指教
看来在家闷头刷题闭门造车真的远远不够,面试中还有很多学问需要积累/领会。
--
※ 修改:·lolhaha 於 Apr 8 21:54:41 2014 修改本文·[FROM: 68.]
※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 68.]
Sunday, June 8, 2014
被VMWARE鄙视了(面经并求comment)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment