boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 发个Yahoo onsite面经,攒人品,求bless!! executive committee
相关主题
Epic 店面被考到coding的题目。。。(面经)
yahoo onsite完,又被要求加试2h电面,不知道为什么(附面经)
HackerRank find string..
问一个post fix 算式计算的问题
请问一道题
Google电面题一道
求问一题,如何计算String 算式结果?
string /File IO processing using C (转载)
请教:C++, 忽略大小写的字符串比较
问几道较难的字符串题
相关话题的讨论汇总
话题: set话题: int话题: string话题: findparent话题: c2
进入JobHunting版参与讨论
1 (共1页)
d*****0
发帖数: 72
1
May 23面的
一共三轮
就第一轮简单问了一下resume的intern
其他的每轮就只有一个算法题
1. 给定rand1():能够产生random数字0,1
用rand1()实现:
rand3()--> 0, 1, 2, 3
rand4()--> 0, 1, 2, 3, 4
randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
,注意edge case
2. given 一个字符串,这个字符串是一个算式,包含加减乘除,没有括号,符号和数
字之间以一个空格格开,比如:“1 + 2 * 4 / 5”,return算式的结果
3. given两个字符串,分别表示两个元素等和不等,比如:
arr1 = {“A=B”, "B=C", ...}
arr2 = {"A!=C", "F!=R", ...}
判断是否有矛盾,这个例子就有矛盾:A!=C
given提取元素的method: getID(..),这个不用自己写:String[] sarr = getID(arr1
[0]) --> sarr {A, B}
今天问道口头offer, 正在executive committee review中,求bless!!!
c*******r
发帖数: 610
2
多谢分享。
第三题没看明白,是什么意思呢?
String[] sarr = getID(arr1[0]) --> sarr {A, B}, 这个方法的意思是给定数组元
素,提取该元素里面涉及到的element吗?那么两个元素是否相等需要自己提取吗?
y***n
发帖数: 1594
3
第一个有什么好的解法。
d*****0
发帖数: 72
4

本来最先题目是一个数组,也有提取符号的方法。不不过面试官简化了,弄成了两个数
组,第一个数组都是等的,第二个都是不等的

【在 c*******r 的大作中提到】
: 多谢分享。
: 第三题没看明白,是什么意思呢?
: String[] sarr = getID(arr1[0]) --> sarr {A, B}, 这个方法的意思是给定数组元
: 素,提取该元素里面涉及到的element吗?那么两个元素是否相等需要自己提取吗?

d*****0
发帖数: 72
5

2^k*rand1() + 2^k-1*rand1() + ... + 2^2*rand1() + 2*rand1() + rand1()
while 循环,如果上面式子得到的值少于等于n就return

【在 y***n 的大作中提到】
: 第一个有什么好的解法。
y***n
发帖数: 1594
6
能稍微解释一下吗,这些题不太容易想
m******s
发帖数: 1469
7
Bless

【在 d*****0 的大作中提到】
: May 23面的
: 一共三轮
: 就第一轮简单问了一下resume的intern
: 其他的每轮就只有一个算法题
: 1. 给定rand1():能够产生random数字0,1
: 用rand1()实现:
: rand3()--> 0, 1, 2, 3
: rand4()--> 0, 1, 2, 3, 4
: randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
: ,注意edge case

j******4
发帖数: 66
8
想 问题三题 的思路是什么呢
j******4
发帖数: 66
9
第三题的 思路 是不是 先的建无向图,然后,根据第二个集合,traverse验证?
d**e
发帖数: 6098
10
请问这个是根据什么而得出来的式子?
谢谢!

【在 d*****0 的大作中提到】
:
: 2^k*rand1() + 2^k-1*rand1() + ... + 2^2*rand1() + 2*rand1() + rand1()
: while 循环,如果上面式子得到的值少于等于n就return

相关主题
问一个post fix 算式计算的问题
请问一道题
Google电面题一道
求问一题,如何计算String 算式结果?
进入JobHunting版参与讨论
j**********3
发帖数: 3211
11
is LZ new grad?
S******1
发帖数: 216
12
//11:55 第3题不是图,是disjoint set
boolean isRight(String[] ss1, String[] ss2) {
if (ss1 == null || ss2 == null)
return false;

Map indexMap = new HashMap();
for (String s : ss1) {
char c1 = s.charAt(0);
char c2 = s.charAt(2);
if (!indexMap.containsKey(c1))
indexMap.put(c1, indexMap.size());
if (!indexMap.containsKey(c2))
indexMap.put(c2, indexMap.size());
}

int[] set = new int[indexMap.size()];
for (int i = 0; i < set.length; i++)
set[i] = -1;

for (String s : ss1) {
char c1 = s.charAt(0);
char c2 = s.charAt(2);
union(set, indexMap.get(c1), indexMap.get(c2));
}

for (String s : ss2) {
char c1 = s.charAt(0);
char c2 = s.charAt(3);
if (indexMap.containsKey(c1) && indexMap.containsKey(c2)) {
int p1 = findParent(set, indexMap.get(c1));
int p2 = findParent(set, indexMap.get(c2));

if (p1 == p2)
return false;
}
}

return true;
}
void union(int[] set, int i, int j) {
int p1 = findParent(set, i);
int p2 = findParent(set, j);

if (set[p1] < set[p2])
set[p2] = p1;
else
set[p1] = p2;
}
int findParent(int[] set, int i) {
if (set[i] < 0)
return i;

int p = findParent(set[i]);
set[i] = p;

return p;
}
S******1
发帖数: 216
13
第一题reject sampling,
binary search
suppose sample space is power of 2, if more, reject and select again
If negative, set offset and restore
l*****a
发帖数: 14598
14
不根据什么呀
简单是就是生成如下序列(这个例子是rand5())
0000
0001
0010
0011
0100
0101
.....
每个digit调用一次rand1()
如果生成的序列超过n,就排除
剩下的这些按照概率来说出现的频率一样

【在 d**e 的大作中提到】
: 请问这个是根据什么而得出来的式子?
: 谢谢!

d*****0
发帖数: 72
15

是的 new grad

【在 j**********3 的大作中提到】
: is LZ new grad?
d*****0
发帖数: 72
16

谢谢!就你bless我,大家都看题去了。。嘿嘿

【在 m******s 的大作中提到】
: Bless
y***n
发帖数: 1594
17
不好意思,一看题就忽略主题了,bless。
d*****0
发帖数: 72
18

哈哈,谢谢~

【在 y***n 的大作中提到】
: 不好意思,一看题就忽略主题了,bless。
j******4
发帖数: 66
19

-------------------------
第一次见这种类型题,学习了,非常感谢。

【在 S******1 的大作中提到】
: //11:55 第3题不是图,是disjoint set
: boolean isRight(String[] ss1, String[] ss2) {
: if (ss1 == null || ss2 == null)
: return false;
:
: Map indexMap = new HashMap();
: for (String s : ss1) {
: char c1 = s.charAt(0);
: char c2 = s.charAt(2);
: if (!indexMap.containsKey(c1))

d**e
发帖数: 6098
20
难道你说的序列不算根据啊?这个理解比较简单。
不过话说回来,我到现在还是不明白那题,就是跟这题类似的,好像是rand3生成rand5
还是7的,说如果大过某数就去除,然后再继续得到某个范围为止。
打个比方,可以得到1~25,但expect得到1~21,所以如果产生的数是22~25,就去掉
,再继续找到1~21为止。这时问题我的问题就来了。
如果说一个随机函数是均匀分布的可以得到1~25,那是说不管我运行多少次,得到的数
都是1~25.那希望以此函数产生均匀分布的函数得到1~21,也就是说原随机函数不管运
行多少次,那根据某个公式得到的数也都是1~21,但如果去除某些结果,这还是算随
机分布吗?
我不是学数学的,高数概率也学得不好,所以没好好去证明,但就是想不明白。

【在 l*****a 的大作中提到】
: 不根据什么呀
: 简单是就是生成如下序列(这个例子是rand5())
: 0000
: 0001
: 0010
: 0011
: 0100
: 0101
: .....
: 每个digit调用一次rand1()

相关主题
string /File IO processing using C (转载)
请教:C++, 忽略大小写的字符串比较
问几道较难的字符串题
菜鸟求救 请大家看看我的代码有没有问题
进入JobHunting版参与讨论
R*******d
发帖数: 13640
21
祝福

【在 d*****0 的大作中提到】
: May 23面的
: 一共三轮
: 就第一轮简单问了一下resume的intern
: 其他的每轮就只有一个算法题
: 1. 给定rand1():能够产生random数字0,1
: 用rand1()实现:
: rand3()--> 0, 1, 2, 3
: rand4()--> 0, 1, 2, 3, 4
: randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
: ,注意edge case

c********s
发帖数: 817
22
Bless!

May 23面的一共三轮就第一轮简单问了一下resume的intern其他的每轮就只有一个算法
题1. 给定rand1():能够产生random数字0,1

【在 d*****0 的大作中提到】
:
: 哈哈,谢谢~

w*****c
发帖数: 7276
23
big bless
D*******7
发帖数: 61
24
bless,问题不大,yahoo最近招不到人

【在 d*****0 的大作中提到】
: May 23面的
: 一共三轮
: 就第一轮简单问了一下resume的intern
: 其他的每轮就只有一个算法题
: 1. 给定rand1():能够产生random数字0,1
: 用rand1()实现:
: rand3()--> 0, 1, 2, 3
: rand4()--> 0, 1, 2, 3, 4
: randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
: ,注意edge case

d*****0
发帖数: 72
25
May 23面的
一共三轮
就第一轮简单问了一下resume的intern
其他的每轮就只有一个算法题
1. 给定rand1():能够产生random数字0,1
用rand1()实现:
rand3()--> 0, 1, 2, 3
rand4()--> 0, 1, 2, 3, 4
randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
,注意edge case
2. given 一个字符串,这个字符串是一个算式,包含加减乘除,没有括号,符号和数
字之间以一个空格格开,比如:“1 + 2 * 4 / 5”,return算式的结果
3. given两个字符串,分别表示两个元素等和不等,比如:
arr1 = {“A=B”, "B=C", ...}
arr2 = {"A!=C", "F!=R", ...}
判断是否有矛盾,这个例子就有矛盾:A!=C
given提取元素的method: getID(..),这个不用自己写:String[] sarr = getID(arr1
[0]) --> sarr {A, B}
今天问道口头offer, 正在executive committee review中,求bless!!!
-----------
收到正式offer!谢谢大家的祝福!
c*******r
发帖数: 610
26
多谢分享。
第三题没看明白,是什么意思呢?
String[] sarr = getID(arr1[0]) --> sarr {A, B}, 这个方法的意思是给定数组元
素,提取该元素里面涉及到的element吗?那么两个元素是否相等需要自己提取吗?
y***n
发帖数: 1594
27
第一个有什么好的解法。
d*****0
发帖数: 72
28

本来最先题目是一个数组,也有提取符号的方法。不不过面试官简化了,弄成了两个数
组,第一个数组都是等的,第二个都是不等的

【在 c*******r 的大作中提到】
: 多谢分享。
: 第三题没看明白,是什么意思呢?
: String[] sarr = getID(arr1[0]) --> sarr {A, B}, 这个方法的意思是给定数组元
: 素,提取该元素里面涉及到的element吗?那么两个元素是否相等需要自己提取吗?

d*****0
发帖数: 72
29

2^k*rand1() + 2^k-1*rand1() + ... + 2^2*rand1() + 2*rand1() + rand1()
while 循环,如果上面式子得到的值少于等于n就return

【在 y***n 的大作中提到】
: 第一个有什么好的解法。
y***n
发帖数: 1594
30
能稍微解释一下吗,这些题不太容易想
相关主题
常见的string hash function
google phone screen
问一道Google的题
设计一个string class,是应该用linked list还是array?
进入JobHunting版参与讨论
m******s
发帖数: 1469
31
Bless

【在 d*****0 的大作中提到】
: May 23面的
: 一共三轮
: 就第一轮简单问了一下resume的intern
: 其他的每轮就只有一个算法题
: 1. 给定rand1():能够产生random数字0,1
: 用rand1()实现:
: rand3()--> 0, 1, 2, 3
: rand4()--> 0, 1, 2, 3, 4
: randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
: ,注意edge case

j******4
发帖数: 66
32
想 问题三题 的思路是什么呢
j******4
发帖数: 66
33
第三题的 思路 是不是 先的建无向图,然后,根据第二个集合,traverse验证?
d**e
发帖数: 6098
34
请问这个是根据什么而得出来的式子?
谢谢!

【在 d*****0 的大作中提到】
:
: 2^k*rand1() + 2^k-1*rand1() + ... + 2^2*rand1() + 2*rand1() + rand1()
: while 循环,如果上面式子得到的值少于等于n就return

j**********3
发帖数: 3211
35
is LZ new grad?
S******1
发帖数: 216
36
//11:55 第3题不是图,是disjoint set
boolean isRight(String[] ss1, String[] ss2) {
if (ss1 == null || ss2 == null)
return false;

Map indexMap = new HashMap();
for (String s : ss1) {
char c1 = s.charAt(0);
char c2 = s.charAt(2);
if (!indexMap.containsKey(c1))
indexMap.put(c1, indexMap.size());
if (!indexMap.containsKey(c2))
indexMap.put(c2, indexMap.size());
}

int[] set = new int[indexMap.size()];
for (int i = 0; i < set.length; i++)
set[i] = -1;

for (String s : ss1) {
char c1 = s.charAt(0);
char c2 = s.charAt(2);
union(set, indexMap.get(c1), indexMap.get(c2));
}

for (String s : ss2) {
char c1 = s.charAt(0);
char c2 = s.charAt(3);
if (indexMap.containsKey(c1) && indexMap.containsKey(c2)) {
int p1 = findParent(set, indexMap.get(c1));
int p2 = findParent(set, indexMap.get(c2));

if (p1 == p2)
return false;
}
}

return true;
}
void union(int[] set, int i, int j) {
int p1 = findParent(set, i);
int p2 = findParent(set, j);

if (set[p1] < set[p2])
set[p2] = p1;
else
set[p1] = p2;
}
int findParent(int[] set, int i) {
if (set[i] < 0)
return i;

int p = findParent(set[i]);
set[i] = p;

return p;
}
S******1
发帖数: 216
37
第一题reject sampling,
binary search
suppose sample space is power of 2, if more, reject and select again
If negative, set offset and restore
l*****a
发帖数: 14598
38
不根据什么呀
简单是就是生成如下序列(这个例子是rand5())
0000
0001
0010
0011
0100
0101
.....
每个digit调用一次rand1()
如果生成的序列超过n,就排除
剩下的这些按照概率来说出现的频率一样

【在 d**e 的大作中提到】
: 请问这个是根据什么而得出来的式子?
: 谢谢!

d*****0
发帖数: 72
39

是的 new grad

【在 j**********3 的大作中提到】
: is LZ new grad?
d*****0
发帖数: 72
40

谢谢!就你bless我,大家都看题去了。。嘿嘿

【在 m******s 的大作中提到】
: Bless
相关主题
问一道C++编程题
判断一个string是否是某个pattern的周期循环
问个简单的问题...
请问关于字符串的面试题一般用c-style还是string class?
进入JobHunting版参与讨论
y***n
发帖数: 1594
41
不好意思,一看题就忽略主题了,bless。
d*****0
发帖数: 72
42

哈哈,谢谢~

【在 y***n 的大作中提到】
: 不好意思,一看题就忽略主题了,bless。
j******4
发帖数: 66
43

-------------------------
第一次见这种类型题,学习了,非常感谢。

【在 S******1 的大作中提到】
: //11:55 第3题不是图,是disjoint set
: boolean isRight(String[] ss1, String[] ss2) {
: if (ss1 == null || ss2 == null)
: return false;
:
: Map indexMap = new HashMap();
: for (String s : ss1) {
: char c1 = s.charAt(0);
: char c2 = s.charAt(2);
: if (!indexMap.containsKey(c1))

d**e
发帖数: 6098
44
难道你说的序列不算根据啊?这个理解比较简单。
不过话说回来,我到现在还是不明白那题,就是跟这题类似的,好像是rand3生成rand5
还是7的,说如果大过某数就去除,然后再继续得到某个范围为止。
打个比方,可以得到1~25,但expect得到1~21,所以如果产生的数是22~25,就去掉
,再继续找到1~21为止。这时问题我的问题就来了。
如果说一个随机函数是均匀分布的可以得到1~25,那是说不管我运行多少次,得到的数
都是1~25.那希望以此函数产生均匀分布的函数得到1~21,也就是说原随机函数不管运
行多少次,那根据某个公式得到的数也都是1~21,但如果去除某些结果,这还是算随
机分布吗?
我不是学数学的,高数概率也学得不好,所以没好好去证明,但就是想不明白。

【在 l*****a 的大作中提到】
: 不根据什么呀
: 简单是就是生成如下序列(这个例子是rand5())
: 0000
: 0001
: 0010
: 0011
: 0100
: 0101
: .....
: 每个digit调用一次rand1()

R*******d
发帖数: 13640
45
祝福

【在 d*****0 的大作中提到】
: May 23面的
: 一共三轮
: 就第一轮简单问了一下resume的intern
: 其他的每轮就只有一个算法题
: 1. 给定rand1():能够产生random数字0,1
: 用rand1()实现:
: rand3()--> 0, 1, 2, 3
: rand4()--> 0, 1, 2, 3, 4
: randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
: ,注意edge case

c********s
发帖数: 817
46
Bless!

May 23面的一共三轮就第一轮简单问了一下resume的intern其他的每轮就只有一个算法
题1. 给定rand1():能够产生random数字0,1

【在 d*****0 的大作中提到】
:
: 哈哈,谢谢~

w*****c
发帖数: 7276
47
big bless
D*******7
发帖数: 61
48
bless,问题不大,yahoo最近招不到人

【在 d*****0 的大作中提到】
: May 23面的
: 一共三轮
: 就第一轮简单问了一下resume的intern
: 其他的每轮就只有一个算法题
: 1. 给定rand1():能够产生random数字0,1
: 用rand1()实现:
: rand3()--> 0, 1, 2, 3
: rand4()--> 0, 1, 2, 3, 4
: randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
: ,注意edge case

c******1
发帖数: 37
49
我面试的时候面了这个我用union find做的那人说有o(n)的解法,面试官没跟我说正
确解法。但是一起面的人用了你这个解法面试官表示满意,我之前没看懂你这个解法,
现在觉得你这个做法也是O(n^2)把?

【在 S******1 的大作中提到】
: //11:55 第3题不是图,是disjoint set
: boolean isRight(String[] ss1, String[] ss2) {
: if (ss1 == null || ss2 == null)
: return false;
:
: Map indexMap = new HashMap();
: for (String s : ss1) {
: char c1 = s.charAt(0);
: char c2 = s.charAt(2);
: if (!indexMap.containsKey(c1))

I**********s
发帖数: 441
50
第一题应该也可以这样吧: n == 0 ? 0 : ((rand1() * INT_MAX) % n).
第三题可以用union find.

【在 d*****0 的大作中提到】
: May 23面的
: 一共三轮
: 就第一轮简单问了一下resume的intern
: 其他的每轮就只有一个算法题
: 1. 给定rand1():能够产生random数字0,1
: 用rand1()实现:
: rand3()--> 0, 1, 2, 3
: rand4()--> 0, 1, 2, 3, 4
: randN(int n)--> 0, 1, ..., N n可以是任意整数,包括0、负整数、正整数
: ,注意edge case

相关主题
Epic 店面被考到coding的题目。。。(面经)
yahoo onsite完,又被要求加试2h电面,不知道为什么(附面经)
HackerRank find string..
问一个post fix 算式计算的问题
进入JobHunting版参与讨论
z***y
发帖数: 73
51
祝福lz!
1.相当于每次产生一个bit,运行k次,保证2^k >= n,如果超过n就重新运算,否则就
返回;
2.可以用一个stack吧,碰到*/操作立马计算,完了以后再处理一下剩下的+ -;
3.用hash table吧。如果对象都只是一个字符,那么char table[256]即可。遍历相等
的串,把相等的元素设置成同样的值。然后遍历不等的串,取值出来比较即可。
f********c
发帖数: 147
52
能具体说说第三个怎么做吗如果用hashmap?

【在 z***y 的大作中提到】
: 祝福lz!
: 1.相当于每次产生一个bit,运行k次,保证2^k >= n,如果超过n就重新运算,否则就
: 返回;
: 2.可以用一个stack吧,碰到*/操作立马计算,完了以后再处理一下剩下的+ -;
: 3.用hash table吧。如果对象都只是一个字符,那么char table[256]即可。遍历相等
: 的串,把相等的元素设置成同样的值。然后遍历不等的串,取值出来比较即可。

f********c
发帖数: 147
53
感觉这个算法有bug,加入输入:
A=B,C=D,B=D
A!=C
按这个算法返回true啊

【在 c******1 的大作中提到】
: 我面试的时候面了这个我用union find做的那人说有o(n)的解法,面试官没跟我说正
: 确解法。但是一起面的人用了你这个解法面试官表示满意,我之前没看懂你这个解法,
: 现在觉得你这个做法也是O(n^2)把?

d********m
发帖数: 101
54
bless
c******1
发帖数: 37
55

我也觉得,这个问题感觉是个标准的union find 怎么会有O(n)的解法(我面试的时
候说只有26个字母所以是26n 也可以是 lg26 n)那人马上说如果有很多别的item ,不
知道是不是面试官想错了

【在 f********c 的大作中提到】
: 感觉这个算法有bug,加入输入:
: A=B,C=D,B=D
: A!=C
: 按这个算法返回true啊

t******d
发帖数: 1383
56
这个帖子不是很老的么?怎么冒上来了
f********c
发帖数: 147
57
不知你面的时候怎么做的?有没有和别人讨论得到O(n)的解啊?

【在 c******1 的大作中提到】
:
: 我也觉得,这个问题感觉是个标准的union find 怎么会有O(n)的解法(我面试的时
: 候说只有26个字母所以是26n 也可以是 lg26 n)那人马上说如果有很多别的item ,不
: 知道是不是面试官想错了

u*****l
发帖数: 444
58
恭喜一下楼主。
以后有机会找楼主要个推荐
1 (共1页)
进入JobHunting版参与讨论
相关主题
问几道较难的字符串题
菜鸟求救 请大家看看我的代码有没有问题
常见的string hash function
google phone screen
问一道Google的题
设计一个string class,是应该用linked list还是array?
问一道C++编程题
判断一个string是否是某个pattern的周期循环
问个简单的问题...
请问关于字符串的面试题一般用c-style还是string class?
相关话题的讨论汇总
话题: set话题: int话题: string话题: findparent话题: c2