t**********n 发帖数: 145 | 1 找工作这段时间以来常匿名浏览,在版上获益良多。不久前刚拿到A公司的Offer,特地
注册了账号,呈上面经,以感谢各位xdjm。
先说一下我的背景,国内CS硕士,毕业后在国内做了三年startup。去年10月搬家到西
雅图,11月初开始撒简历,没有什么reference,直接网投。就在投简历到A公司网站上
之后一个礼拜不到就有recruiter发来email说邀请电面。BTW,至今其他投递的简历没
有一个有音讯的,回想起来感觉很lucky,另外说明A公司直接网投是有用的。
因为自己的背景,所以apply主要是SDE/AJAX/front-end的position。其实这类
position的面经在上网还挺少的,所以希望我的面试经过可以给大家提供这方面的参考。
面的过程一共是3轮phone interview和2轮on-site,其中一次是8个session,另一次是
3个session,面的比较多,可能是因为有2个team都感兴趣的关系。
整理了一下印象比较深的问题有以下这些:
========比较Personal的一些问题========
1)简单介绍自己。每个interviewer必问的头一个问题。面试官基本都看过resume,所
以我选了其中一部分的概要说下。
2)谈谈自己做过项目中最challenging的部分。On-site时被问到了两次,临场想的,
说的一般,如果事先准备一下可以发挥好些。
3)分析讨论自己的研究生的主要工作。被On-site的一个architect问的,非常囧,因
为自己完全没有准备,毕业三年做得不太相关,一些本来熟悉的词汇都没法到嘴边。准
备不足呀。
4)谈谈之前的项目,在lunch的时候跟一个Hiring manager掰。
========算法和数据结构========
5)设计算法给一个integer数组找出目标sum的pair。Phone interview的问题。给出了
两种算法。
6)设计算法给一串integer其中有一个数字仅出现一次,其他出现两次。找出这个数字
。Phone interview的问题。用XOR是最佳的方法。
7)写一段代码用stack来实现queue,然后通过电话念给他听。
8)谈谈对于hash的理解和各种操作复杂度分析等等。Phone interview的问题。
9)谈谈BST各种操作的复杂度。Phone interview的问题。
10)比较经典排序算法和复杂度。Phone interview的问题。
11)代码实现:给一个单词和一个字典文件,实现anagram。Email作业题,1个半小时
内发回给他。我喜欢用C++ Template的,结果发给他之后,他email我说在他那儿的
linux上跑不了,想请我加上compatible的support。随后再修改了一下,再发给他的。
结合其他的情形来看,A公司是用Linux的,所以这个方面可以留心下。
12)On-site组合型的编程题,给出一个函数和对于这个函数的调用sequence,要求白
板coding,然后进行优化,然后进行OO的改写,然后加入multi-threading的保护。
13)白板coding:输入+-*整数运算式子,这种式子有一个term的,输出计算结果。我
做的不太好,有些思路但是没有写完代码。
14)白板coding:写一个二维数组的serialize函数。我也做的不太好,serialize和
unserialize的算法设计好了,interviewer说可以work,不过最后没有写完代码。
15)白板coding:只有整数加法和shift两种操作的CPU,写一个乘法的实现。啪啦啪啦
写完之后,interviewer说“嗯,完成了还是还有一个bug?”我一看果然有个bug,立
马改正。
16)算法设计,按照输入构建graph之类的。
========OOD和Architecture========
17)设计一个board game。
18)架构讨论:分析讨论Twitter的architecture
19)架构讨论:一个Mash-up的service,白板画deployment diagram,进行一些
measurement和address一些potential issue。
========HTML/JavaScript/AJAX/JSON========
20)谈谈Javascript Framework的好处。Phone interview的问题。
21)写一段javascript代码实现一个person类,包含一个private field、和两个
public function实现一些简单的操作,然后通过电话念给他听。
22)白板coding:不用任何framework做Ajax request和response的代码。我边写边讲
解为什么这里要这样写,那里可以做一些什么增进和cross-browser的考量,
interviewer点头如捣蒜,后来我还没有开始写connection open的部分,就说OK了。
23)白板coding:给定JSON输入,实现要求的页面输出,包括一些的动态的UI的功能。
内容涉及JSON和DOM的操作。
========General Problem Solving========
24)On-site:给出一个网站遇到的突发性能问题,和网络结构,要如何找到问题的症
结。根据网络结构中的组成部分,给出各个层面出现问题的可能。
25)On-site:“你如何确保所写的代码是正确的?”我觉得这个是很好的问题,我是从
review和test的两方面讲述的。题外话,顺便掰一下,据说中国卫星火箭的代码的QA是
通过无数人review来保证的。
其实还有一些interviewer带来了非常有趣的用graph来描述的问题,很难在这里用文字
写出来。难度不大,只要不慌,一般可以应付的了。
最后分享一下面试下来的几点心得:
1)将《Hacking a Google Interview》的handout烂熟于心。绝对是宝典!如果没有时
间读《编程之美》,甚至连读《编程珠玑》的时间也没有的话,这个handout是绝对绝
对要看的。不过大约大家都读过了吧。
2)白板coding的时候,并不需要一下子写出完美的代码,可以迅速给出straight
forward的完整的代码,写完之后,如果发现有纰漏,可以马上告诉interviewer,甚至
interviewer也会提示有bug,然后找一下修一下bug。
3)算法复杂度的基本要掌握好,尽管没有很刁钻的分析需要。
4)bitwise的arithmetic可以多看看,灵活应用,interviewer会很喜欢。
5)白板coding的时候,边写边说关于这些代码的想法。其中有一个interviewer告诉我
说,其实看interviewee写代码,很容看出是不是一个bad developer,我问他“怎么叫
bad呢?”他说,一下子给出正确解答就会是bad,因为没有呈现出思考的过程。虽然这
个说法并不是绝对,但是尽量呈现自己的思考过程是重要的。
6)A公司的interviewer挺喜欢hash。
7)A公司interviewer里面70%是caucasion,个别有英国口音,余下是印度gg,印度口
音没有很严重。都是些非常smart的人,但也很nice。聊下来,有个别的人甚至很geek
,另一些人却从来不打游戏。
其实这次是本人第一次找工作,国内的小硕,没有大公司的工作经验,来美国时间也很
短,比起大家的background来说应该是非常弱的了,能顺利得到A公司的offer,要非常
感谢我gg的鼓励,以及在“待字闺中”发帖分享经验的朋友们。希望我的面试经历可以
给大家带来好运和信心!
Keep faith and bless you all! |
p*****n 发帖数: 131 | 2 恭喜恭喜~
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 找工作这段时间以来常匿名浏览,在版上获益良多。不久前刚拿到A公司的Offer,特地 : 注册了账号,呈上面经,以感谢各位xdjm。 : 先说一下我的背景,国内CS硕士,毕业后在国内做了三年startup。去年10月搬家到西 : 雅图,11月初开始撒简历,没有什么reference,直接网投。就在投简历到A公司网站上 : 之后一个礼拜不到就有recruiter发来email说邀请电面。BTW,至今其他投递的简历没 : 有一个有音讯的,回想起来感觉很lucky,另外说明A公司直接网投是有用的。 : 因为自己的背景,所以apply主要是SDE/AJAX/front-end的position。其实这类 : position的面经在上网还挺少的,所以希望我的面试经过可以给大家提供这方面的参考。 : 面的过程一共是3轮phone interview和2轮on-site,其中一次是8个session,另一次是 : 3个session,面的比较多,可能是因为有2个team都感兴趣的关系。
|
j*****y 发帖数: 2042 | |
c******n 发帖数: 4965 | 4 ft amazon 太变了, front-end AJAX 还考这么多
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 找工作这段时间以来常匿名浏览,在版上获益良多。不久前刚拿到A公司的Offer,特地 : 注册了账号,呈上面经,以感谢各位xdjm。 : 先说一下我的背景,国内CS硕士,毕业后在国内做了三年startup。去年10月搬家到西 : 雅图,11月初开始撒简历,没有什么reference,直接网投。就在投简历到A公司网站上 : 之后一个礼拜不到就有recruiter发来email说邀请电面。BTW,至今其他投递的简历没 : 有一个有音讯的,回想起来感觉很lucky,另外说明A公司直接网投是有用的。 : 因为自己的背景,所以apply主要是SDE/AJAX/front-end的position。其实这类 : position的面经在上网还挺少的,所以希望我的面试经过可以给大家提供这方面的参考。 : 面的过程一共是3轮phone interview和2轮on-site,其中一次是8个session,另一次是 : 3个session,面的比较多,可能是因为有2个team都感兴趣的关系。
|
H**d 发帖数: 152 | 5 Thanks for sharing.Cong! |
P********l 发帖数: 452 | |
t**********n 发帖数: 145 | 7
================
是这样的,他们说按照SDE来招,外加需要你比较懂JavaScript。其中一个HM跟我很诚
恳地解释了为什么要面这么多的原因,在进入team之后,按照自己的喜好可以选择做
back-end。当然,他希望找到喜欢front-end的SDE。
【在 c******n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : ft amazon 太变了, front-end AJAX 还考这么多 : : 考。
|
j******8 发帖数: 191 | 8 congraduation!
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ================ : 是这样的,他们说按照SDE来招,外加需要你比较懂JavaScript。其中一个HM跟我很诚 : 恳地解释了为什么要面这么多的原因,在进入team之后,按照自己的喜好可以选择做 : back-end。当然,他希望找到喜欢front-end的SDE。
|
C*******n 发帖数: 56 | 9 这种序列化的题目好象经常出现阿。这种题目是否就是添加加一些分割符号和标识,然
后写到文件中去?比如序列化2维数组,每一行在文件输出一行,然后对每一列写入的
element用“,”分割开来,然后换行。比如:a[][]={1,1,1;2,2,2};
1,1,1
2,2,2
这样可以吗?如果这个数组本身就有",",那在从文件读出来的字符分割不就麻烦了?而
且怎么知道存入的数据是什么类型?在输出第一行标识一下,如写入int?用这种分割符
号怎么保证分割符号不会和数据混在一起?
比如,序列号string,如果用"\0"做分割,但字符有"\0",如果用“\\0”,字符万一也
有"\\0"? |
l*****a 发帖数: 559 | |
|
|
l****i 发帖数: 396 | |
s*******t 发帖数: 248 | 12
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ================ : 是这样的,他们说按照SDE来招,外加需要你比较懂JavaScript。其中一个HM跟我很诚 : 恳地解释了为什么要面这么多的原因,在进入team之后,按照自己的喜好可以选择做 : back-end。当然,他希望找到喜欢front-end的SDE。
|
s*******t 发帖数: 248 | 13 cong!
能详细说下13,14题的题意吗?没太明白,13是给一个算式来算结果? 14题序列化的
要求是什么?
关于24题,能否说说你的答案,对这类题最没有把握。
谢谢!
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ================ : 是这样的,他们说按照SDE来招,外加需要你比较懂JavaScript。其中一个HM跟我很诚 : 恳地解释了为什么要面这么多的原因,在进入team之后,按照自己的喜好可以选择做 : back-end。当然,他希望找到喜欢front-end的SDE。
|
z*s 发帖数: 209 | 14 恭喜!
同问二位数组serialize/unserialize的问题。多谢! |
j**l 发帖数: 2911 | 15 和这篇帖子不是巧合吧?
发信人: jewelry (珠宝狼), 信区: JobHunting
标 题: LD大人去Amazon面试onsite了两回
发信站: BBS 未名空间站 (Tue Jan 18 02:18:49 2011, 美东)
啥时候给offer啊?等了3个工作日了我也都等焦急了……
有Amazon的兄弟姐妹们出来给个说法不?
不过据说在amazon job网站上,她的online profile倒是更新了……最早申请4个组,
后来是2个组
有后文,现在变成3个组有后文,新加的应该是第二次去onsite的那个组吧…… |
j*****u 发帖数: 1133 | 16 这个挺简单的,不要想复杂了
写了个int[][]的,如果要求任意type T可以在Serialize和Deserialize传入Write(T)和
Read(T)的delegate或者interface,因为serializer不可能知道如何读写任意一个type
// Test code
static void Main(string[] args)
{
var array = new int[][] { new int[] { 2, 6, 35 }, new int[] { 0 }, new int[] { 3, 76 } };
string file = @"C:\data.bin";
using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write))
{
Serialize(array, fs);
}
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
{
var newArray = Deserialize(fs);
}
}
static void Serialize(int[][] array, Stream stream)
{
if (array == null || stream == null) throw new ArgumentNullException();
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(array.Length);
foreach (var subArray in array)
{
writer.Write(subArray.Length);
foreach (int n in subArray)
writer.Write(n);
}
}
}
static int[][] Deserialize(Stream stream)
{
if (stream == null) throw new ArgumentNullException("stream");
using (BinaryReader reader = new BinaryReader(stream))
{
int len = reader.ReadInt32();
int[][] array = new int[len][];
for (int i = 0; i < len; i++)
{
int subLen = reader.ReadInt32();
int[] subArray = new int[subLen];
for (int j = 0; j < subLen; j++)
{
subArray[j] = reader.ReadInt32();
}
array[i] = subArray;
}
return array;
}
} |
t**********n 发帖数: 145 | 17 Hi CindyChen, jerryju and zts,
二位数组的序列化的方法还是挺straight forward的啦。不过我傻掉了,
当时面试题目不是二维数组啦,是二叉树。。。
我给了两种算法,一种的主要思路是利用数组实现二叉树,然后将数组序列化。
另一种是将二叉树看成一个菱形然后mapping到数组然后进行序列化。
呵呵,无论是数组还是树,都是很好的练习序列化的对象啦。 |
t**********n 发帖数: 145 | 18 Hi,jiajia88,puppycn,Hond,lanmama & lucici,
多谢多谢!
希望能拿到好的package。明天就要具体谈啦。 |
t**********n 发帖数: 145 | 19
===========================================
^_^
【在 j**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 和这篇帖子不是巧合吧? : 发信人: jewelry (珠宝狼), 信区: JobHunting : 标 题: LD大人去Amazon面试onsite了两回 : 发信站: BBS 未名空间站 (Tue Jan 18 02:18:49 2011, 美东) : 啥时候给offer啊?等了3个工作日了我也都等焦急了…… : 有Amazon的兄弟姐妹们出来给个说法不? : 不过据说在amazon job网站上,她的online profile倒是更新了……最早申请4个组, : 后来是2个组 : 有后文,现在变成3个组有后文,新加的应该是第二次去onsite的那个组吧……
|
j*****y 发帖数: 2042 | 20 gxgx
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : =========================================== : ^_^
|
|
|
t**********n 发帖数: 145 | 21
=========================================
13)白板coding:输入+-*整数运算式子,这种式子有一个term的,输出计算结果。我
做的不太好,有些思路但是没有写完代码。
【在 s*******t 的大作中提到】![](/moin_static193/solenoid/img/up.png) : cong! : 能详细说下13,14题的题意吗?没太明白,13是给一个算式来算结果? 14题序列化的 : 要求是什么? : 关于24题,能否说说你的答案,对这类题最没有把握。 : 谢谢! : : 考。
|
w******o 发帖数: 119 | 22 赞楼主人品.
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ========================================= : 13)白板coding:输入+-*整数运算式子,这种式子有一个term的,输出计算结果。我 : 做的不太好,有些思路但是没有写完代码。
|
n********p 发帖数: 708 | 23 恭喜恭喜~~~~~~~~~进来沾粘喜气~~~~~~~赞!!!! |
v*****n 发帖数: 480 | 24 gxgx~~
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ========================================= : 13)白板coding:输入+-*整数运算式子,这种式子有一个term的,输出计算结果。我 : 做的不太好,有些思路但是没有写完代码。
|
a*****e 发帖数: 16445 | 25 gx
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ========================================= : 13)白板coding:输入+-*整数运算式子,这种式子有一个term的,输出计算结果。我 : 做的不太好,有些思路但是没有写完代码。
|
j*****u 发帖数: 1133 | 26 Tree的serialization也不难,binary tree稍微麻烦一点
我觉得可以这样,traversal(比如pre-order)的时候,用2个bit分别表示有没有左右子
树,deserialize的时候是相反过程。递归的应该不难写。
void Serialize(TreeNode node, BinaryWriter writer)
{
writer.Write(node.Data);
if (node.Left != null)
{
writer.Write(true); //this actually takes 1 byte but just to show
the idea
Serialize(node.Left, writer);
}
else
writer.Write(false);
if (node.Right != null)
{
writer.Write(true);
Serialize(node.Right, writer);
}
else
writer.Write(false);
}
TreeNode Deserialize(BinaryReader reader)
{
var node = new TreeNode();
node.Data = reader.ReadInt32();
if (reader.ReadBoolean())
node.Left = Deserialize(reader);
if (reader.ReadBoolean())
node.Right = Deserialize(reader);
return node;
}
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Hi CindyChen, jerryju and zts, : 二位数组的序列化的方法还是挺straight forward的啦。不过我傻掉了, : 当时面试题目不是二维数组啦,是二叉树。。。 : 我给了两种算法,一种的主要思路是利用数组实现二叉树,然后将数组序列化。 : 另一种是将二叉树看成一个菱形然后mapping到数组然后进行序列化。 : 呵呵,无论是数组还是树,都是很好的练习序列化的对象啦。
|
w********p 发帖数: 948 | 27 赞收藏。
11)代码实现:给一个单词和一个字典文件,实现anagram。Email作业题,
问问稍稍具体些的条件要求。可以说说你的算法和复杂度嘛?
还有你的字典文件是啥结构的。 hash 还是 Tries.
我找了下anagram的例子如下。是要实现这个嘛? 我一时好象没想到很好的算法。请
不吝赐教。
Roger Meddows-Taylor = Great words or melody.
Adultery = True Lady
A Saint = I, Satan
Santa = Satan
Forty five = Over Fifty
Funeral = Real Fun
Inferno = Non Fire
Restful = Fluster
Violence = Nice Love
Within earshot = I won't hear this
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ========================================= : 13)白板coding:输入+-*整数运算式子,这种式子有一个term的,输出计算结果。我 : 做的不太好,有些思路但是没有写完代码。
|
t**********n 发帖数: 145 | 28
==============================================================
这里的anagram不是基于语义的啦,只是基于字母组合,比如tan, nat是ant的
anagram。字典文件的每一行就是一个单词,没有其他的了。
通常的做法是,先load字典文件到一个hash,每读到一个word,按alphabeta
将letter、排序,作为hash-key,然后存进到hash里面,每个hash-key对应
一个list存有相同key的所有word。
需要求解某单词的anagram的时候,就只需要look up一下hash表就可以了。
这个方法的复杂度是O(1)。pre-computation的复杂度O(n),其中n是字典的
大小。
此题在《Hacking Google Interview》的handout中有。
【在 w********p 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 赞收藏。 : 11)代码实现:给一个单词和一个字典文件,实现anagram。Email作业题, : 问问稍稍具体些的条件要求。可以说说你的算法和复杂度嘛? : 还有你的字典文件是啥结构的。 hash 还是 Tries. : 我找了下anagram的例子如下。是要实现这个嘛? 我一时好象没想到很好的算法。请 : 不吝赐教。 : Roger Meddows-Taylor = Great words or melody. : Adultery = True Lady : A Saint = I, Satan : Santa = Satan
|
w********p 发帖数: 948 | 29 棒。
谢谢。 我刚刚当了《Hacking Google Interview》的handout
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ============================================================== : 这里的anagram不是基于语义的啦,只是基于字母组合,比如tan, nat是ant的 : anagram。字典文件的每一行就是一个单词,没有其他的了。 : 通常的做法是,先load字典文件到一个hash,每读到一个word,按alphabeta : 将letter、排序,作为hash-key,然后存进到hash里面,每个hash-key对应 : 一个list存有相同key的所有word。 : 需要求解某单词的anagram的时候,就只需要look up一下hash表就可以了。 : 这个方法的复杂度是O(1)。pre-computation的复杂度O(n),其中n是字典的 : 大小。
|
m****g 发帖数: 101 | |
|
|
r*******n 发帖数: 3020 | 31 niu! 没有语言问题啊
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ============================================================== : 这里的anagram不是基于语义的啦,只是基于字母组合,比如tan, nat是ant的 : anagram。字典文件的每一行就是一个单词,没有其他的了。 : 通常的做法是,先load字典文件到一个hash,每读到一个word,按alphabeta : 将letter、排序,作为hash-key,然后存进到hash里面,每个hash-key对应 : 一个list存有相同key的所有word。 : 需要求解某单词的anagram的时候,就只需要look up一下hash表就可以了。 : 这个方法的复杂度是O(1)。pre-computation的复杂度O(n),其中n是字典的 : 大小。
|
c**m 发帖数: 535 | |
m******s 发帖数: 1469 | 33 gxgx...
考。
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ============================================================== : 这里的anagram不是基于语义的啦,只是基于字母组合,比如tan, nat是ant的 : anagram。字典文件的每一行就是一个单词,没有其他的了。 : 通常的做法是,先load字典文件到一个hash,每读到一个word,按alphabeta : 将letter、排序,作为hash-key,然后存进到hash里面,每个hash-key对应 : 一个list存有相同key的所有word。 : 需要求解某单词的anagram的时候,就只需要look up一下hash表就可以了。 : 这个方法的复杂度是O(1)。pre-computation的复杂度O(n),其中n是字典的 : 大小。
|
R******k 发帖数: 3942 | |
t**********n 发帖数: 145 | 35
===================================
没有,现在是L2身份。
【在 R******k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你怎么过来的?有绿卡么?
|
j*****u 发帖数: 1133 | 36 微软LD?赞MM
之前光顾了RE忘了congratulations!!
【在 t**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : =================================== : 没有,现在是L2身份。
|
j*****g 发帖数: 223 | 37 LZ 讲讲这道题的心得?
18)架构讨论:分析讨论Twitter的architecture |
t**********n 发帖数: 145 | 38
==============================================
没啥心德,只有胸闷。
被Architect问得觉得自己很傻很天真。
【在 j*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : LZ 讲讲这道题的心得? : 18)架构讨论:分析讨论Twitter的architecture
|
t**********n 发帖数: 145 | |
i**9 发帖数: 351 | |
|
|
b****x 发帖数: 309 | |