由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - microsoft面经
相关主题
判断 bst 疑问G家电面面经--佛云了~~
讨论个Binary search tree的题目又死在设计题上了...
这个check whether a binary tree is a BST or notL家这题咋搞,巨变态
MS onsite 面经请教一道面试题
[原创MITBBS首发]2年CS求职打怪升级心得刚才的amazon phone interview 第一轮
问个google面试题这个check whether a binary tree is a BST 问题
Depth-First-SearchArista面经
问两道facebook面试题急!google 一面。请大侠看看
相关话题的讨论汇总
话题: isbst话题: root话题: node话题: int话题: return
进入JobHunting版参与讨论
1 (共1页)
p**********s
发帖数: 115
1
windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
2 bool isBST(node *n);
3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
5 如何设计web browser的ui.瞎扯就好了.
面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。
j**l
发帖数: 2911
2
罗马数字不太好做,要很熟悉规则
h**k
发帖数: 3368
3
恭喜,看来微软的offer拿定了。
d********e
发帖数: 132
4
请问第三题是什么意思?

种解法,写了两种的code.

【在 p**********s 的大作中提到】
: windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
: 1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
: 2 bool isBST(node *n);
: 3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
: 5 如何设计web browser的ui.瞎扯就好了.
: 面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

y*****o
发帖数: 36
5
同问!!
m******6
发帖数: 599
6
congrats! tho i dont think the team is good...
f*******h
发帖数: 53
7
不判断数字大小就是7行,加上判断1-3999要多两行
StringBuilder romanString=new StringBuilder();
for (int i=0;i
if (inputNumber<1)
break;
while (inputNumber>=ROMANNUMBERS[i]){

inputNumber-=ROMANNUMBERS[i];
romanString.append(ROMANSTRINGS[i]);
}

}
return romanString.toString();
f*******h
发帖数: 53
8
加上:
private static final int[] ROMANNUMBERS={1000,900,500,400,100,90,50,40
,10,9,5,4,1};
private static final String[] ROMANSTRINGS={"M","CM","D","CD","C","XC","
L"
,"XL","X","IX","V","IV","I"}
;
h**k
发帖数: 3368
9
罗马数字如何表示大于3999的数目?

【在 f*******h 的大作中提到】
: 不判断数字大小就是7行,加上判断1-3999要多两行
: StringBuilder romanString=new StringBuilder();
: for (int i=0;i:
: if (inputNumber<1)
: break;
: while (inputNumber>=ROMANNUMBERS[i]){
:
: inputNumber-=ROMANNUMBERS[i];
: romanString.append(ROMANSTRINGS[i]);

h**k
发帖数: 3368
10
其实你这程序可以再减掉两行,见下

上面这两行可以并入for循环的终止条件里
for( int i = 0; i < ROMANLENGTH && inputNumber > 0; ++i )

【在 f*******h 的大作中提到】
: 不判断数字大小就是7行,加上判断1-3999要多两行
: StringBuilder romanString=new StringBuilder();
: for (int i=0;i:
: if (inputNumber<1)
: break;
: while (inputNumber>=ROMANNUMBERS[i]){
:
: inputNumber-=ROMANNUMBERS[i];
: romanString.append(ROMANSTRINGS[i]);

相关主题
问个google面试题G家电面面经--佛云了~~
Depth-First-Search又死在设计题上了...
问两道facebook面试题L家这题咋搞,巨变态
进入JobHunting版参与讨论
p********7
发帖数: 549
11
你google offer有了?

【在 h**k 的大作中提到】
: 恭喜,看来微软的offer拿定了。
p********7
发帖数: 549
12
面霸啊,你好多面试啊

目不难~
种解法,写了两种的code.
据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
写只要7行,很牛~
时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点
喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

【在 p**********s 的大作中提到】
: windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
: 1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
: 2 bool isBST(node *n);
: 3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
: 5 如何设计web browser的ui.瞎扯就好了.
: 面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

K******g
发帖数: 1870
13
我写的isBST()代码,请大家指出错误,或者可以优化的地方
typedef struct T_NODE
{
struct T_NODE *left, *right;
int v;
} NODE;
int isBST(NODE* root)
{
if(root==NULL) return 1;
if(root->left!=NULL)
{
if(root->left->v>root->v) return 0;
if(findLeftBiggest(root->left) > root->v) return 0;
}
if(root->right!=NULL)
{
if(root->right->vv) return 0;
if(findRightSmallest(root->right) < root->v) return 0;
}

return isBST(root->left) && isBST(root->right

【在 p**********s 的大作中提到】
: windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
: 1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
: 2 bool isBST(node *n);
: 3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
: 5 如何设计web browser的ui.瞎扯就好了.
: 面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

f*******h
发帖数: 53
14
罗马字母上面加上横杠,那个没法输入,所以面试那个就没意义了

【在 h**k 的大作中提到】
: 罗马数字如何表示大于3999的数目?
f*******h
发帖数: 53
15
递归里面可以保存当前最大值,就不用反复调用寻找左边最大和右边最小了。

【在 K******g 的大作中提到】
: 我写的isBST()代码,请大家指出错误,或者可以优化的地方
: typedef struct T_NODE
: {
: struct T_NODE *left, *right;
: int v;
: } NODE;
: int isBST(NODE* root)
: {
: if(root==NULL) return 1;
: if(root->left!=NULL)

K******g
发帖数: 1870
16
保存的用处应该不是很大吧?因为每个节点的左边最大和右边最小都是不同的。

【在 f*******h 的大作中提到】
: 递归里面可以保存当前最大值,就不用反复调用寻找左边最大和右边最小了。
f*********5
发帖数: 576
17
带简历干什么?

目不难
~
种解法,写了两种的code.
据是否有
效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
写只要
7行,很牛~
时候带给我。另
外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建
议大家以后要沙
拉就好了,情愿饿一点,不要太狼狈。。。

【在 p**********s 的大作中提到】
: windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
: 1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
: 2 bool isBST(node *n);
: 3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
: 5 如何设计web browser的ui.瞎扯就好了.
: 面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

f*******h
发帖数: 53
18
你可以想象一下从root做起,那么root.value对于左边的树来说就是最大值,对右边的
树来说就是最小值,这样可以省时间

【在 K******g 的大作中提到】
: 保存的用处应该不是很大吧?因为每个节点的左边最大和右边最小都是不同的。
s*******t
发帖数: 248
19
http://cslibrary.stanford.edu/110/BinaryTrees.html
上面对这个题讲得挺明白的。

【在 K******g 的大作中提到】
: 保存的用处应该不是很大吧?因为每个节点的左边最大和右边最小都是不同的。
s*******t
发帖数: 248
20
第一题,
我能想到的是,先测试是否是circle,如果是的话,再break circle,然后再找
intersection,不知道还有没有更好的方法。

目不难~
种解法,写了两种的code.
据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
写只要7行,很牛~
时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点
喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

【在 p**********s 的大作中提到】
: windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
: 1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
: 2 bool isBST(node *n);
: 3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
: 5 如何设计web browser的ui.瞎扯就好了.
: 面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

相关主题
请教一道面试题Arista面经
刚才的amazon phone interview 第一轮急!google 一面。请大侠看看
这个check whether a binary tree is a BST 问题判断BT是否BST?
进入JobHunting版参与讨论
p**********s
发帖数: 115
21
最简单的方法是用hash~

【在 s*******t 的大作中提到】
: 第一题,
: 我能想到的是,先测试是否是circle,如果是的话,再break circle,然后再找
: intersection,不知道还有没有更好的方法。
:
: 目不难~
: 种解法,写了两种的code.
: 据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 写只要7行,很牛~
: 时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点
: 喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

K******g
发帖数: 1870
22
但是你要不停的在左子树找最大的,当前节点左孩子的值与该节点左子树的最大值是不
同的,所以保不保存意义不大,因为每次搜索的时候,走的路径不同

【在 f*******h 的大作中提到】
: 你可以想象一下从root做起,那么root.value对于左边的树来说就是最大值,对右边的
: 树来说就是最小值,这样可以省时间

K******g
发帖数: 1870
23
还有一个更好的办法:
1)先求出List-1的长度L1,求出List-2的长度L2
2) 定 D = abs(L1-L2)
3) 让长的那个List先走D步,然后两个List同时走
最后相遇的那个节点就是重合的那个点
如果某个List有环,我们先找到环开始的节点,并且断开,然后用上述的方法,就可以
找到重合的点了。

【在 p**********s 的大作中提到】
: 最简单的方法是用hash~
f*******h
发帖数: 53
24
isBst(Node node, int maxValue, int minValue)
用这个做递归,刚开始maxValue=Integer.MAX_VALUE minValue=Integer.MIN_VALUE
从root做起:
isBst(root.left,root.value,Integer.MIN_VALUE) && isBst(root.right,Integer.
MAX_VALUE, root.value)
明白了么?

【在 K******g 的大作中提到】
: 但是你要不停的在左子树找最大的,当前节点左孩子的值与该节点左子树的最大值是不
: 同的,所以保不保存意义不大,因为每次搜索的时候,走的路径不同

K******g
发帖数: 1870
25
不明白
你把这个值传下去干吗呢?每次搜索左子树最大值的时候,走的都是不同路径(从左子
树一直向右,找到最右的一个leaf就返回),你保存这个值有什么意义呢
如果不保存,需要把每个节点遍历一边, O(n),对每个节点,需要搜索左右子树的最值,O(nlogn)。
所以最终的复杂度是O(n+nlogn)
你保存的话,复杂度又是多少?

【在 f*******h 的大作中提到】
: isBst(Node node, int maxValue, int minValue)
: 用这个做递归,刚开始maxValue=Integer.MAX_VALUE minValue=Integer.MIN_VALUE
: 从root做起:
: isBst(root.left,root.value,Integer.MIN_VALUE) && isBst(root.right,Integer.
: MAX_VALUE, root.value)
: 明白了么?

f*******h
发帖数: 53
26
再仔细想想,认真想想。
源程序:
boolean isBst( Node root )
{
return isBst( root, Integer.MAX_VALUE, Integer.MIN_VALUE );
}
int isBst( Node root, int max, int min)
{
if (root==null) return true;
if (root.value >=min && root.value <= max)
{
return isBst( root.left, root.value, min) && isBst( root.right, max,
root.value);
}
else
{
return false;
}
}
f*******h
发帖数: 53
27
O(N)+O(N) call stack
p**********s
发帖数: 115
28
正解~

【在 f*******h 的大作中提到】
: 再仔细想想,认真想想。
: 源程序:
: boolean isBst( Node root )
: {
: return isBst( root, Integer.MAX_VALUE, Integer.MIN_VALUE );
: }
: int isBst( Node root, int max, int min)
: {
: if (root==null) return true;
: if (root.value >=min && root.value <= max)

p**********s
发帖数: 115
29
hash对有环的情况好处理~
你说的方法对有环的情况其实不用断开,相交点肯定在每个环之前,所以只要记下两个
list在环之前的长度就行了.

【在 K******g 的大作中提到】
: 还有一个更好的办法:
: 1)先求出List-1的长度L1,求出List-2的长度L2
: 2) 定 D = abs(L1-L2)
: 3) 让长的那个List先走D步,然后两个List同时走
: 最后相遇的那个节点就是重合的那个点
: 如果某个List有环,我们先找到环开始的节点,并且断开,然后用上述的方法,就可以
: 找到重合的点了。

p**********s
发帖数: 115
30
方法二用inorder,传递上一个访问值。如果当前值大于上个值就继续,否则return
false.

【在 f*******h 的大作中提到】
: 再仔细想想,认真想想。
: 源程序:
: boolean isBst( Node root )
: {
: return isBst( root, Integer.MAX_VALUE, Integer.MIN_VALUE );
: }
: int isBst( Node root, int max, int min)
: {
: if (root==null) return true;
: if (root.value >=min && root.value <= max)

相关主题
"Hacking a G Interview"怎么有这样低级错?讨论个Binary search tree的题目
也被A电了一下这个check whether a binary tree is a BST or not
判断 bst 疑问MS onsite 面经
进入JobHunting版参与讨论
r********9
发帖数: 1116
31
如何找到环开始的节点? efficiently...

【在 K******g 的大作中提到】
: 还有一个更好的办法:
: 1)先求出List-1的长度L1,求出List-2的长度L2
: 2) 定 D = abs(L1-L2)
: 3) 让长的那个List先走D步,然后两个List同时走
: 最后相遇的那个节点就是重合的那个点
: 如果某个List有环,我们先找到环开始的节点,并且断开,然后用上述的方法,就可以
: 找到重合的点了。

m*****g
发帖数: 226
32
有环的话,应该看两个list入环的入口是否相同。
如果相同,那么才往前面推。如果入口不相同,那么相交就是环长。

【在 p**********s 的大作中提到】
: hash对有环的情况好处理~
: 你说的方法对有环的情况其实不用断开,相交点肯定在每个环之前,所以只要记下两个
: list在环之前的长度就行了.

K******g
发帖数: 1870
33
怎么传递上一个访问值?从上往下可以传递,如果inorder从leaf返回的时候,你怎么
把左边被访问的leaf传到上一层去?除非你additional storage存起来,就可以了

【在 p**********s 的大作中提到】
: 方法二用inorder,传递上一个访问值。如果当前值大于上个值就继续,否则return
: false.

A*H
发帖数: 127
34
any details of problem 3?
i**********e
发帖数: 1145
35
第二题 isBST(node*) 我把我的思路和解法都写下来了。让大家参考参考下。
http://www.ihas1337code.com/2010/09/determine-if-binary-tree-is-binary.html

目不难~
种解法,写了两种的code.
据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
写只要7行,很牛~
时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点
喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

【在 p**********s 的大作中提到】
: windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
: 1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
: 2 bool isBST(node *n);
: 3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
: 5 如何设计web browser的ui.瞎扯就好了.
: 面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

y*********e
发帖数: 518
36

目不难~
种解法,写了两种的code.
据是否有效),用stack做.题目挺
复杂的,但想到DFS这步就豁然开朗了.
写只要7行,很牛~
时候带给我。另外中午吃饭错点
了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙
拉就好了,情愿饿一点,不要太
狼狈。。。
尝试用C#写Roman number。没有检测输入的值。
1 private char[] romans = { 'M', 'D', 'C', 'L', 'X', 'V', 'I' };
2 private int[] values = {1000, 500, 100, 50, 10, 5, 1 };
3
4 public string string2Roam(int num) {
5 StringBuilder sb = new StringBuilder();
6 for (int i = 0; i < values.Length; i++) {
7 sb.append(new String(romans[i], num / va

【在 p**********s 的大作中提到】
: windows live team, 面了5个,很奇怪只有第一个是principle,其他都是manager. 题目不难~
: 1 find intersection of two link list(each one may have a circle).我给了四种解法,写了两种的code.
: 2 bool isBST(node *n);
: 3 DFS在uml里的变种(大概是说有个database,里面存了结构化的网页数据,要判断数据是否有效),用stack做.题目挺复杂的,但想到DFS这步就豁然开朗了.
: 4 string2Roam.把1-1000里的数字string变成罗马数字string. 貌似他手下的人用C#写只要7行,很牛~
: 5 如何设计web browser的ui.瞎扯就好了.
: 面试前一天晚上12点才发现没带简历,赶紧发信给hr让帮忙打印几份,第二天见面的时候带给我。另外中午吃饭错点了中餐,结果聊天的时候最上全是面条,很多次都差点喷出来了^-^ 建议大家以后要沙拉就好了,情愿饿一点,不要太狼狈。。。

1 (共1页)
进入JobHunting版参与讨论
相关主题
急!google 一面。请大侠看看[原创MITBBS首发]2年CS求职打怪升级心得
判断BT是否BST?问个google面试题
"Hacking a G Interview"怎么有这样低级错?Depth-First-Search
也被A电了一下问两道facebook面试题
判断 bst 疑问G家电面面经--佛云了~~
讨论个Binary search tree的题目又死在设计题上了...
这个check whether a binary tree is a BST or notL家这题咋搞,巨变态
MS onsite 面经请教一道面试题
相关话题的讨论汇总
话题: isbst话题: root话题: node话题: int话题: return