由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Google intern 面经,回馈版面
相关主题
这题咋做, 有点像Run Length encoding, 但又不全是?问一道Google的题
G的一道Onesite题问一个CareerCup上的Google题
SnapChat 面經 + 彙總facebook programming challenge难度如何?
请教一道google的面试题前段时间的面试
如何判断一个数是不是回文?G家最新电面
问一道题请教一道G家面试题
An immediate intern position in central new jerseyF/L/A/G/T/Groupon/Box 贴面经 报offer 回报本版
问一道题啥叫encode/decode binary tree啊?
相关话题的讨论汇总
话题: int话题: count话题: slope话题: 格雷
进入JobHunting版参与讨论
1 (共1页)
m****u
发帖数: 3915
1
两个phone interview, 各45分钟
第一个人:
1 写一个返回所有n比特格雷码的函数
函数形式 vector getGrayCode(n)
比如 getGrayCode(2), 应该返回{0,1,3,2}
2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
这个
lookup table整个放到内存里?而是只把一部分放进去
说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
多的cache
miss。。。
请达人解释一下这道题
3 平面上有n个点,找一条直线,使它穿过最多的点
第二个人:
1 两个sorted array A,B, 问能否从A,B中各取且只取一个数,是他们的和为x
2 有list of strings, 要求首先encode到一个string,然后再decode,恢复这些
strings,如何encode和decode
3 寻找majority element, 既从一个长度为n的数组中找出一个数,这个数的出现次数
严格大于
n/2
f****g
发帖数: 313
2
第一个人:
1 写一个返回所有n比特格雷码的函数
函数形式 vector getGrayCode(n)
比如 getGrayCode(2), 应该返回{0,1,3,2}
2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
这个
lookup table整个放到内存里?而是只把一部分放进去
说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
多的cache
miss。。。
请达人解释一下这道题
3 平面上有n个点,找一条直线,使它穿过最多的点
O(n^2logn)
第二个人:
h**k
发帖数: 3368
3
你代码有个常见bug,自己找找吧。

【在 f****g 的大作中提到】
: 第一个人:
: 1 写一个返回所有n比特格雷码的函数
: 函数形式 vector getGrayCode(n)
: 比如 getGrayCode(2), 应该返回{0,1,3,2}
: 2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
: 这个
: lookup table整个放到内存里?而是只把一部分放进去
: 说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
: 多的cache
: miss。。。

f****g
发帖数: 313
4
谢谢, 是 & 而非 bit operation &&,haha

【在 h**k 的大作中提到】
: 你代码有个常见bug,自己找找吧。
h**k
发帖数: 3368
5
? bit operator 是 &,逻辑与是 &&,这个你没错啊
循环终止条件错了。

【在 f****g 的大作中提到】
: 谢谢, 是 & 而非 bit operation &&,haha
f****g
发帖数: 313
6
Got it :-) Thanks! should be hi >0, what a stupid mistake

【在 h**k 的大作中提到】
: ? bit operator 是 &,逻辑与是 &&,这个你没错啊
: 循环终止条件错了。

p******n
发帖数: 32
7
第二个人 第3题
既然严格大于n/2,那么只要用selection sort找第n/2个元素,这个元素就是要找的
元素。
time complexity O(n)
m****u
发帖数: 3915
8

这个怎么会是O(n)

【在 p******n 的大作中提到】
: 第二个人 第3题
: 既然严格大于n/2,那么只要用selection sort找第n/2个元素,这个元素就是要找的
: 元素。
: time complexity O(n)

m****u
发帖数: 3915
9
第一个人第二题你有什么想法?

【在 f****g 的大作中提到】
: 第一个人:
: 1 写一个返回所有n比特格雷码的函数
: 函数形式 vector getGrayCode(n)
: 比如 getGrayCode(2), 应该返回{0,1,3,2}
: 2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
: 这个
: lookup table整个放到内存里?而是只把一部分放进去
: 说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
: 多的cache
: miss。。。

x******3
发帖数: 245
10
count = 1;
major = nil;
for a in A[1:n]
if (a != majorl)
count--;
if (count == 0)
major = a;
count++;

return major

【在 m****u 的大作中提到】
: 第一个人第二题你有什么想法?
相关主题
问一道题问一道Google的题
An immediate intern position in central new jersey问一个CareerCup上的Google题
问一道题facebook programming challenge难度如何?
进入JobHunting版参与讨论
m****u
发帖数: 3915
11
我说的selection sort不是O(n)...
这个算法当然是O(n)

【在 x******3 的大作中提到】
: count = 1;
: major = nil;
: for a in A[1:n]
: if (a != majorl)
: count--;
: if (count == 0)
: major = a;
: count++;
:
: return major

l*******y
发帖数: 1498
12
第一个人第二题目,我觉得主要不是cache miss吧,整个放进内存和部分放进内存的
cache miss是一样的吧? 都是访问的entry在cache里没有就会产生miss。
我觉得是把整个table放进内存,会影响别的程序,产生更多的page fault,page swap
in/out 的 overhead更大。

【在 m****u 的大作中提到】
: 两个phone interview, 各45分钟
: 第一个人:
: 1 写一个返回所有n比特格雷码的函数
: 函数形式 vector getGrayCode(n)
: 比如 getGrayCode(2), 应该返回{0,1,3,2}
: 2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
: 这个
: lookup table整个放到内存里?而是只把一部分放进去
: 说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
: 多的cache

m****u
发帖数: 3915
13
我提了这个问题
他说你可以假设内存是无限大的,也就是不会影响其他程序。。。
所以他给的答案让我非常confused

swap

【在 l*******y 的大作中提到】
: 第一个人第二题目,我觉得主要不是cache miss吧,整个放进内存和部分放进内存的
: cache miss是一样的吧? 都是访问的entry在cache里没有就会产生miss。
: 我觉得是把整个table放进内存,会影响别的程序,产生更多的page fault,page swap
: in/out 的 overhead更大。

p********7
发帖数: 549
14
我觉得题目难度和fulltime没什么区别啊
l*******y
发帖数: 1498
15
内存无限大的话应该是全放内存比较好吧?

【在 m****u 的大作中提到】
: 我提了这个问题
: 他说你可以假设内存是无限大的,也就是不会影响其他程序。。。
: 所以他给的答案让我非常confused
:
: swap

s***n
发帖数: 373
16

第一个人:
1 写一个返回所有n比特格雷码的函数
函数形式 vector getGrayCode(n)
比如 getGrayCode(2), 应该返回{0,1,3,2}
2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
这个
lookup table整个放到内存里?而是只把一部分放进去
说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
多的cache
miss。。。
请达人解释一下这道题
3 平面上有n个点,找一条直线,使它穿过最多的点
O(n^2logn)
第二个人:

【在 f****g 的大作中提到】
: 第一个人:
: 1 写一个返回所有n比特格雷码的函数
: 函数形式 vector getGrayCode(n)
: 比如 getGrayCode(2), 应该返回{0,1,3,2}
: 2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
: 这个
: lookup table整个放到内存里?而是只把一部分放进去
: 说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
: 多的cache
: miss。。。

p********7
发帖数: 549
17
这个算法确实是对的。证明应该和young table查找一个数的证明类似,没看过怎么证
明的。

【在 s***n 的大作中提到】
:
: 第一个人:
: 1 写一个返回所有n比特格雷码的函数
: 函数形式 vector getGrayCode(n)
: 比如 getGrayCode(2), 应该返回{0,1,3,2}
: 2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
: 这个
: lookup table整个放到内存里?而是只把一部分放进去
: 说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
: 多的cache

p********7
发帖数: 549
18
第三个题,考官要求的复杂度是多少?想了半天觉得还是N^3

【在 m****u 的大作中提到】
: 两个phone interview, 各45分钟
: 第一个人:
: 1 写一个返回所有n比特格雷码的函数
: 函数形式 vector getGrayCode(n)
: 比如 getGrayCode(2), 应该返回{0,1,3,2}
: 2 如果一个lookup table很大,并且你有足够的内存装入这个table,但是为什么不把
: 这个
: lookup table整个放到内存里?而是只把一部分放进去
: 说实话不是很明白,他的意思是cache的问题,如果把整个table放进去,可能产生更
: 多的cache

m****u
发帖数: 3915
19
是啊,NND 一个intern考这么难得题

【在 p********7 的大作中提到】
: 我觉得题目难度和fulltime没什么区别啊
m****u
发帖数: 3915
20
有N^2的解法,用hashtable

【在 p********7 的大作中提到】
: 第三个题,考官要求的复杂度是多少?想了半天觉得还是N^3
相关主题
前段时间的面试F/L/A/G/T/Groupon/Box 贴面经 报offer 回报本版
G家最新电面啥叫encode/decode binary tree啊?
请教一道G家面试题说说自己最近的Microsoft的面试经历+面经
进入JobHunting版参与讨论
f****g
发帖数: 313
21
我觉得这题可能是那种完全开放的题目。
比如我面试的他们问我:
什么时候有O(nlogn)的算法不用,反而用n^2的呢?
给出越多的答案越好

【在 m****u 的大作中提到】
: 我提了这个问题
: 他说你可以假设内存是无限大的,也就是不会影响其他程序。。。
: 所以他给的答案让我非常confused
:
: swap

s***n
发帖数: 373
22
什么叫young table? 搜了一下搜不出来,给个提示?

【在 p********7 的大作中提到】
: 这个算法确实是对的。证明应该和young table查找一个数的证明类似,没看过怎么证
: 明的。

f****g
发帖数: 313
23
My algorithm for this question is:
Assume there is a set of points on the plane S = {P0, P1,..., Pn-1}
maxNumOfPoint = 0
for(i = 0; i < n; i ++)
{
for( j = 0; j < n; j ++)
{
if(i == j)
{
slope Ki = 0;
}
else
{
Calculate the slope between Pi and Pj: Kj = (Yj-Yi)/Xj-Xi;
}
}

qSort(K0,...,Kn-1);

Find all the points with the same slope M;
if( M > maxNumOfPoint)
{
maxNumOfPoint = M;


【在 m****u 的大作中提到】
: 有N^2的解法,用hashtable
f****g
发帖数: 313
24
What's the point for this question?
2 有list of strings, 要求首先encode到一个string,然后再decode,恢复这些
strings,如何encode和decode
f****g
发帖数: 313
25
I understand how to compute the Graycode, but don;t quite understand the
getGrayCode means? Could you show more examples, thanks!
1 写一个返回所有n比特格雷码的函数
函数形式 vector getGrayCode(n)
比如 getGrayCode(2), 应该返回{0,1,3,2}
p********7
发帖数: 549
26
我知道算法了,用斜率以及与x轴的交点位置为关键词,代表了不同的直线
struct line
{
float slope;
float length;
};
用一个
map mp;
map::iterator it;
for(i=0;i for(j=0;j {
line thisline;
calculate the slope and the x pos of the cross point;
if(it=mp.find(thisline))
{
int pointnum = it->second+1;
mp.erase(it)
mp.insert(pair(thisline,pointnum));
}
else
mp.insert(pair(thisline,2));
}
}

【在 m****u 的大作中提到】
: 有N^2的解法,用hashtable
h**k
发帖数: 3368
27
用hash table只记录斜率不行,在worst case下,可能有O(n)的直线斜率是一样的,你
需要至少O(n)来判断这些直线是不是一条之间。
直接用hash table记录直线方程的两个参数。

【在 f****g 的大作中提到】
: My algorithm for this question is:
: Assume there is a set of points on the plane S = {P0, P1,..., Pn-1}
: maxNumOfPoint = 0
: for(i = 0; i < n; i ++)
: {
: for( j = 0; j < n; j ++)
: {
: if(i == j)
: {
: slope Ki = 0;

h**k
发帖数: 3368
28
C++中的map使用BST来实现的,所以查询、插入都是O(logn)。你需要使用hash_map。

【在 p********7 的大作中提到】
: 我知道算法了,用斜率以及与x轴的交点位置为关键词,代表了不同的直线
: struct line
: {
: float slope;
: float length;
: };
: 用一个
: map mp;
: map::iterator it;
: for(i=0;i
h**k
发帖数: 3368
29
证明的简单思路是:Because a and b are sorted,
if a[lo] + b[hi] > SUM
then a[i] + b[hi] > SUM for all i > lo, i.e., there is no pair including b[
hi] with sum of SUM. So we can discard b[hi].
Similarly,
if a[lo] + b[hi] < SUM
then a[lo] + b[i] < SUM for all i < hi.

【在 s***n 的大作中提到】
: 什么叫young table? 搜了一下搜不出来,给个提示?
f****g
发帖数: 313
30
Hey hock,
Assume we represent a line as y = ax + b; I compute the slope between one
point pi, and all other points in the rest. Since slope and a point Pi(xi,
yi)
can determine a line, only recording the slope should work.
I might miss something? Can I give me a more specific example?
Thanks!

【在 h**k 的大作中提到】
: 用hash table只记录斜率不行,在worst case下,可能有O(n)的直线斜率是一样的,你
: 需要至少O(n)来判断这些直线是不是一条之间。
: 直接用hash table记录直线方程的两个参数。

相关主题
g电面G的一道Onesite题
狗狗家fail的面经SnapChat 面經 + 彙總
这题咋做, 有点像Run Length encoding, 但又不全是?请教一道google的面试题
进入JobHunting版参与讨论
p********7
发帖数: 549
31
young tableau

【在 s***n 的大作中提到】
: 什么叫young table? 搜了一下搜不出来,给个提示?
p********7
发帖数: 549
32
MAP 是nLogN,但是hash_map需要你提供hash function,很难提供一个没有collision的
这个题应该有个地方需要注意到是,我觉得应该使用分数去算slope,以及于x轴相交的点横坐标。
因为用float很难保证2个float是相同的,他们永远只是近似相同。
需要写个函数去判断2个分数是否相同。

【在 h**k 的大作中提到】
: C++中的map使用BST来实现的,所以查询、插入都是O(logn)。你需要使用hash_map。
A*H
发帖数: 127
33
two problems:
major should be initialized to a[0]
also count++ should not be applied to the first if
my code
int findMajority(int a[], int n) {
int m=a[0];
int count=1;
for (int i=1; i if (a[i] == m)
count++;
else if (count == 0) {
m = a[i];
count = 1;
}
else
count--;
}
return m;
}

【在 x******3 的大作中提到】
: count = 1;
: major = nil;
: for a in A[1:n]
: if (a != majorl)
: count--;
: if (count == 0)
: major = a;
: count++;
:
: return major

m****u
发帖数: 3915
34
不考虑float精度问题

collision的
的点横坐标。

【在 p********7 的大作中提到】
: MAP 是nLogN,但是hash_map需要你提供hash function,很难提供一个没有collision的
: 这个题应该有个地方需要注意到是,我觉得应该使用分数去算slope,以及于x轴相交的点横坐标。
: 因为用float很难保证2个float是相同的,他们永远只是近似相同。
: 需要写个函数去判断2个分数是否相同。

k*******n
发帖数: 8891
35
re
m****u
发帖数: 3915
36
getGrayCode(2)就是返回2bit的格雷码
也就是:{00, 01, 11, 10}
getGrayCode(3)就是
{000, 001, 011, 010, 110, 111, 101, 100}

【在 f****g 的大作中提到】
: I understand how to compute the Graycode, but don;t quite understand the
: getGrayCode means? Could you show more examples, thanks!
: 1 写一个返回所有n比特格雷码的函数
: 函数形式 vector getGrayCode(n)
: 比如 getGrayCode(2), 应该返回{0,1,3,2}

f****g
发帖数: 313
37
谢谢! 我能想到的办法就是直接一个一个的算,想知道的思路阿。

【在 m****u 的大作中提到】
: getGrayCode(2)就是返回2bit的格雷码
: 也就是:{00, 01, 11, 10}
: getGrayCode(3)就是
: {000, 001, 011, 010, 110, 111, 101, 100}

p********7
发帖数: 549
38
这道题根本就是在考grey码,和stl的用法。不懂grey怎么办?

【在 m****u 的大作中提到】
: getGrayCode(2)就是返回2bit的格雷码
: 也就是:{00, 01, 11, 10}
: getGrayCode(3)就是
: {000, 001, 011, 010, 110, 111, 101, 100}

p********7
发帖数: 549
39
000
001
011
010
110
111
101
100
其实就是找变化规律,用2进制列出来就看出来规律了吧。
bit[0] 除了开头是1个数就变,其他都是2个数变化1次
bit[1] 除了开头是2个数变,其他都是4个数变化1次
bit[i] 除了开头是2^i 个数变,其他都是2^(i+1)个数变一次
开头都是0

【在 f****g 的大作中提到】
: 谢谢! 我能想到的办法就是直接一个一个的算,想知道的思路阿。
h**6
发帖数: 4160
40
很多年前,我大一学格雷码的时候,就发现这个规律了。
相关主题
请教一道google的面试题An immediate intern position in central new jersey
如何判断一个数是不是回文?问一道题
问一道题问一道Google的题
进入JobHunting版参与讨论
b*****n
发帖数: 221
41
这题听起来不难.string之间加个dummy seperator就行了.

【在 f****g 的大作中提到】
: What's the point for this question?
: 2 有list of strings, 要求首先encode到一个string,然后再decode,恢复这些
: strings,如何encode和decode

b*****n
发帖数: 221
42
能给个很简洁的代码吗?

【在 p********7 的大作中提到】
: 000
: 001
: 011
: 010
: 110
: 111
: 101
: 100
: 其实就是找变化规律,用2进制列出来就看出来规律了吧。
: bit[0] 除了开头是1个数就变,其他都是2个数变化1次

g*****7
发帖数: 111
43
1 写一个返回所有n比特格雷码的函数
函数形式 vector getGrayCode(n)
比如 getGrayCode(2), 应该返回{0,1,3,2}
这题用recursive不就好了吗?
vector getGrayCode(int n)
{
if (n <= 0) return vector();
if (n == 1)
{
vector ret(2, 0);
ret[1] = 1;
return ret;
}

vector subcodes = getGrayCode(n-1);
size_t subsize = subcodes.size();
subcodes.resize(2*subsize);
for (size_t i = 0; i < subsize; ++i)
subcodes[i+subsize] = subcodes[subsize-1-i] | (1 << (n-1));
return subcodes;
}
h**k
发帖数: 3368
44
嗯,你这么做可以。

【在 f****g 的大作中提到】
: Hey hock,
: Assume we represent a line as y = ax + b; I compute the slope between one
: point pi, and all other points in the rest. Since slope and a point Pi(xi,
: yi)
: can determine a line, only recording the slope should work.
: I might miss something? Can I give me a more specific example?
: Thanks!

y*********e
发帖数: 518
45
第一个人:
1 写一个返回所有n比特格雷码的函数
函数形式 vector getGrayCode(n)
比如 getGrayCode(2), 应该返回{0,1,3,2}
===============================================
n bit 格雷码和 n bit 的 2 进制的整数是一样的,只是排列顺序不一样。所以,会有
2^n个格雷码。
格雷码同2进制数的转换关系是这样的:
二进制数 B = { b3 b2 b1 b0 }
格雷码数 G = { g3 g2 g1 g0 }
g3 = 0 XOR b3
g2 = b3 XOR b2
g1 = b2 XOR b1
g0 = b1 XOR b0
在2进制数前面补0,然后XOR每两个相邻的bit。举个例子,对于2进制数 11,前面补0
就成了011,然后 0 ^ 1 = 1, 1 ^ 1 = 0,转换成格雷码就是 10。
知道了这些,就可以开始写代码了。2进制转格雷码,C代码:
int binToGrayCode(int num, int n) {
int bitL = 0;
in
1 (共1页)
进入JobHunting版参与讨论
相关主题
啥叫encode/decode binary tree啊?如何判断一个数是不是回文?
说说自己最近的Microsoft的面试经历+面经问一道题
g电面An immediate intern position in central new jersey
狗狗家fail的面经问一道题
这题咋做, 有点像Run Length encoding, 但又不全是?问一道Google的题
G的一道Onesite题问一个CareerCup上的Google题
SnapChat 面經 + 彙總facebook programming challenge难度如何?
请教一道google的面试题前段时间的面试
相关话题的讨论汇总
话题: int话题: count话题: slope话题: 格雷