Saturday, June 14, 2014

VMware onsite 新鲜面经

发信人: XZHU011 (Elena), 信区: JobHunting
标  题: VMware onsite 新鲜面经
发信站: BBS 未名空间站 (Fri Jun 13 21:10:21 2014, 美东)

电面
1, 单例模式 写demo
2, maxDepth of binary tree (lc原题)
3, merge two sorted linkedlist(好像也是原题)

欢欢乐乐就onsite了...

1:三哥,接上我以后一直相谈甚欢 出题以后就特别严肃...0.0..
Q1. 在一个数组中,依次返回最大的三个数的index (考虑有重复元素,并且保证返回
的index对应的元素要有序,考虑输入的数组可能有小数(给的是string[]),正数,
负数,和 0)
给一个数组 {1,2,-10,9,10,9} 返回{4,3,5}
要求最优解法 只扫一遍。

Q2. 返回string中出现次数最多的character(放水题 )

感觉不错,2道题1小时,前一题浪费了一点时间去讨论一遍得结果的方法,code的时候
有一个小bug,自己发现了。第二题速度秒了。

2: 跪在这轮  三姐 而且还是HM 哎...
HM 给的design question + 多线程
著名的哲学家吃晚餐问题,几个哲学家围着圆桌吃饭,每2个哲学家之间有一根筷子,
如果一个哲学家需要吃饭,则要同时拿起左右2个筷子。要求design class 和method
来处理这个问题。

其实主要是一个死锁,一个饥饿 2个问题。
跟HM 讨论了这2个问题,说操作系统里面是用 P V 原语来lock 和 send message 来告
诉别人自己在吃 还是吃完玩了...讨论了一会儿..花了不少时间。结果..HM竟然叫我
code....我说用 mutex, HM 跟我说 让我用java做...因为我之前跟她说 自己用java
比较多。 然后就说用 synchronization
哼哼唧唧去code ..自己心里直打鼓..各种没底...写了写时间到了,下一个面试官在等
,HM 也没说啥..就算是结束了... HM感觉不太满意...我也跪的很无力..遇到三姐...
尤其是三姐HM ...我只能...无语凝噎了..

3: 亚裔男
吃午饭,吃的时候问了几个behavior question, 问了 stringbuild 和stringbuffer
区别..还有一些基础的数据结构问题..有点忘了..专注于吃饭了..吃完被拉去继续做题
....因为上一轮很晕...这个时候状态不是很好...

Q1: 求某个value 在BST 上的层数。要求递归做法。
比如树:       20
          10            30
   9           11  28       33
value 为 11 的时候 返回 3

input 只给了 TreeNode root 和 int value
我说用helper函数 把level 这个 变量也传在函数参数列表里面..大哥跟我说不让用..
而且level值 不许在函数外面...纠结了一会儿 递归调用方程在 stack里面的实现..也
就做出来了..

Q2:检查string 是不是palindrome  (放水题啊...)

大哥人很好...走的时候HR 跟我说 大哥给了positive的评价...

4: 三姐..
看到三姐就有点慌有木有....一上来先问java...abstract class 和 interface ...这
题我已经被问烂了....finally...然后问 collections...问了 array map set
linkelist 的 区别..数据结构和java基础..问的很细...幸好有点准备...

coding就一题 但是很事儿..count and say 的变形
input:“sTatT” 要求返回:“s1T2a1t1”.  只考虑字母,而且区别大小写。
提了用hashmap做..瞬间被否了...不让...
说先sort..然后再挨个读...count ....不让.....
要求O(n),空间也要求最优。
说用int[] 的index和ascii码来记录对应count .(类似a的个数放在index为 0的未知
,b的个数放在index为1 的未知) 问我用多少个,我说用 256, 然后说能不能少,
想了想说用52. 后来跟我说 52 怎么处理每个字符的ascii 码,意思是如果全部
character - ‘A’  大写字母的ascii码值可能会 超过52(比如说z的ascii是 122,A
是65, 而我只有52 个空间)所以需要分大小写记录在2个26size的int[] 里面..

最后讨论的结果是(三姐的思路):
1,先扫一遍,用2个int[]记录每一个大写字母和小写字母出现的次数。是一个填写int
[]的过程,array的index和处理后的character的ascii码对应。(大写字母ascii码 -
‘A’, 小写字母ascii码 - ‘a’)
2,建stringbuild去append每一个字符以及它出现的次数(这里需要注意重复的字符只
append一次,所以一旦append之后 需要将次数重置为-1)
3,用stringbuild返回一个string就是结果..

这题讨论了很久..code只画了15分钟...也没时间挑错儿了..三姐就问我有啥问题问她.
.就算完了..不知道她准备了1题还是2题..反正我很挫的只做了一题

5:三哥

人超好....
Q1:给了一个程序让检查错误,其实就是一个binary search的伪代码 。 说了一下mid
= (start + end)/2 可能overflow的情况..然后讨论了一下,他 的array从index为
1开始计数的 情况。然后挑出来他的错就是binary search每次收缩范围的指针没有写
对.仔细检查了其中double 和int 的精度问题..因为他的array里面存的数是double型
的..感觉有点简单的不可相信。
Q2: 给一个string,一个character,返回这个character在string里面出现了多少次
瞬间秒了有没有。三哥说我是做的最快的candidate。而且在代码里面讨论了input为
null的多种情况。 后来三哥就问能不能reduce loop。 想了想 就说 每次index i ,
可以同时比较第i个和第s.length() - 1 - i个index位置是不是为 target
character。这个是第三轮的时候写isPalidorme的时候,大哥只许我用一个指针而想到
的办法。
然后就是写test case,非常详细整齐得列举了positive negative 以及各种null 空
特殊字符 空格 输入的组合,以及以后讨论了一下外文。并且说了一下,输入是
character ,如果是中文 就不够,因为char是1 byte 中文要好几个byte...
三哥说 那么多candidate 我是第一个讨论这些的...0.0...给了很好的评价...

整个5轮面完...HM那轮挂的惨惨的....总结自己就是 多线程和OOD 系统design都没复
习到...结果碰到就秒挂..

第一个onsite..觉得已经很luck了..至少我尽力了...move on...



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 24.]

http://www.mitbbs.com/article_t/JobHunting/32717129.html

No comments:

Post a Comment