※ 引述《Brussels (这东西也要写?)》之铭言:
: 小弟最近有幸通过北京某A外商公司的面试,现在进入要与HR谈package的阶段,想问一下不知有没有人知道当地薪资状况(职位是软件工程师)?好让我有个依据。
: 另外,不知有没有一起通过的同伴可寄站内信认识一下。
这事情总算是尘埃落定,所以,依照当初对板友的约定,需回心得(还愿一下,哈)。
这次与Amazon公司面试的过程有四道关卡。
第一关是 online programming test。
两个小时,不限程式语言解两个问题。
第一个问题是求“1 的补数”。
第二个问题是“给予若干数字,能否凑成要求数字,若可以,则回传如何达成。”举例,如给予2,3,5三个数字,能否凑成11这个数字?
当完成后,系统会给予若干 testing input, 然后跟你说 pass or fail。 第一题比较简单,第二题我有三个 testing case,是time exceed,但我已经山穷水尽,想不到怎样可以更快了,所以管他的,我就submit了。
约莫隔了一两周,对方才回复给我,说通过了,然后约 phone interview 时间。
第二关依旧是 programming test,只不过特别地是他要我在电话中叙述程式给他听,要把程式每个keyword唸给他听。所以,我就像白痴一样念了以下类似的句子...
for a in tmp_array:
if a < b:
....
念了一堆 for, in , if , < ... etc 我到现在还是觉得怪,哈。
另外,对方问的都是关于电子商务得问题。
第一题,给予订单 format, 如 UserA buy Item1, Item2, Item 54.... 你要怎样设计资料结构储存。
第二题,请利用你所设计的资料结构,找出当 User 买了 Item1, 你也可以推荐什么商品?
第三题,请找出有相同兴趣的User。
最后结束后,请你写下今天你所叙述得程式,并包含 testing case,于24 hrs寄回去。
又约莫一两周后,我才又收到第三关得面试通知。
接下来于某日炎热得午后,我到了某饭店参加面试。
到达当场时,发现有三个同道人,然后对方有四人,你需要单独与每人面谈一小时。(听完HR说明面试过成,我超想要转头就走,想说这面试从一开始到现在怎么都这么硬阿!)
面试我的第一个人是台湾人,但他已经在 China Amazon 工作约五年。
他问我说“你还记得 online programming test嘛?实际上,这系统我觉得有个缺陷,就是只能从这系统得到每个人是 pass or fail 对于这测试,他目前没有办法有推荐得功能,所以若你可以重新设计,你会怎样设计这系统?”
“靠!”我心里暗骂一声,这是什么鬼问题阿!于是,我回说:“让我想一下,等下回复你。”
几分钟后,我就开始乱掰,说:“我会怎样对‘code’做‘概念式’的分类,因为我想你们是要找想法或者逻辑有成长性的人,而不是全然要100分的人,因为,这样子你们大可去每间学校找最会念书与都有做功课得人就好。”
他就点点头。(其实,我也不知道他在点个什么屁,他应该知道我在唬烂才对。)但他接着说:“那你可以在那面透明玻璃写一下 prototype 是关于你刚刚所说的‘对code做概念式’的文件分类嘛?”
.....我无言了,但几分钟后,我依旧厚著脸皮就所学与这几年经验,写了一些。于是第一个人就在我写完后,与我讨论了一下,就换第二个人进来了。
(马的!真的有够累,也很恨自己是不是太会掰了!)
第二个人是大陆人,劈头就问。
我现在有个程式,他需要将资料写入DB,但在DB那台机器上,其 I/O值却一直都很高,只有偶尔有不定时的空档,那你要如何设计写入DB的机制?
这题幸好我在工作上有设计过类似的东西,所以回答比较没有问题,但这考官却看地很细,连 try except, thread 都会问为什么需要这样设计,然后可能会有什么问题?最后的时间,是问我在原公司感到最有成就的事情是什么?因为,我在原公司有两个专利,所以,问这可能对我来说是加分。
第三个人是大陆人。
他问我:“给予一个已经排序好的数列,若我要搜寻某个数,你会怎样搜寻?”
我当下楞了一下,现在是终于有简单的题目可以回答了嘛?我不假思索地回答:“Binary Search.”
他接着问:“那时间复杂度是?”
我也马上回:“Log(n)..”
那他又问:“若数列做一些变化,如 56, 78, 99, 100, 1, 8, 19, 11, 21, 42, 43,那你又会怎样搜寻?”
“果然!事情不是我想地那么简单,这人果然又藏了难题在后面!”我心里暗暗地这样想,但说道:“那让我思考地几分钟。”
他说:“请便!于是他在透明玻璃上,用白板笔自顾自个儿地解着莫名的问题。”
当几分钟后,我回答后,他擦掉白板,请我在透明玻璃上实现我的想法。
第四个人是香港人,他一进门就说:“May I speak in English?”
我当然不甘示弱地说:“Of course, you can.”
于是,他就还是问我几个程式问题,然后请我在他的 NB 上写 code 然后他特别说明要有 testing case inputs
问题有二,一是“.....我忘了。”二是“1, 7, 6, 7, 19, 21, 3, 5, 19, 12, 21, 45, 54, 66...”假设这是某家公司过去一年的股票价值,我该在哪天买哪天卖可以得到最大获益?
我想了一下子,回答说,可以这样找,他说还有更快的,我就再想了一下,那可以这样子找,他说接近了,但是需要点小修改...
呼~终于结束了,而这也是我唯一一个人可以闲话一下,我问他说:“请问这些面试问题,都是你们自己设计的嘛?”
那香港人回说:“不,我们公司有提供题库,也列出了几项重点...blabla”
我心理就想说:“对咩~这合理些!我还以为你们都这么厉害!不过,这确实是一个好方法,这跟我之前在台湾软件公司被面试的方法与概念都不一样,而且我觉得这些问题比较能反应一个人的思考逻辑,否则每次我都被问写这程式需要注意什么?写执行绪时又要注意什么?那干脆就找个最有经验地就好,不是嘛?”
约莫,两周后,对方人资才终于回电跟我说通过,然后接下来就是薪资问题。(靠..从结果来看,我觉得第一次我就答应的话,我跟个白痴没两样。)
他第一通电话问我期望薪资,我回答:“两百以上。”对方直劈:“不可能!”然后他开始解释你不能只用薪资来衡量这份工作...etc
然后几天后,他寄了一份 offer proposal...果然是“不可能!”
我隔天想了一下,回说“我不能接受!”(当然不是这么短,但也是言简意赅。)然后我就不理他了。
....(一个星期过了)
....(又过了三天)
都没有回信,我想说那就没了,算了!反正,我也不是想换工作,只是有这机会试试看。没想到,某天,那HR又打电话给我,说:“虽然,我们怎样怎样...但还是决定提高对你的待遇,希望你能考虑!”
最后我接受了,已经跟预期差不了多少了。
于是,小弟我这月底就要往北京报到,期望若干年后,这份履历在我人生中是有帮助的。