由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 微软onsite面试悲剧,附面经并求分析,多谢~
相关主题
上面经某公司两个题面跪了
面试复习总结print bst in level order dfs为什么是O(N)不应该是O(N^2)吗?
正在等待M家面试Tree的traversal也分BFS和DFS?
二爷来开讲一下用dfs的一般思路吧求问关于AMAZON SDE I 的准备经验。
DFS比BFS好在哪?湾区2012-2013,个人面筋总结
问一道少见的微软面试题。Rocket Fuel面经
Amazon电面经感慨下找工作中的运气成分
BFS traverse O(1) space?FG面经和感想
相关话题的讨论汇总
话题: int话题: back话题: 结点话题: vector话题: dp
进入JobHunting版参与讨论
1 (共1页)
r*******2
发帖数: 104
1
一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
家问题可能出在哪,并且附上大概的面试过程和coding题目。
第一组:
第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
结束了。
第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
索过程排除有障碍的和访问过的坐标。
第3轮:一个小黑Lead II带去一起lunch,午饭之后问了大概半小时设计题,设计当软
件窗口(比如Word窗口)大小变化的时候每个子图标栏的大小如何变化,大概定义了一
下各个class,挑了其中一个function写了code。
第4轮:一个三哥Principle Lead,先问了一个ASCII和Kanji字符混合的数组,问how
to do a backspace,就是给一个index,如何找到上一个字符的起始index,因为ASCII
字符是1byte,Kanji字符是2bytes,要确定往回跳一步还是两步。这题之前面过知道答
案,跟三哥分析了一通也没要求写代码就算过了。又问了一题spiral matrix是
Leetcode原题,直接写完code试了几个testcase搞定。
第5轮:没在schedule上,跟老大见面。主要是聊天,就问了一个小游戏的设计。
总结:基本上都算顺利,写code过程中有一两个小bug,自己发现了改过来了。答白哥
的题因为code排版有些乱,一开始没看明白,解释了之后白哥表示this should work。
最后和老大谈的时候因为紧张犯了点小错误,老大指出之后很快改过来了。HR一直跟我
说hard decision,tough call,说了半天也没弄明白到底被拒的原因是什么……
第二组:
第1轮:中国人Senior Lead,问了2个题都没见过,面试官说是他自己临时想的……一
道题考树,给定一个结点,怎样不修改parent-child relationship让给定结点在most-
left path上,总之就是自底向上依次把给定结点放到最左边吧。第二题有点像十字链
表,要求遍历所有的结点形成一个单链表,搞了半天没明白题意,写了半天code面试官
看不下去了,提醒了我之后才做出来。
第2轮:一个俄国人SDE II,问的题目差不多算是Leetcode原题,就是Binary Tree
Maximum Path Sum做了点变形,解题思路完全一样。
第3轮:Senior SDE,看名字像是香港人。问了binary tree的遍历,按顺序打印:从上
到下每一层的最左结点,从左到右所有的leaf结点,从下到上每一层的最右结点。先问
能否用extra space,面试官说可以,于是就用BFS存下来每一层的结点(参考Leetcode
原题Binary Tree Level Order Traversal),然后按要求打印。又问不用extra space
如何,我用preorder traversal加checking可以打印出第一步和第二步,第三步好像
preorder解决不了。时间到了就没再继续。
第4轮:Senior SDE,一个国人姐姐。人很nice,题目也不难。一道Leetcode原题
Construct Binary Tree from Preorder and Inorder Traversal,另一道面经上有过
,就是找出两个Linked Lists Converge的node。
第5轮:三哥Senior Lead,上来还是先问那道ASCII和Kanji字符的题,因为在版上听说
过因为重复题目没跟面试官说被拒的,就告诉三哥说已经问过,第二题问树结点的
common ancestor,这题电面时候的三哥就问过,真不知道是不是故意重复问的。告诉
他之后又问了一题,稍微有点复杂:假设一个电话键盘,按键是1, 2, 3, 4, 5, 6, 7,
8, 9, *, 0, #,要求返回所有valid电话号码的个数。条件是:1. 只能从1-9里选一
个数开始,2. 每选择一个数,下一个数只能像国际象棋里的knight那样跳(听三哥的
解释应该是和中国象棋的马一个跳法)。没什么好方法,只能DFS统计valid号码个数,
过程很复杂。好不容易写完了,三哥问有简单方法不,我说暂时只能想到常规方法,三
哥说可以用DP,我说这么一会推出transition方程有点难,时间到了三哥也没继续问。
第6轮:还是见老大,schedule上没有的。纯聊天,没考题目。
总结:没被问到设计题,算法题都解出来了,虽然有些题给的不是最优解法但至少得到
面试官的肯定是work的。HR的说法是very close,feedback也是nothing bad,就是认
为我design方面lack experience。我就郁闷了,一个设计题都没问,怎么评判我缺少
design经验的,猜想是被三哥黑了吧……
面试情况就是这样,请大家看看是哪里出了问题。本来听微软的朋友说基本上最后老大
出面了就说明有戏,还挺憧憬能有个offer的,没想到却是全跪的结果,实在是太沮丧
了……
x*******1
发帖数: 28835
2
他妈得,微软抖出这么难的题,30号让我去不是让我难看么
r*******2
发帖数: 104
3

Leetcode上的题还是不少的,我基本上都做出来了还是跪了,不知道为什么。
总之祝你好运啊朋友~~

【在 x*******1 的大作中提到】
: 他妈得,微软抖出这么难的题,30号让我去不是让我难看么
A***o
发帖数: 358
4
哪个组,backend的组说不定已经从内部招了,走过场
r*******2
发帖数: 104
5

第一组是Office For Mac,第二组叫MSG (Manageability Services Group),具体不知
道干啥的,HR说是做软件给微软内部使用的。

【在 A***o 的大作中提到】
: 哪个组,backend的组说不定已经从内部招了,走过场
s********k
发帖数: 2352
6
哥们你好强! 这也能被拒, 看来注定要去更好的地方

call

【在 r*******2 的大作中提到】
: 一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
: ,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
: 家问题可能出在哪,并且附上大概的面试过程和coding题目。
: 第一组:
: 第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
: 棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
: 结束了。
: 第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
: 有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
: 索过程排除有障碍的和访问过的坐标。

r*******2
发帖数: 104
7

坦白说我自己也有点意外因为coding题目都做出来了,也没问太多behavior问题。而且
跟老大聊天的时候也说前面表现的好才会最后加面一轮的。我就不知道是不是老大哪里
看我不顺眼了……

【在 s********k 的大作中提到】
: 哥们你好强! 这也能被拒, 看来注定要去更好的地方
:
: call

m*****l
发帖数: 95
8
可能和你面同一个position的其他人更NB了。。。
m*****l
发帖数: 95
9
其实第二轮老大的DP题挺简单的。。。
l*****a
发帖数: 14598
10
你只说你做出来了,其实做得什么样我们也不知道
做题之外的东西我们也看不到什么
对吧?
把你的解答也写上让大家看看?

【在 r*******2 的大作中提到】
:
: 坦白说我自己也有点意外因为coding题目都做出来了,也没问太多behavior问题。而且
: 跟老大聊天的时候也说前面表现的好才会最后加面一轮的。我就不知道是不是老大哪里
: 看我不顺眼了……

相关主题
问一道少见的微软面试题。某公司两个题面跪了
Amazon电面经print bst in level order dfs为什么是O(N)不应该是O(N^2)吗?
BFS traverse O(1) space?Tree的traversal也分BFS和DFS?
进入JobHunting版参与讨论
r*******2
发帖数: 104
11

好的,我把我的解题过程也说一下。Leetcode原题就不用说了。
第一组:
第1轮:判断subtree。假设两棵树T1和T2,先用DFS在T1里找到和T2的root一样的结点
,然后从找到的结点开始和T2进行比较,我用了BFS,就是用queue,一边一个queue,
同时push/pop进行比较,如果碰到不一样的就return false。做完了想起来其实就是
Leetcode上的Same Tree,直接还用DFS递归比queue省事。
第2轮:找出maze中的path。开一个matrix标记maze的每一个点是否访问过,然后DFS搜
索,从起点开始,查找它的上下左右邻居,如果没有访问过也没有obstacle,就作为一
个选择进行下一步搜索,一直递归下去直到找到终点为止。
第3轮:设计题。
第4轮:ASCII和Kanji字符的题以前面过,当时没做出来,答案就是回来网上搜的(参
考这个网址http://discuss.joelonsoftware.com/default.asp?interview.11.334807.4)。Spiral Matrix是Leetcode原题就不说了。
第二组:
第1轮:移动树结点的题说过了,就是自下往上依次把结点移到最左边,因为面试官给
了parent指针,就是一个while循环一层一层往上。链表题我说明一下,就是链表其实
是一个2D矩阵,每个结点有right和down两个指针,就是简单的先向右遍历,然后把最
右结点链接到下一层的最左结点上,这样完成遍历所有结点。
第2轮:Leetcode原题。
第3轮:我给的解法是参考Leetcode原题的,面试官说这样解也可以。
第4轮:preoder和inorder创建树是Leetcode原题。链表converge就是先统计两个链表
分别的长度,对于长的链表,长几步就把指针前移几步,然后两个指针同时往前走,一
直到两个指针相等就是converge的点。
第5轮:找出valid号码个数,就是正常DFS,从一个数开始,写一个函数用来统计下一
步可以往哪跳才valid,然后再从valid的地方继续DFS下去。DP解法没来得及想出。

【在 l*****a 的大作中提到】
: 你只说你做出来了,其实做得什么样我们也不知道
: 做题之外的东西我们也看不到什么
: 对吧?
: 把你的解答也写上让大家看看?

r*******2
发帖数: 104
12

当时紧张,就想着常规解法,没考虑DP,这题transition方程应该怎么列?

【在 m*****l 的大作中提到】
: 其实第二轮老大的DP题挺简单的。。。
j******o
发帖数: 4219
13
微软招的人都这么NB还怕个毛的苹果
l*****a
发帖数: 14598
14
从左到右所有的leaf结点,
用BFS result怎么按顺序输出这个

【在 r*******2 的大作中提到】
:
: 当时紧张,就想着常规解法,没考虑DP,这题transition方程应该怎么列?

r*******2
发帖数: 104
15

额,我忘说了一个条件,面试官当时说了是满二叉树,所以所有的leaf结点其实就是满
二叉树的最后一层,不然也不会想到用BFS了。不好意思~~~

【在 l*****a 的大作中提到】
: 从左到右所有的leaf结点,
: 用BFS result怎么按顺序输出这个

P******r
发帖数: 1342
16
第一组第一轮,
为啥不dfs到底呢?
还有如果找到第一个和root一样的点后开始比较,但比较的时候又遇到和root一样的点
呢?感觉可以有优化啊
m*****n
发帖数: 2152
17


【在 r*******2 的大作中提到】
:
: 额,我忘说了一个条件,面试官当时说了是满二叉树,所以所有的leaf结点其实就是满
: 二叉树的最后一层,不然也不会想到用BFS了。不好意思~~~

m*****n
发帖数: 2152
18
"第5轮:找出valid号码个数,就是正常DFS,从一个数开始,写一个函数用来统计下一
步可以往哪跳才valid,然后再从valid的地方继续DFS下去。DP解法没来得及想出。"
其实只要建个loop up table,不需要valid function。
0 -> {4,6}
1 -> {6,8}
......
9 -> {2,4}
然后dfs,(对了,电话是几位啊?9位或者10位或者其他位数(比如中国的手机号码13
位)也可以?)。

【在 r*******2 的大作中提到】
:
: 额,我忘说了一个条件,面试官当时说了是满二叉树,所以所有的leaf结点其实就是满
: 二叉树的最后一层,不然也不会想到用BFS了。不好意思~~~

o********t
发帖数: 1655
19
被同胞黑了,杯具

call

【在 r*******2 的大作中提到】
: 一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
: ,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
: 家问题可能出在哪,并且附上大概的面试过程和coding题目。
: 第一组:
: 第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
: 棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
: 结束了。
: 第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
: 有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
: 索过程排除有障碍的和访问过的坐标。

r*******2
发帖数: 104
20

13
我当时也说用hash map的,但是面试官说你得把这个modularize,因为他说下一次可能换
一个piece,这次是按照knight的方式跳,下次也许换一种方式跳……感觉三哥挺难搞
的~~~
号码长度是10位,这个我特地问他的,是不是三位Area code加7位数字一共10位。

【在 m*****n 的大作中提到】
: "第5轮:找出valid号码个数,就是正常DFS,从一个数开始,写一个函数用来统计下一
: 步可以往哪跳才valid,然后再从valid的地方继续DFS下去。DP解法没来得及想出。"
: 其实只要建个loop up table,不需要valid function。
: 0 -> {4,6}
: 1 -> {6,8}
: ......
: 9 -> {2,4}
: 然后dfs,(对了,电话是几位啊?9位或者10位或者其他位数(比如中国的手机号码13
: 位)也可以?)。

相关主题
求问关于AMAZON SDE I 的准备经验。感慨下找工作中的运气成分
湾区2012-2013,个人面筋总结FG面经和感想
Rocket Fuel面经贡献Amazon的电面经验
进入JobHunting版参与讨论
r*******2
发帖数: 104
21

能详细说说吗,一共有两个国人,一个港人,具体是说哪一个的?

【在 o********t 的大作中提到】
: 被同胞黑了,杯具
:
: call

r*******2
发帖数: 104
22

不好意思没说清楚。写程序的时候是一直DFS下去的,就是if(same tree)那就return
true,否则就继续search下去,全部search完成还没有找到same tree再return false。
肯定应该有办法优化的,但是面试的时候就用的这种稳妥的解法了,不知道是不是被拒
的原因之一,解法太直观了。

【在 P******r 的大作中提到】
: 第一组第一轮,
: 为啥不dfs到底呢?
: 还有如果找到第一个和root一样的点后开始比较,但比较的时候又遇到和root一样的点
: 呢?感觉可以有优化啊

q********c
发帖数: 1774
23
应该是被国人senior lead黑了,没事,有这种傻叉,不去也罢,比老印蠢多了。

call

【在 r*******2 的大作中提到】
: 一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
: ,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
: 家问题可能出在哪,并且附上大概的面试过程和coding题目。
: 第一组:
: 第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
: 棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
: 结束了。
: 第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
: 有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
: 索过程排除有障碍的和访问过的坐标。

m*****n
发帖数: 2152
24
其实可以DP,胡乱写了一个code,不知道对不对?
vector > lookup_table;
//...... input tables contents....
vector next(int digit)
{
return lookup_table[digit];
}
int dp(int digit, int pos)
{
if(pos==2)
{
return next(digit).size();
}
vector v_next = next(digit);
int NumOfPhones = 0;
for(int i=0; i {
NumOfPhones += dp(v_next[i], pos-1);
}
return NumOfPhones;
}
int main()
{
int total = 0;
for(int i=1; i<=9; i++)
{
total+= dp(i, 10);
}
cout << total << endl;
return 0;
}

能换

【在 r*******2 的大作中提到】
:
: 不好意思没说清楚。写程序的时候是一直DFS下去的,就是if(same tree)那就return
: true,否则就继续search下去,全部search完成还没有找到same tree再return false。
: 肯定应该有办法优化的,但是面试的时候就用的这种稳妥的解法了,不知道是不是被拒
: 的原因之一,解法太直观了。

r*******2
发帖数: 104
25

多谢分享。C++的code看着亲切啊……

【在 m*****n 的大作中提到】
: 其实可以DP,胡乱写了一个code,不知道对不对?
: vector > lookup_table;
: //...... input tables contents....
: vector next(int digit)
: {
: return lookup_table[digit];
: }
: int dp(int digit, int pos)
: {
: if(pos==2)

t****o
发帖数: 94
26
看不出来技术有什么问题,其他的原因?不要灰心,面试胜败是常事。如果是面我team
,我应该会要吧。

call

【在 r*******2 的大作中提到】
: 一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
: ,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
: 家问题可能出在哪,并且附上大概的面试过程和coding题目。
: 第一组:
: 第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
: 棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
: 结束了。
: 第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
: 有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
: 索过程排除有障碍的和访问过的坐标。

j**********3
发帖数: 3211
27
是我太搓了还是题太难了?
m*****n
发帖数: 2152
28
客观上讲,算法题目应该都不难,面试官估计看重临场发挥。
楼主是不是有些小细节没注意?不过,还是很牛了,运气不好,下次说不定就有offer
了。

call

【在 r*******2 的大作中提到】
: 一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
: ,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
: 家问题可能出在哪,并且附上大概的面试过程和coding题目。
: 第一组:
: 第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
: 棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
: 结束了。
: 第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
: 有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
: 索过程排除有障碍的和访问过的坐标。

r*******2
发帖数: 104
29

team
多谢鼓励~~另弱问下,你的team正好需要人不?……

【在 t****o 的大作中提到】
: 看不出来技术有什么问题,其他的原因?不要灰心,面试胜败是常事。如果是面我team
: ,我应该会要吧。
:
: call

f******i
发帖数: 82
30
请问微软一个组面挂了还能面其他组吗?
相关主题
面试中遇到不会的题咋办面试复习总结
Bloomberg面经,回报版上正在等待M家面试
上面经二爷来开讲一下用dfs的一般思路吧
进入JobHunting版参与讨论
r*******2
发帖数: 104
31

这还真不知道,我这两个组电面和onsite都差不多时间,HR也是同一天通知结果的。跟
你说的情况不一样,不敢随便说了误导你。

【在 f******i 的大作中提到】
: 请问微软一个组面挂了还能面其他组吗?
g*********5
发帖数: 1145
32
LZ厉害,注定有其他offer
P******r
发帖数: 1342
33
这段代码有好多重复运算。。其实没有用到DP。。复杂度应该是号码长度的指数级
另外,LZ,我觉得面试官既然问这些题了,他只在乎你是否能写出最优的算法。
如果你写出个work的但是复杂度太高的代码,对他来说和写不出来是差不多吧。

【在 m*****n 的大作中提到】
: 其实可以DP,胡乱写了一个code,不知道对不对?
: vector > lookup_table;
: //...... input tables contents....
: vector next(int digit)
: {
: return lookup_table[digit];
: }
: int dp(int digit, int pos)
: {
: if(pos==2)

d******w
发帖数: 2213
34
面试运气也很重要的。我知道不少面微软面挂的,成功秒google和facebook。其实归根
结底就看你气场和面试官合不合,题目对不对胃口了。

【在 r*******2 的大作中提到】
:
: 这还真不知道,我这两个组电面和onsite都差不多时间,HR也是同一天通知结果的。跟
: 你说的情况不一样,不敢随便说了误导你。

m*****l
发帖数: 95
35
建两个二维数组,f(x) x代表n位电话号码 f(1) 就是 数组0-9每一项都是1. f(2) 就
是每一位可能的2位电话号码之和,f(3) 、f(4)就是前一个表相关项的和。
example
1 2 3
4 5 6
7 8 9
0
f(1)
1 1 1
1 1 1
1 1 1
1
f(2)
2 2 2
3 0 3
2 2 2
2
。。。。。。

【在 r*******2 的大作中提到】
:
: 这还真不知道,我这两个组电面和onsite都差不多时间,HR也是同一天通知结果的。跟
: 你说的情况不一样,不敢随便说了误导你。

k*x
发帖数: 1829
36
老大都见了,不用说了,被三哥黑了

call

【在 r*******2 的大作中提到】
: 一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
: ,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
: 家问题可能出在哪,并且附上大概的面试过程和coding题目。
: 第一组:
: 第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
: 棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
: 结束了。
: 第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
: 有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
: 索过程排除有障碍的和访问过的坐标。

c********r
发帖数: 107
37
mark
T***1
发帖数: 445
38
楼主来我这里吧!私信
S******6
发帖数: 55
39
有更强的对手或者他们认为你还没到他们的bar?
不管如何,给自己增加面试经验了
m****9
发帖数: 492
40
如果结果就要个数的话,10*2^9?

能换

【在 r*******2 的大作中提到】
:
: 这还真不知道,我这两个组电面和onsite都差不多时间,HR也是同一天通知结果的。跟
: 你说的情况不一样,不敢随便说了误导你。

相关主题
二爷来开讲一下用dfs的一般思路吧Amazon电面经
DFS比BFS好在哪?BFS traverse O(1) space?
问一道少见的微软面试题。某公司两个题面跪了
进入JobHunting版参与讨论
r*******2
发帖数: 104
41

感觉不是每一步都只有2个选择啊,比如从4开始的话,除了3和9还可以跳到0,那就不
是2^9了~

【在 m****9 的大作中提到】
: 如果结果就要个数的话,10*2^9?
:
: 能换

P******r
发帖数: 1342
42
有个”0” 比较麻烦

【在 m****9 的大作中提到】
: 如果结果就要个数的话,10*2^9?
:
: 能换

b*******t
发帖数: 69
43
第二组第三题可以用leaf结点空儿子,比如左右儿子存后继结点,no extra space。
参考morris traversal。
最右可以放leaf左儿子处,这面只保存一个leaf就好
最左,leaf走右儿子,再走一次leaf但访问左儿子,这里存的是最右的结点

call

【在 r*******2 的大作中提到】
: 一周之内面了微软两个组,刚刚收到结果双双悲剧,一个组的HR说It's a tough call
: ,另一个组的HR说very close,不知道是不是套话,总之很沮丧……来版上求问一下大
: 家问题可能出在哪,并且附上大概的面试过程和coding题目。
: 第一组:
: 第1轮:是一个SDE II,看名字像是中东人。coding题目是给定2棵树,判定是否其中一
: 棵是另一棵的subtree,同时用了DFS和BFS,写完code讨论了几个testcases和复杂度就
: 结束了。
: 第2轮:一个白哥Senior Lead,问的题目是一个maze(用2D matrix表示,有的坐标上
: 有障碍),给定起点和终点,找出从起点到终点的path,还是用的常规的DFS解法,搜
: 索过程排除有障碍的和访问过的坐标。

m*****n
发帖数: 2152
44
有没有真的 DP算法啊,实在是想不出来。

【在 P******r 的大作中提到】
: 这段代码有好多重复运算。。其实没有用到DP。。复杂度应该是号码长度的指数级
: 另外,LZ,我觉得面试官既然问这些题了,他只在乎你是否能写出最优的算法。
: 如果你写出个work的但是复杂度太高的代码,对他来说和写不出来是差不多吧。

t********e
发帖数: 30
45
mark! thanks for sharing
g********5
发帖数: 372
46
我也面过微软,不过是tester,跪了一次,第二次过了(最后没去)。题目绝对没有你
的难,而且我的很多朋友也都是dev,这么变态的基本太少了。基本就是5轮面试里碰到
一个树、图或者dp问题。
我另一个朋友直言不讳的说,如果碰到DP问题,要么就是以前做过,要么就是直接不会
。靠脑子里那一点灵光做出来基本不可能。一轮面试就1个小时,还得两个题目外加聊
天时间。真正写code的时间也就15-20分钟,让你抄DP问题的代码时间都不一定够,更
别提让你从头想+写code+debug了。一般遇到这种问题,就是让你说个思路就行了,不
会让你写代码。
另外,很多人提到的“走过场”问题绝对存在,人早就内定了,但是根据要求,需要有
一些outside resources,所以楼主不要灰心。
另外,我不知道你是怎么面试的,但最忌讳的就是“问清楚”题目之后就开始coding,
全程无沟通。因为人家完全可以说“他给出的答案不是我想要的”,哪怕你的方案比他
想的要好。我都是先解释我的思路,看看是不是人家想要的答案,确定思路之后再开始
coding。
不知道你在面试过程中有没有碰到,就是你有多种解决思路的时候需要直接给出最优结
果,比如常规解法和DP都有的时候,直接给DP解法。
n*****n
发帖数: 122
47
1. 见到了最后一轮不在schedule上的As Appropriate (AA),说明前面面试的不是一边
倒的“No hire”。
2. 楼主也许得到了所有面试人的"Hire",但是也许另外一个申请人更合适一些(不一
定就是coding更强,也许你over qualify :)),所以offer给了别人。
3. 微软面试里面除了coding,还有很重要的non-technical部分,比如problem
solving skill, collaboration, end-to-end innovation, communication,
judgement, team fit and so on.这些多数不是能提前准备,做出来或者做不出来的问
题,而是open question,根据具体情况,讨论过去的具体经验,而得出对申请者的评
估。一个简单的例子:你在上一个工作中做的最有创意的一件事是什么?我们组(测试
)面试,时间上大概25%会在这些non-technical问题上。不同的人负责不同的方面。如
果发现被反复考察某个方面,一般是前面面试的人对申请人在这方面有疑问。
4. 一些细节也可能有影响。比如听完问题,上来就做,没有什么讨论/确认,最后发现
是一开始没有把问题弄清楚,那面试的可能会想:在工作中是不是也会经常想当然,做
无用功。有的面试人在问问题的时候故意说的不那么明确。又比如在讨论问题过程中过
于坚持己见而不能分析对方的意见,或者不能很好表达并坚持自己正确的意见,也都可
能让人对于以后工作中是否能把事情做好有疑问。
总之,这两次没offer也不一定就说明什么,以后有机会再试一试。可以问问recruiter
是否可以联系hiring manager得到一些具体一点的在那些方面可以改进的建议。塞文失
马,焉知非福?:)
r*******2
发帖数: 104
48

感谢你的分析指教热心相助。
关于DP问题,我觉得你说的确实就是普遍情况。要么就是做过的,要么就是来不及从头
开始做(大牛除外)。就算能推出DP公式也很难去验证code是否正确。所以碰到那道DP
题还是先从常规思路入手的,碰上老印考DP题还真没啥办法。
另外你提到的忌讳的面试方式,我想了一下好像确实有这方面的问题。一些没练过的题
基本上都会先跟面试官解释一下思路和数据结构再开始做题。但是碰到刷过的题好像就
没有太顾及,觉得题都做过online judge跑过,哪种解法最优都清楚,所以很快写完
coding再跟面试官解释,可能因此给人留下太rush to result的印象了……
当然了,借你吉言如果是因为内定而被拒的话最好了,这样至少心理上好受一点哈~~

【在 g********5 的大作中提到】
: 我也面过微软,不过是tester,跪了一次,第二次过了(最后没去)。题目绝对没有你
: 的难,而且我的很多朋友也都是dev,这么变态的基本太少了。基本就是5轮面试里碰到
: 一个树、图或者dp问题。
: 我另一个朋友直言不讳的说,如果碰到DP问题,要么就是以前做过,要么就是直接不会
: 。靠脑子里那一点灵光做出来基本不可能。一轮面试就1个小时,还得两个题目外加聊
: 天时间。真正写code的时间也就15-20分钟,让你抄DP问题的代码时间都不一定够,更
: 别提让你从头想+写code+debug了。一般遇到这种问题,就是让你说个思路就行了,不
: 会让你写代码。
: 另外,很多人提到的“走过场”问题绝对存在,人早就内定了,但是根据要求,需要有
: 一些outside resources,所以楼主不要灰心。

r*******2
发帖数: 104
49

边倒的“No hire”。
一定就是coding更强,也许你over qualify :)),所以offer给了别人。
问题,而是open question,根据具体情况,讨论过去的具体经验,而得出对申请者的
评估。一个简单的例子:你在上一个工作中做的最有创意的一件事是什么?我们组(测
试)面试,时间上大概25%会在这些non-technical问题上。不同的人负责不同的方面。如
感谢你提供这么多有用信息。你第一条说的,原来见到schedule之外的老大只是说明前
面没有fail掉而已……
第二条也很能理解,就是不太清楚如果overqualify会对面试官具体造成什么样的
concern?
第三条里列的那些问题,我估计我可能在某些方面做的不好,HR电话通知被拒的时候好
像也说technical方面没太大问题。还是得在列出来的这些non-technical方面想办法提
高才行……
第四条的问题前面一个朋友也指出来了。没见过的题还能主动和面试官探讨说明思路,
刷过的题因为很有把握好像就有点顾不上了。还是应该先跟面试官分析一遍确认无误了
再开始coding。
另外能行的话我也再向HR问问看有没有什么实质性的改进意见。总之,多谢你的一番鼓
励,还是得再接再厉。

【在 n*****n 的大作中提到】
: 1. 见到了最后一轮不在schedule上的As Appropriate (AA),说明前面面试的不是一边
: 倒的“No hire”。
: 2. 楼主也许得到了所有面试人的"Hire",但是也许另外一个申请人更合适一些(不一
: 定就是coding更强,也许你over qualify :)),所以offer给了别人。
: 3. 微软面试里面除了coding,还有很重要的non-technical部分,比如problem
: solving skill, collaboration, end-to-end innovation, communication,
: judgement, team fit and so on.这些多数不是能提前准备,做出来或者做不出来的问
: 题,而是open question,根据具体情况,讨论过去的具体经验,而得出对申请者的评
: 估。一个简单的例子:你在上一个工作中做的最有创意的一件事是什么?我们组(测试
: )面试,时间上大概25%会在这些non-technical问题上。不同的人负责不同的方面。如

l*******3
发帖数: 8
50
LZ 站内你了
相关主题
print bst in level order dfs为什么是O(N)不应该是O(N^2)吗?湾区2012-2013,个人面筋总结
Tree的traversal也分BFS和DFS?Rocket Fuel面经
求问关于AMAZON SDE I 的准备经验。感慨下找工作中的运气成分
进入JobHunting版参与讨论
n*****n
发帖数: 122
51
Overqualify 的主要concern是以后在组里能呆多久,会不会比较不稳定。比如测试工
作偏手工一些,一个做research的来面试,估计会担心做做没什么意思就要换。比如需
要的是做具体工作的individual contributor,面试的有能力做这个,但已经有很多管
理经验了,而组里有不会有什么lead机会,会担心来了之后比较不稳定。我不知道你的
具体情况,只是说些例子。
关于内定走过场的事,没听说过有任何要求给外面的人面试机会。我们组本来觉得有几
个组里的vendor比较好,想转一个到FTE。position post出去(这个是对public的),
和他们一说,很快就可以开始面试。面试第一个人如果过了就可以给offer,close
position。根本不需要花钱花精力找外面的人来走过场。面试对于公司里的人也是耗时
耗精力的事,也是要用recruting budget的。所以除非hiring manager是要对上隐瞒什
么,否则不可能费这个事。具体那个position他们几个面试都没过,那就没办法了。:)

concern?

【在 r*******2 的大作中提到】
:
: 边倒的“No hire”。
: 一定就是coding更强,也许你over qualify :)),所以offer给了别人。
: 问题,而是open question,根据具体情况,讨论过去的具体经验,而得出对申请者的
: 评估。一个简单的例子:你在上一个工作中做的最有创意的一件事是什么?我们组(测
: 试)面试,时间上大概25%会在这些non-technical问题上。不同的人负责不同的方面。如
: 感谢你提供这么多有用信息。你第一条说的,原来见到schedule之外的老大只是说明前
: 面没有fail掉而已……
: 第二条也很能理解,就是不太清楚如果overqualify会对面试官具体造成什么样的
: concern?

r*******2
发帖数: 104
52

多谢耐心解答。现在完全理解为什么都说找工作要看运气缘分了,除了技术还有太多其
它因素要考虑啊……

【在 n*****n 的大作中提到】
: Overqualify 的主要concern是以后在组里能呆多久,会不会比较不稳定。比如测试工
: 作偏手工一些,一个做research的来面试,估计会担心做做没什么意思就要换。比如需
: 要的是做具体工作的individual contributor,面试的有能力做这个,但已经有很多管
: 理经验了,而组里有不会有什么lead机会,会担心来了之后比较不稳定。我不知道你的
: 具体情况,只是说些例子。
: 关于内定走过场的事,没听说过有任何要求给外面的人面试机会。我们组本来觉得有几
: 个组里的vendor比较好,想转一个到FTE。position post出去(这个是对public的),
: 和他们一说,很快就可以开始面试。面试第一个人如果过了就可以给offer,close
: position。根本不需要花钱花精力找外面的人来走过场。面试对于公司里的人也是耗时
: 耗精力的事,也是要用recruting budget的。所以除非hiring manager是要对上隐瞒什

n*****n
发帖数: 122
53
的确。人有擅长的东西,有不擅长的东西。找到个发挥长处,不用短处的工作,有个赏
识的老板,自己做得好又不太累,对公司也好,这个是要缘分。所以这两个不过,只是
缘分不到。:)Good luck.
m*****n
发帖数: 2152
54
现在这个是真DP了吧,可以输出任意长度的电话号码。
void buildTable(vector > &lookup_table)
{
for(int i=0; i<10; i++)
{
vector v;
if(i==0) {v.push_back(4); v.push_back(6);}
else if(i==1) {v.push_back(6); v.push_back(8);}
else if(i==2) {v.push_back(7); v.push_back(9);}
else if(i==3) {v.push_back(4); v.push_back(8);}
else if(i==4) {v.push_back(0); v.push_back(3); v.push_back(9);}
// else if(i==5) {}
else if(i==6) {v.push_back(0); v.push_back(1); v.push_back(7);}
else if(i==7) {v.push_back(2); v.push_back(8);}
else if(i==8) {v.push_back(1); v.push_back(3);}
else if(i==9) {v.push_back(2); v.push_back(4);}
lookup_table.push_back(v);
}
}
int getPNs(int PN_len, vector > &lookup_table)
{
vector row(10, 0);
vector > matrix(PN_len, row);

for(int j=0; j<10; j++) matrix[0][j] = 1;

for(int i=1; i {
for(int j=0; j<10; j++)
{
for(int k=0; k matrix[i][j] += matrix[i-1][lookup_table[j][k]];
}
}
int nPNs = 0;
for(int i=1; i {
nPNs += matrix[PN_len-1][i];
}
return nPNs;
}
int main()
{
vector > lookup_table;
buildTable(lookup_table);
cout << getPNs(10, lookup_table) << endl;

return 0;
}

【在 P******r 的大作中提到】
: 这段代码有好多重复运算。。其实没有用到DP。。复杂度应该是号码长度的指数级
: 另外,LZ,我觉得面试官既然问这些题了,他只在乎你是否能写出最优的算法。
: 如果你写出个work的但是复杂度太高的代码,对他来说和写不出来是差不多吧。

1 (共1页)
进入JobHunting版参与讨论
相关主题
FG面经和感想DFS比BFS好在哪?
贡献Amazon的电面经验问一道少见的微软面试题。
面试中遇到不会的题咋办Amazon电面经
Bloomberg面经,回报版上BFS traverse O(1) space?
上面经某公司两个题面跪了
面试复习总结print bst in level order dfs为什么是O(N)不应该是O(N^2)吗?
正在等待M家面试Tree的traversal也分BFS和DFS?
二爷来开讲一下用dfs的一般思路吧求问关于AMAZON SDE I 的准备经验。
相关话题的讨论汇总
话题: int话题: back话题: 结点话题: vector话题: dp