由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - G电面面经
相关主题
这个check whether a binary tree is a BST or not那个24 game given 4 number用= - × /的题
判断 bst 疑问请教MapReduce怎么找median
Two CS interview questions问个snapchat的面经题dfs优化的题
求解lintcode Majority Number III请教careercup上的一道题
Maximum Sum of Increasing Sequencecareerup 150 上一道题 答案没看懂?
这段LIS为啥崩溃?讨论一道construct BST level by level的问题
终于拿到offer了问一个java的函数调用问题
贡献T家新鲜面经,求个bless讨论个Binary search tree的题目
相关话题的讨论汇总
话题: int话题: nums话题: return话题: 出错话题: 概率
进入JobHunting版参与讨论
1 (共1页)
x***j
发帖数: 75
1
老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
电面, 希望下次不要碰到这么傻逼的人。
1.
给一个数组
有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
2.
有一个函数
long compute(int i) {
 return …;
}
返回值有可能出错概率是 p=1/10000。
还有一个函数
long total(int n) {
 long s = 0;
 for (int i =0; i < n; i++) {
   s += compute(i);
 }
 return s;
}
这样出错概率就是 np;
问: 如何改第二个函数,让他的出错概率小于p?
我的思路是,for 循环里,再加个循环,写了代码。 最后老印说work, 大多人都这么做
,好像他不满意。这个题怎么做?
3. 考多线程。
给个函数
long sum(int fileId, int machID){
//return the sum of the numbers in this file using this machine.
}
实现另一个函数,
input: N(N files from 1 to N), enough machine for using
output; the total sum of these files.
long getAllSum(int N){
}
大牛说说这题怎么写?
W*********y
发帖数: 481
2
第一题可以看做是longest increasing sequence 的特例,一旦找到increasing
sequence 长度为2的就return true
这样可以有1 pass的线性算法,constant space。

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

e********2
发帖数: 495
3
第二题分成n/k段,每段k个,重复t次。然后优化
[[1-(1-p)^k}^t]^(n/k) < p
先对k做最大化,然后求t。
第三题Binary sum,Machine之间应该能通信吧!

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

j**********3
发帖数: 3211
4
lz简历上有多线程背景么?
r****7
发帖数: 2282
5
G果然是bar高啊。。。除了第一题别的都不会。。。
第一题应该是扫一遍,更新min 和 mid,遇到大于mid的就返回

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

l*****a
发帖数: 14598
6
关于第二题
function call一次的出错概率是p
call n次的话就是np?

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

x***j
发帖数: 75
7
没有,new grad

【在 j**********3 的大作中提到】
: lz简历上有多线程背景么?
a*****a
发帖数: 46
8
不出错的概率是(1-p)
n次里面都不出错的概率是(1-p)^n 因为p很小,约等于1-np,
然后出错的概率是1-(1-np) = np.

【在 l*****a 的大作中提到】
: 关于第二题
: function call一次的出错概率是p
: call n次的话就是np?

k*******a
发帖数: 433
9
是多少?
P的n 次方???

【在 l*****a 的大作中提到】
: 关于第二题
: function call一次的出错概率是p
: call n次的话就是np?

k*******a
发帖数: 433
10
第三题如果用锁的话,怎么做?
是什么atomic?

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

相关主题
这段LIS为啥崩溃?那个24 game given 4 number用= - × /的题
终于拿到offer了请教MapReduce怎么找median
贡献T家新鲜面经,求个bless问个snapchat的面经题dfs优化的题
进入JobHunting版参与讨论
r****7
发帖数: 2282
11
关键是没有一个对与错的标准,call多少次也无助于找到对的结果啊

【在 l*****a 的大作中提到】
: 关于第二题
: function call一次的出错概率是p
: call n次的话就是np?

m*********p
发帖数: 112
12
zan

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

j**********3
发帖数: 3211
13
一般不会多线程,简历没写,人家不会问的

【在 x***j 的大作中提到】
: 没有,new grad
x***j
发帖数: 75
14
那是一般。

【在 j**********3 的大作中提到】
: 一般不会多线程,简历没写,人家不会问的
m*********p
发帖数: 112
15
约等于np吧 1-(1-p)^n,因为p<<1

【在 l*****a 的大作中提到】
: 关于第二题
: function call一次的出错概率是p
: call n次的话就是np?

m*********p
发帖数: 112
16
LIS的DP难道不需要一个O(n)的status vector吗?

【在 W*********y 的大作中提到】
: 第一题可以看做是longest increasing sequence 的特例,一旦找到increasing
: sequence 长度为2的就return true
: 这样可以有1 pass的线性算法,constant space。

m*********p
发帖数: 112
17
第二个能不能
call每个函数3次,然后take majority vote呢,这样单次出错的概率大概是3p^2 << p

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

T*****u
发帖数: 7103
18
就是这个思路吧。关键看需要多少次才能满足出错概率,3次可能太多也可能太少。

p

【在 m*********p 的大作中提到】
: 第二个能不能
: call每个函数3次,然后take majority vote呢,这样单次出错的概率大概是3p^2 << p

g**4
发帖数: 863
19
第一题我也只会用2个数组来做,类似G家的买卖股票那题
有没有人能提供个更好的解法?
w****a
发帖数: 710
20
这个解法能不能用?
vector three_nums(const vector& nums) {
if(nums.empty()) return {};

int first = 0, mid = 0;
int second = -1;

for(int i = 1; i < nums.size(); ++i) {
if(second == -1) {
if(nums[first] < nums[i]) {
second = i;
} else if (nums[first] > nums[i]) {
first = i;
}
} else if (nums[i] > nums[second]) {
return {nums[first], nums[second], nums[i]};
} else if (nums[i] > nums[first]) {
first = mid;
second = i;
}
}
return {};
}

【在 g**4 的大作中提到】
: 第一题我也只会用2个数组来做,类似G家的买卖股票那题
: 有没有人能提供个更好的解法?

相关主题
请教careercup上的一道题问一个java的函数调用问题
careerup 150 上一道题 答案没看懂?讨论个Binary search tree的题目
讨论一道construct BST level by level的问题microsoft面经
进入JobHunting版参与讨论
c*****w
发帖数: 50
21
第一题O1 space 解
设ai是原数组
xi=min{aj|j yi=min{aj|exist ak For every i
If ai>y[i-1], done
Elif ai Else
yi = ai
One pass while updating xi yi
[发表自未名空间手机版 - m.mitbbs.com]
W*********y
发帖数: 481
22
不是的,其实是需要一个size 为 k+1的vector,其中k为最大increasing subarray 的
长度。
对本题只需找到k为3的解是否存在,因此空间constant,时间O(n)
bool kLIS(vector &data, int k){
vector stack(k+1);
int top = 0;
stack[0] = -1;
for(int i=0;i if(data[i]>stack[top]){
stack[++top] = data[i];
}
else{
auto low = lower_bound(stack.begin(), top+stack.begin(), data[i]);
*low = data[i];
}
if(top==k)
return true;
}
return false;
}

【在 m*********p 的大作中提到】
: LIS的DP难道不需要一个O(n)的status vector吗?
j*******p
发帖数: 73
23
我看第一题也是想到用stack一次扫描即可,保存到当前位置最大值最小的上升序列,
跟楼上一样。但stack长度只需要k-1就够了吧,一旦溢出就可以返回结果了。
第二题只需要循环内部做一个majority vote即可
第三题我会用map reduce的思路去解

【在 W*********y 的大作中提到】
: 不是的,其实是需要一个size 为 k+1的vector,其中k为最大increasing subarray 的
: 长度。
: 对本题只需找到k为3的解是否存在,因此空间constant,时间O(n)
: bool kLIS(vector &data, int k){
: vector stack(k+1);
: int top = 0;
: stack[0] = -1;
: for(int i=0;i: if(data[i]>stack[top]){
: stack[++top] = data[i];

l****h
发帖数: 274
24
若凭南辕吏
为问乘槎人
包含通远迩
子夏正离群
故人别二年
万里忽争先
事与云水白
皆欲肆轥轹
可夭札迷冥
抛官归旧谿
l********s
发帖数: 358
25
1. O(n)
从左到右update minValue, 对于A[i]比minValue大,说明A[i]有小的在左边, 记录在
一个boolean array里面
从右到左update maxValue, 对于A[i]比minValue小,说明A[i]有大的在右边
2.
s += compute(i)
在这里call computer(i)两次
1)如果两次值一样,出错的几率是p*p
2)如果两次值不一样,就任意取一个p*p + p*0.5 (可能两个值都错,也有可能一个
对一个错)
3.
同一个machine多线程的话,blockingQueue里面放fileId,sum设为static的
atomicInteger
多个machine的话,就是IPC,一个machine做coordinator,往message queue里面放
fileID。其他machine从message queue里面拿fileID,统计完把结果放到另外一个
message queue里面,coordinator取出结果然后sumAll.
其实就是mapper + reducer

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

e******n
发帖数: 3435
26
多长时间那,要做3题?

【在 x***j 的大作中提到】
: 老印,三个题。电话晚打1个半小时,中间掉线6次,还把我挂了。投诉HR,再安排一次
: 电面, 希望下次不要碰到这么傻逼的人。
: 1.
: 给一个数组
: 有没有三个下标 i < j < k, 满足A[i] < A[j] < A[k]。
: 我用2个数组,dp做的。好像不太满意,有没有比较好的解法?
: 2.
: 有一个函数
: long compute(int i) {
:  return …;

P****i
发帖数: 1362
27
只返回T/F constant space就可以,不然得linear space
不过感觉还有更快的O(log n)的方法

【在 c*****w 的大作中提到】
: 第一题O1 space 解
: 设ai是原数组
: xi=min{aj|j: yi=min{aj|exist ak: For every i
: If ai>y[i-1], done
: Elif ai: Else
: yi = ai
: One pass while updating xi yi

e*******0
发帖数: 3
28
反例 2,3,1,4

【在 c*****w 的大作中提到】
: 第一题O1 space 解
: 设ai是原数组
: xi=min{aj|j: yi=min{aj|exist ak: For every i
: If ai>y[i-1], done
: Elif ai: Else
: yi = ai
: One pass while updating xi yi

c*****w
发帖数: 50
29
2 3 1 4
x 2 2 1 1
y na 3 3 3(4>3done)

[发表自未名空间手机版 - m.mitbbs.com]

【在 e*******0 的大作中提到】
: 反例 2,3,1,4
c*****w
发帖数: 50
30
变量名没用好,这里的x y不对应原题的x y

[发表自未名空间手机版 - m.mitbbs.com]

【在 c*****w 的大作中提到】
: 2 3 1 4
: x 2 2 1 1
: y na 3 3 3(4>3done)
:
: [发表自未名空间手机版 - m.mitbbs.com]

相关主题
问个google面试题判断 bst 疑问
问个google面试题的最佳解法Two CS interview questions
这个check whether a binary tree is a BST or not求解lintcode Majority Number III
进入JobHunting版参与讨论
Q**F
发帖数: 995
31
第二题,可不可以用这个思路。
假设每个compute(i)算两次,比较两次的结果,如果相等就算完成,要不然就重新计
算,这步出错的概率为p^2,
那么这个出错的概率问n*(p^2).
如果这个要小于 p
n<1/p 就可以了
如果计算3次,比较3次的结果,这本出错的概率为p^3.
只要n<1/(p^2)就可以了。
w****k
发帖数: 755
32
bool incr(vector& v)
{
int min = INT_MAX;
int mid = INT_MAX;
for(int i : v)
{
if(i <= min)
min = i;
else if(i <= mid)
mid = i;
else
return true;
}
return false;
}
k***7
发帖数: 6
33
5, 6, 1, 2, 3

【在 w****a 的大作中提到】
: 这个解法能不能用?
: vector three_nums(const vector& nums) {
: if(nums.empty()) return {};
:
: int first = 0, mid = 0;
: int second = -1;
:
: for(int i = 1; i < nums.size(); ++i) {
: if(second == -1) {
: if(nums[first] < nums[i]) {

i*******t
发帖数: 79
34
第一题你考虑太复杂了,先考虑如果只是i,j怎么做,只是找个比当前最小的值大的就
结束了。扩展到k,就是找个比当前A[j]大的就结束了,当然A[j]可能会变小的。
第二题,如果compute(i)是p,那么连续两次都出错的概率就是p^2 (连续调用直到连
续两次得到的结果相同),根据n的大小,连续调用compute(i)多次,使得最终的概率
小于p
第三题,没觉得是多线程,都有machineid了,怎么是多线程?分布式吧。map reduce

【在 x***j 的大作中提到】
: 那是一般。
1 (共1页)
进入JobHunting版参与讨论
相关主题
讨论个Binary search tree的题目Maximum Sum of Increasing Sequence
microsoft面经这段LIS为啥崩溃?
问个google面试题终于拿到offer了
问个google面试题的最佳解法贡献T家新鲜面经,求个bless
这个check whether a binary tree is a BST or not那个24 game given 4 number用= - × /的题
判断 bst 疑问请教MapReduce怎么找median
Two CS interview questions问个snapchat的面经题dfs优化的题
求解lintcode Majority Number III请教careercup上的一道题
相关话题的讨论汇总
话题: int话题: nums话题: return话题: 出错话题: 概率