http://www.mitbbs.com/article_t/JobHunting/33522355.html
发信人: boter (阿哈呦), 信区: JobHunting
标 题: 北美2020届应届生software developer上岸经验
发信站: BBS 未名空间站 (Fri Feb 26 01:07:26 2021, 美东)
毕业七个月后终于上岸了,楼主很幸运的第一个live interview就接到了一个应该算是
中厂的offer,想跟大家分享一下我的心路历程以及我是怎么准备面试的。希望对各位
还在找或者准备找工作/实习的朋友有帮助!
背景介绍―――――――――
加拿大某草原省大学2020届CS本科毕业。投的简历一般都是software developer/
engineer, Front-End Developer 这类。毕业之前有一份四个月的web developer的实
习经验加三到四份志愿的经验。
心态篇―――――――――
刚毕业的前四五个月心态特别崩,特别容易焦虑、睡不着。一个是在加拿大的工签需要
录指纹,但是指纹中心一直没开,不知道工签什么时候才能下来。还有就是受疫情影响
job market不太好,看似很多posting但大部分都不招应届生。但这时候我因为在等工
签所以并没有怎么投简历或者准备面试。我想着到时工签差不多下来了再准备也不迟(
太天真了)。但是后来我发现我其实只是用疫情和工签做借口,什么都不干,所以才会
焦虑。后来我开始基本每天都尽量刷题,学习。虽然这个时候我投的简历并不多,我知
道我自己在努力刷题,那这样等我有面试机会的时候,不至于什么都不知道。然后我焦
虑的情绪得到了大大的缓解,睡眠质量也提升不少。所以把自己每天过的充实一点,也
许会帮助缓解焦虑不安的情绪。当然像疫情这种东西没办法,但还是尽人事听天命吧。
这样至少等机会来到的时候,是已经有充分的准备的。
对于被拒,其实我心态不是崩,而是因为不够自信害怕面试时会丢脸导致每次投简历都
很害怕。我的解决方法就还是逼自己尽力多投。千万不要宁愿错过机会也不愿意走出自
己的舒适圈。我有的OA感觉做的不好,觉得丢人,但想想就算丢人又怎样,反正OA没过
也不用见面试官,过了就说明做的还不错。
简历篇―――――――――
对于简历我没有太多准备,基本就是写了一些自己做过的project是什么,我负责的部
分,用了什么technology之类的。然后志愿经历这也是大概是什么title,做什么,我
得到什么soft skills。我记得组里有朋友给的建议是比较全面的,各位有需要的可以
去找一找。我记得比较重要的一点就是根据JD(Job Description) 去改你的简历,尽量
match他们要求的skills。
题外话:如果有在校的朋友在看这篇帖子,觉得自己简历太空,我当时的解决方法就是
找了很多volunteer的机会。是不是真的加分我不太清楚,但是确确实实可以锻炼你的
soft skills,而且这样简历也不至于空得慌。
cover letter篇―――――――――
cover letter我基本就是写了一个模版,根据不同公司再带入不同的关键词。大致结构
就是首先简单介绍自己,然后后面就根据JD来写你自己的经验(比如JD要求会HTML,那
就写某个project,我用HTML做了什么,然后天花乱坠彩虹屁吹自己)。最后结尾就根
据上述,我认为我是一个great fit,也非常喜欢贵公司之类的话展开写一小段。然后
感谢hiring manager。如果大家还是不确定怎么写,可以上网找一找模版。
PS: 如果投简历是通过邮件,而且没有要求cover letter的话,那邮件的内容就是
cover letter。 不要错过每一个推销自己的机会啊。
刷题篇―――――――――
算法题
刷题刚开始的时候其实是非常劝退的,这也是我为什么没有早点开始刷题。感觉题目看
似简单但怎么都不过。我就总结一下我自己刷题的方法。
1. 按题型刷 - 这个大家应该都知道了也没什么需要解释的了。
2. 看答案 - 刷到新题的时候,如果实在没有头绪或者一直过不了,别纠结,直接看答
案找思路。但是不要背答案,我一般是大概知道了是个什么思路之后再试着不看答案做
一遍。
3. 理思路 - 如果你的思路很清晰的话,那proof of correctness跟time complexity
应该是信手拈来。但是如果不太清晰的话,我个人认为非常有必要理一理思路然后重做
。这样能够更加了解这个解法,也巩固记忆。
4. 找最优 - 一定要找最优解法,不要得过且过。还要多了解不同的解法以及他们的优
势劣势是什么。
5. 记笔记 - 记笔记的效果可能会因人而异,但对与我来说感觉帮助很大。我一般会记
下自己尝试的解法,思路跟time complexity,如果我写的答案有错,我会记下我犯的
什么错。然后看别的解法,写下思路和time complexity。在把答案代码转换为思路记
下来的时候,其实是在更好的理解跟消化这个解法。
我刷题基本就是这些步骤。虽然刷题真的很难,但一定要坚持。我刷了大概一个月之后
才慢慢开始觉得上手了,所以一定要坚持呀!
system design题
system design的话一定要把理论上的知识掌握好。比如像proxy、load balancer、不
同的data storage等等。拿到题目之后第一反应是问, 问面试官这个system 的
global scale还是local, 要求什么availability/latency, data storage的size是
什么,等等等等。 我看了很多别人是怎么做system design interview的视频,见得够
多之后其实题目都是大同小异。
github上的system-design-primer里面介绍的挺全面的也有例题,不知道从哪里开始的
朋友可以看看这个。
技术面试篇―――――――――
总结如下:
1. think aloud - 一定要把你的想法说出来,这样一是面试官可以更加了解你的
thought process,二是如果你方向不对,面试官也有机会纠正。
2. 审题 - 一定要认真审题。我就吃了没有认真审题的亏,面试的时候把题目理解错了
,虽然后面救回来了,但是感觉还是扣分项吧。很多题目其实是类似的,我当时就是看
到题目之后,就想"啊 这道题 我会", 然后急急忙忙就开始写代码了。写完之后面
试官来了一句 - "is that what we're asking for?" 当场社死,太尴尬了。
3. 跟面试官确认 - 确认input output, 确认edge cases, 确认range,等等。所有你
不确定的因素都跟面试官确认一遍。我面试的时候没有这一步,如果有这一步,也许就
不会把题目搞错。
4. 理思路 - 又是理思路哈哈哈。在开始写代码之前,可以把大概的思路先一边说一边
写出来。这个其实应该是think aloud的具体化例子。也是如果方向不对,面试官可以
把你救回来(但是要看面试官,我的面试官就没有)。还有就是后面写代码的时候如果
train of thought突然被打断,可以refer回这里。
5. 写代码 - 如果思路已经写过了,那么这一步会轻松很多。但是仍然要注意,不要缺
步骤。多写comments。然后虽然不知道会不会有影响,但我觉得还是要尽量注意typo跟
syntax,这种比较细节的错误也最好不要犯。
6. test cases - 最后写完代码之后,可以主动问能不能work through some test
cases。这个时候你就可以用到上面提到过的edge cases,input output example等。
这个也是在面试官还没有机会告诉你你有bug之前,先发制人,debug的好机会。然后在
work through的时候可以留下test history,这样如果搞错了,还可以追溯。
我在接到面试通知之后的几天重温了一遍以前刷过的比较重要的题,刷的过程中我就是
尽量按照上面的流程。主要还是练习think aloud,听起来简单但我觉得边打字边说话
挺难的。有条件的朋友们多找朋友mock interview。我当时虽然已经按上面的流程二刷
了一些题目,但是我真的跟朋友mock interview的时候还是非常紧张,一紧张就容易出
错,做了三四道题目才勉强合格。所以还是要多练。没有朋友可以mock的可以看看网上
的资源,有些网站会帮用户pair up,然后就可以mock interview了。
软面试篇―――――――――
指路:
当面试官让你做自我介绍时,ta到底在问什么...
(https://www.bilibili.com/video/av542870159/?dt_dapp=1)
我笔记上我感觉比较重要的两点:
1. the tell me about yourself question - 这一题呢,视频里的嘉宾小姐姐提到的
公式就是present + past + future,tailor your answer 以及 use supporting
example。 我面试的时候说的大概就是我是应届生,想找个什么样的工作,讲我以前的
project、经历是怎么提升了我hard skill,soft skill,最后找到这个公司在招聘这
个职位非常激动,又吹一波公司的彩虹屁,希望以后可以和公司共同成长。 时间控制
在2分钟左右。
2. behavioural questions & situational questions - 套万能公式STAR, Situation
Task Action Results。重点放在你的action有什么impact,是怎么produce positive
result的。 时间也是控制在两分钟左右。
面试之前可以先想一想自己的经验,有什么事件然后怎么套到不同的题目,跟考雅思口
语的时候有点像。有些公司可能会问一些比较技术的题,比如what do you know about
OOP 或者某个framework之类的,这种一定要做好功课。看看简历上写了什么东西,不
太记得的东西一定要再research一下。我还搜了热门面试题目,大概心里过了一遍自己
会怎么答。
最后再次墙裂安利这个视频,还有很多东西我没有提到的,大家有时间的话一定要看!
邮件篇―――――――――
在email里面重复的最多的两件事。一个感谢面试官或者hr,另外就是表达你对这个行
业,公司,职位的热情。投简历的时候可以说,交OA的时候可以说,schedule 面试的
时候可以说,面试完了follow up可以说,总之就是见缝插针。然后对自己英文不太自
信的小伙伴(比如我)可以多看看网上的模版,基本上job application email,
interview follow up email搜一搜看看别人都怎么说的然后结合自己的情况就差不多
了。如果有英语好的朋友可以找他们帮你proof read一下,确保你的email不会
aggressive而且有礼貌。
―――――――――
最后祝大家早日上岸!每个申请每个面试都过!最后一定会有满意的offer的!
--
评论
发表评论