玻璃心留学生也可以上岸|Amazon

发布于 2021-09-07 11:29 ,所属分类:2021面试经验技巧分享

大家好,我是山山
有一年的软件工程师经验
2021年——历时2个月
成功拿到亚马逊
Algorithm Engineer岗位offer。

我毕业于Rice University(莱斯大学)——computer science,本科4年,研究生2年一共在Rice度过了6年的时光,期间大四的暑假我在IBM参加了我第一正式工作的实习,岗位也是软件工程师,只是当时作为一个全新的没有任何经验的candidate,在应对面试时,都是依靠学校里优秀成绩的和部分项目的优秀学分才拿到实习的offer。



研究生即将毕业时,我又一次找到IBM的组长参加了内推(也算是秋招)的考试,最终拿到了offer,在IBM的一年中,我逐渐发现自己去的是一个边缘化部门儿,每天没什么事情(treatment一般),也学习不到什么,每天晚到早走的,逐渐把自己发展成躺平状态。这绝对不是我想要的哇,所以我果断放弃,直接裸辞。


面试前的准备

本想着,实习和正式工作加起来也有一年多的工作经验了,而且都是在外企的大厂,想平跳怕是不难。谁知我是对自己有太大的信心了,面试的各种受挫让我的这颗玻璃心碎了一地。我在各大平台搜索面试经验,然而只有不是特别详细的面试流程和一些并不对口。每天就焦虑的刷着题,但是也不见什么成效,有一次去巨硬面试,被面试官怼了以后(简直就是小学鸡更焦虑。。)直接放弃抵抗,每天都在想还不如放弃抵抗直接躺平。


玻璃心被修复

时间线

这是通过Colin老师的内推得到的面试机会(后面向大家介绍Colin老师是谁),投递了1周后,都没有动静,没有电话,没有邮件。

但是我觉得不至于简历的筛选都通过不了,所以主动找到Colin老师,请他帮忙查看下进度。

简历通过后,HR 联系安排面试时间。1 面是安排在 1周后。到 1面时间,已经是距投递简历过了半个月。


面试过程:
1 面时长 1 个小时:首先是英文自我介绍,以及之前的项目情况,个人在项目中负责的工作和成果。整个 1 面过程,可以感觉到「面试官很看重时间点」。比如问题问得差不多了,还差几分钟满1个小时,面试官会继续提问,或者介绍些岗位信息,正好在1个小时后结束。而且面试官很善于引导,全程的感觉是如沐春风,对于一些问题的回答,面试官会希望听听的想法,非常鼓励表达。面试官的语气和态度非常温和,特别喜欢这个面试官,而且,他还是雁卿以后的直属领导,很开心。


1面结束后:又是过了 1周,收到通知说 1面通过。HR又介绍了一下 2面的内容。2面是车轮面,全程 5轮,都在 1个下午完成。coding等环节以及和 HR面的环节。原本安排在 5月初,结果受疫情影响,2面的印度面试官时间不方便,所以推迟到了 5月中中旬,到了原定 2面的那天,公司安排的下午 1点到 6点面试。


第1轮是测试经理的技术面,1个小时
第2轮是测试用例设计,1个小时
第3轮是开发经理的技术面,1个小时
第4轮是HR面,30分钟。
第5轮是代码coding,1个小时。
第1轮和第3轮的面试,都是需要找出工作中的案例,需要展示自己在这个过程中的行动,以及拿到的成果。

1轮和第3轮的面试题参考:


项目中有哪些流程或者环节,你觉得可以优化的?
这个待优化的问题,你提出来了吗?是你提的还是其他人提的?
你是向谁提出的这个问题?对方的反应如何?
你是通过什么方式提出问题的,私下聊还是复盘会议上当着大家的面提出的?
这个问题是由谁去推动解决的呢?
推进问题处理的过程中,有碰到哪些难题吗?
碰到的难题是怎么处理的呢?
最后这个问题解决了吗?流程优化了吗?
应用到实际项目中了吗?

这里必须说下,印度面试官的口语,真的很难听懂,印度面试官重复2遍的题目,我都没有理解,这个时候觉得,得换个思路才行。所以,我是跟面试官说,能不能麻烦她把题目内容发在文本框里的,这样就把英语听力转成英语读写了嘛,我还是能搞定的。


第4轮是HR面试

主要是了解离职原因,求职意向。还有一些常规的HR会问的题目,也参考之前雁卿发过的HR面试篇吧。

第5轮是代码题

1个小时的coding有两道算法题,但是我直接过,因为都是被Colin老师直接压中的高频题(举例一道题):



时间:O(m+n)O(m+n),其中 m =m= command.size(),n =n= obstacles.size()
空间:O(m)O(m)

【解题思路】

机器人会无限循环地按照 command 中的指令进行移动,我们可以记录下机器人在一次循环中所经过的坐标,后续循环中到达的坐标都可以推测出来。
例如,command = 'RRU',则在一次循环中机器人会经过 (0,0),(1,0),(2,0),(2,1)(0,0),(1,0),(2,0),(2,1) 这四个点。
在第二次循环中它会经过 (3,1),(4,1),(4,2)(3,1),(4,1),(4,2) 这三个点。在第三次循环中他会经过 (5,2),(6,2),(6,3)(5,2),(6,2),(6,3) 这三个点……

已知机器人在第一次循环中走过的所有点,和向右移动的总距离 xxxx,和向上移动的总距离 yyyy。给出任意一个点 (m,n)(m,n),如何判断这个点是否在机器人的运动轨迹中?


我们可以计算出从原点到 (m,n)(m,n) 需要走多少个循环,也就是横坐标循环的次数与纵坐标循环的次数的较小值:circle = min(m/xx,n/yy)。然后我们就可以得到点 (m,n)(m,n) 相当于第一次循环中的哪个点。如果这个点在第一次循环的轨迹中,那么机器人一定可以到达这个点,反之则不能到达。

在本题中,机器人能够完好地到达终点需要满足两个条件:
终点一定在机器人运动的轨迹中(一定在第一次循环的轨迹中)
所有障碍物的坐标都不在机器人运动的轨迹中(一定不在第一次循环的轨迹中)
如何存储机器人的轨迹坐标?
考虑到 0 <= x <= 1e90<=x<=1e9,0 <= y <= 1e90<=y<=1e9,可以将所有点的横坐标左移 3030 位,和纵坐标做按位或运算,再存储到哈希集合中。接下来只需按照两个条件一一查找相应的坐标即可。


回首上岸—需要感谢明灯


篇头提到的是我敬爱的Colin老师(他是Google曾经的资深Algorithm Engineer),曾经的项目领头人以及面试官,有着丰富的项目经验以及成熟的技术,据听说他的题库更新到了3000+,不得不令人佩服。


我和老师的相识也是巧合,在我最低谷最想选择躺平的时候我遇见了Colin老师,他对我目标规划和管理以及我简历的问题技能的缺陷,都不充电额恰到好处!我决定跟着Colin老师学习不光是因为他技术强,主要还是因为专业!重要的是还有那么多的大佬一起陪同学习。

相关资源