w*****k 发帖数: 20 | 1 本来以为要废掉的电面,居然接到电话,让去onsite。惊喜之余,上来发帖,回报社会。
本人背景:烂校 CS PhD,国内有一点点工作经验。年底毕业。方向很偏僻。
经验教训:
(1)Google看重的就是解决问题的能力和思考过程。结果不是最重要的,最重要的让
面试官知道你的思考过程。并不是一开始给一个最快的算法是最好,详见我的电面第一
题。这一点版上有点误导。
(2)位操作是必考的,一定要准备
(3)常用算法,如merge sort, quick sort, binary search一定要熟悉。
(4)犯一点错误不要紧,如果只是面试官说“还有bug”,自己发现所有问题,应该是
可以的。如果面试官直接指出问题所在,就不好了。
(5)讲话小心不要被抓住辫子。Google的人都很聪明。
(6)电面时有一个好的麦克风很重要,因为要在键盘上写程序。我用的手机自带的麦
克风,有时候听不太清楚。
电面经过:
一开始面试官就没有废话,上来就写程序,用GoogleDoc,一共两题
第一题: Reverse一个字节的所有二进制位,例如01110001->10001110
这是一个经典题目。之前准备过,直接 |
l****u 发帖数: 2778 | |
h**k 发帖数: 3368 | 3 void reverse_fast(….){
x = (((x & f0f0) >> 4) | ((x & 0f0f) << 4));
这段代码能实现 10001101 -〉10110001?
会。
【在 w*****k 的大作中提到】 : 本来以为要废掉的电面,居然接到电话,让去onsite。惊喜之余,上来发帖,回报社会。 : 本人背景:烂校 CS PhD,国内有一点点工作经验。年底毕业。方向很偏僻。 : 经验教训: : (1)Google看重的就是解决问题的能力和思考过程。结果不是最重要的,最重要的让 : 面试官知道你的思考过程。并不是一开始给一个最快的算法是最好,详见我的电面第一 : 题。这一点版上有点误导。 : (2)位操作是必考的,一定要准备 : (3)常用算法,如merge sort, quick sort, binary search一定要熟悉。 : (4)犯一点错误不要紧,如果只是面试官说“还有bug”,自己发现所有问题,应该是 : 可以的。如果面试官直接指出问题所在,就不好了。
|
b*******y 发帖数: 32 | 4 看lz的意思好像是要reverse高低字节。
【在 h**k 的大作中提到】 : void reverse_fast(….){ : x = (((x & f0f0) >> 4) | ((x & 0f0f) << 4)); : 这段代码能实现 10001101 -〉10110001? : : 会。
|
w*****o 发帖数: 166 | 5 你只有一轮电面啊?
会。
【在 w*****k 的大作中提到】 : 本来以为要废掉的电面,居然接到电话,让去onsite。惊喜之余,上来发帖,回报社会。 : 本人背景:烂校 CS PhD,国内有一点点工作经验。年底毕业。方向很偏僻。 : 经验教训: : (1)Google看重的就是解决问题的能力和思考过程。结果不是最重要的,最重要的让 : 面试官知道你的思考过程。并不是一开始给一个最快的算法是最好,详见我的电面第一 : 题。这一点版上有点误导。 : (2)位操作是必考的,一定要准备 : (3)常用算法,如merge sort, quick sort, binary search一定要熟悉。 : (4)犯一点错误不要紧,如果只是面试官说“还有bug”,自己发现所有问题,应该是 : 可以的。如果面试官直接指出问题所在,就不好了。
|
P*******b 发帖数: 1001 | 6 给的例子和写的代码不太match
【在 b*******y 的大作中提到】 : 看lz的意思好像是要reverse高低字节。
|
h**k 发帖数: 3368 | 7 我想明白了,这是第一步,后面还有两步。但是他那一行代码至少有三个错误。
【在 b*******y 的大作中提到】 : 看lz的意思好像是要reverse高低字节。
|
w*****k 发帖数: 20 | 8 原文已修改!谢谢指正
【在 h**k 的大作中提到】 : 我想明白了,这是第一步,后面还有两步。但是他那一行代码至少有三个错误。
|
|
z****n 发帖数: 1379 | 9 恩,跟二分似的,先4位交换,再2位交换,再1位交换
【在 h**k 的大作中提到】 : 我想明白了,这是第一步,后面还有两步。但是他那一行代码至少有三个错误。
|
b*****n 发帖数: 221 | 10 为什么不用reverse words in a string的方法?
先01, 23, 45, 67 reverse,再01<=>23, 45<=>67 reverse,最后前四后四reverse. |
|
|
h**k 发帖数: 3368 | 11 你需要把x转为unsigned char,否则在c/c++里,>>是算术右移,不是逻辑右移。
在Java里,到是可以直接使用 >>> 来表示逻辑右移。
另外,10101010b这种常数表示什么语言支持啊?C/C++是不支持的。
【在 w*****k 的大作中提到】 : 原文已修改!谢谢指正
|
A*********r 发帖数: 564 | 12 恭喜恭喜。。
googleDoc还可以拷贝粘贴啊,我还以为别人可以实时看见你的typing呢。。
看来要练习一下啊。。
会。
【在 w*****k 的大作中提到】 : 本来以为要废掉的电面,居然接到电话,让去onsite。惊喜之余,上来发帖,回报社会。 : 本人背景:烂校 CS PhD,国内有一点点工作经验。年底毕业。方向很偏僻。 : 经验教训: : (1)Google看重的就是解决问题的能力和思考过程。结果不是最重要的,最重要的让 : 面试官知道你的思考过程。并不是一开始给一个最快的算法是最好,详见我的电面第一 : 题。这一点版上有点误导。 : (2)位操作是必考的,一定要准备 : (3)常用算法,如merge sort, quick sort, binary search一定要熟悉。 : (4)犯一点错误不要紧,如果只是面试官说“还有bug”,自己发现所有问题,应该是 : 可以的。如果面试官直接指出问题所在,就不好了。
|
w*****k 发帖数: 20 | 13 这样当然也可以,把我的代码倒过来就可以了。
不过面试官对这个最优解显然不感冒,因为如果只写这个,只能说明我背答案的功力不
错。
【在 b*****n 的大作中提到】 : 为什么不用reverse words in a string的方法? : 先01, 23, 45, 67 reverse,再01<=>23, 45<=>67 reverse,最后前四后四reverse.
|
w******9 发帖数: 7 | |
w*****k 发帖数: 20 | 15 面试官没有关心这些语法细节,他们只关心思路。这个bloomberg恰好相反。
我写10101010b是为了方便大家理解代码。实际面试中最好写成0xAA
【在 h**k 的大作中提到】 : 你需要把x转为unsigned char,否则在c/c++里,>>是算术右移,不是逻辑右移。 : 在Java里,到是可以直接使用 >>> 来表示逻辑右移。 : 另外,10101010b这种常数表示什么语言支持啊?C/C++是不支持的。
|
w*****k 发帖数: 20 | 16 你理解歪了!!!!!
当然不可以从网上搜一段代码粘贴过去,别人确实可以实时看见你的typing。
我的意思是把写好的一个for循环复制一份,再改几个变量。你看一下merge sort 的源
代码就明白了。
【在 A*********r 的大作中提到】 : 恭喜恭喜。。 : googleDoc还可以拷贝粘贴啊,我还以为别人可以实时看见你的typing呢。。 : 看来要练习一下啊。。 : : 会。
|
A*********r 发帖数: 564 | 17 谢谢你的clarify.
我看见你说默写过一遍,然后拷贝啥的,我以为你说你事先在计算机上默写了,然后再
写GoogleDoc的时候,就把写好的放上去。。(主要是我没用过GoogleDoc, 所以误解了)
另外,我第一个想到的merge sort是用recursive的,没有什么for循环,你指的是用
iterative的吧, 所以才说在写GoogleDoc的时候,可以复制merge sort的for loop,
对吧?
我也觉得你的面试回答反应很快,祝你onsite的时候好运了。。
【在 w*****k 的大作中提到】 : 你理解歪了!!!!! : 当然不可以从网上搜一段代码粘贴过去,别人确实可以实时看见你的typing。 : 我的意思是把写好的一个for循环复制一份,再改几个变量。你看一下merge sort 的源 : 代码就明白了。
|
K**********n 发帖数: 265 | |
x******h 发帖数: 13678 | |
G****o 发帖数: 155 | |
|
|
i*******t 发帖数: 79 | 21 原来reverse是这个意思啊。。。
那请问取反用英语怎么说?给的例子还刚好不能区分两者
lz代码弄的确实熟练的
会。
【在 w*****k 的大作中提到】 : 本来以为要废掉的电面,居然接到电话,让去onsite。惊喜之余,上来发帖,回报社会。 : 本人背景:烂校 CS PhD,国内有一点点工作经验。年底毕业。方向很偏僻。 : 经验教训: : (1)Google看重的就是解决问题的能力和思考过程。结果不是最重要的,最重要的让 : 面试官知道你的思考过程。并不是一开始给一个最快的算法是最好,详见我的电面第一 : 题。这一点版上有点误导。 : (2)位操作是必考的,一定要准备 : (3)常用算法,如merge sort, quick sort, binary search一定要熟悉。 : (4)犯一点错误不要紧,如果只是面试官说“还有bug”,自己发现所有问题,应该是 : 可以的。如果面试官直接指出问题所在,就不好了。
|
h******3 发帖数: 351 | 22 取反 - invert
【在 i*******t 的大作中提到】 : 原来reverse是这个意思啊。。。 : 那请问取反用英语怎么说?给的例子还刚好不能区分两者 : lz代码弄的确实熟练的 : : 会。
|
a****a 发帖数: 186 | 23 这里怎么会用到pow(2,i).如果函数的参数是一个unsigned char,具体是怎么操作两位
交换的呢(用到for-loop)?求答案。
我:(完蛋了,被看出来是背下来的答案,怎么办?)
于是我开始另一个函数reverse_slow.用for循环写,循环四次,每次用位操作交换两位
。中间犯了好几次错误,都是搞反了“与”和“或”,主要是因为紧张。面试官提醒了
好几次还有错误,幸好都是我自己挑出的错误。其中我用了一个函数pow(2, i).
官:pow函数返回的是 double
我:我可以自己定义这个函数,返回整数
官:请优化你的reverse_slow
【在 w*****k 的大作中提到】 : 你理解歪了!!!!! : 当然不可以从网上搜一段代码粘贴过去,别人确实可以实时看见你的typing。 : 我的意思是把写好的一个for循环复制一份,再改几个变量。你看一下merge sort 的源 : 代码就明白了。
|
l***i 发帖数: 1309 | 24 这个解法1要不是背书出来的solution, Ken Thompson都要过来跟你认识一下了
会。
【在 w*****k 的大作中提到】 : 本来以为要废掉的电面,居然接到电话,让去onsite。惊喜之余,上来发帖,回报社会。 : 本人背景:烂校 CS PhD,国内有一点点工作经验。年底毕业。方向很偏僻。 : 经验教训: : (1)Google看重的就是解决问题的能力和思考过程。结果不是最重要的,最重要的让 : 面试官知道你的思考过程。并不是一开始给一个最快的算法是最好,详见我的电面第一 : 题。这一点版上有点误导。 : (2)位操作是必考的,一定要准备 : (3)常用算法,如merge sort, quick sort, binary search一定要熟悉。 : (4)犯一点错误不要紧,如果只是面试官说“还有bug”,自己发现所有问题,应该是 : 可以的。如果面试官直接指出问题所在,就不好了。
|
y*******2 发帖数: 1582 | |
i**p 发帖数: 205 | |