9/27号在西雅图亚马逊总部面试SDE,简单记录一下。
提前一天到西雅图,第二天中午11点45之前到,12点开始跟面试者们和面试官们一起吃披萨(不是面试,就是聊聊),吃完后各自跟各自的面试官走。面试一共四轮各45分钟,都是一对一(可能会有两个面试官,一个年纪大的问问题,另一个年轻的只是在旁边听着)。面试官都比较好说话,不会不尊重人,每个人开始都会介绍自己做的工作,结束前都回让你问他问题。代码都是写在白板上,而且要尽可能不出错。
第一个老白问的一下数组和链表的区别。然后数组找最大,然后找第二大,然后找第K个大。各自问时间复杂度和空间复杂度。
- 我说了quicksort的方法,他似乎没听懂,说用heap,我说我不会,然后就实现了一个维护K长的数组的方法。
第二个老印先问碰到的问题以及收获,编程题是压缩字符串,zzzffeee变成z3f2e3,然后把出现次数相同的字符去掉,z3f2e3变成f2。
- 第一反应hashmap,写了一下感觉不对(其实再想想就对的),然后就用排序的方法了。
第三个老白先问做过的项目,然后问知不知道设计模式,然后让我实现一个Singleton。
- 基本不知道怎么实现,只知道“只能返回一个实例”,在各种提示下算是写出来了。
第四个老白也是问的项目,然后问了熟悉的语言,然后说一下语言区别。算法题是,给一个链表和一个值,删掉链表里等于这个值的Node。然后问了一下怎么测试,然后让你测试一下。
- 特殊情况考虑了挺久,感觉脑子不转了。
总结,题目比我们平时做的简单多了,但还是做不好。原因在于,平时写程序过于依赖编译器,写完不管3721就运行了,报错了再改。但在白板上写,要用眼睛来debug,错了,用眼睛跑一遍,错了再跑一遍,几次之后逐渐感觉不知所措,写到后面感觉脑子越转越慢。其实也不是很紧张,跟小时候上黑板做题感觉差不多,容易卡住。
建议,平时多练用纸笔写完整正确的代码,写前多想想,特别是一些特殊情况的处理。多花时间在基础题上,基础不好就狂钻难题不一定是好的。对于周边问题如设计和测试,不要去做很多题,但是把基本概念都要搞清楚。
published from:https://github.com/etlds/PittCodingCracker/issues/33