仓库源文站点原文


layout: post title: "FullTime Job Plan" date: 2021-06-14 23:49 comments: true

categories: 工作

这里总结下自己在这个实习中想实现的一些目标和注意事项。主要参考了这么三个帖子,

<!--more-->

Timeline -- Be an early bird

最终目标

  1. 准备简历等自己的profile
  2. 6-9月 连续的,大量的,高质量的申请和电话面试
  3. 10月-11月 面试
  4. 毕业前时间(11月),如果不行,寻找 contractor

一定要早!很多大公司可能 6 月就会开放招人。越早越好,据说(不可靠地听说)早面题目更简单!

有了这个找工作最终目标后,开始从后往前推有个时间线,比如12月毕业,那就是尽量在这之前找到工作,找不到还有 OPT Grace period 三个月,也就是最晚四月底就要被赶回国。这个毕业的时间点就是找工作的时候一个重要的节点,如果到毕业的时候还找不到工作,就开始在大厂找 Contractor 作为自己的最后的保险方案。

这个过程是个dynamic的过程,一边往前走一遍修正自己之前准备的东西

Microsoft, NG 一定要去找 University Recruiter,不然海投内推也不一定进。

简历

关键词填充

楼主自己就是udemy上项目比如web develop bootcam+ react, redux 然后慕课网的java spring boot 项目. 瞄准的是fullstack和backend.套用这个 使用了什么框架+ 做了什么+ 达到什么目的/feature这个模板去写你的简历内容. 然后建议简历适当”包装”一下, 这也不是说让你去作假, 而是能加上一下比较好的框架和feature. 这样会吸引hr的眼球 让他找到关键词.然后你的feature里 最好能展现出你对这个框架有advacned 理解, 比如一些plugin的使用, 一些performance的提升.

项目选择

建议至少有三个软件相关的Projects:一个数据库,一个网站,一个其他(Big Data, Machine Learning, 游戏等等)。 简历是一个绝对头疼的东西,不管你的简历多好,挂在地里大家肯定能指出一大堆问题,而且说得不一定对。

如果你实在一个拿得出手的Project都没有,我有以下几点建议:

  1. 在Udemy报一个Web development的课,肯定能出一个project.

  2. 报一个big data的班,能出两三个Hadoop的projects.

  3. 把自己工作时的东西“软件包装”。比如你平时的工作时技术支持,要记录用户的问题,那你就说你使用数据库来记录。当然我们不要骗人,最好真的自己搭一个数据库。再比如你平时做实验需要run三样东西,你就说你用script来run这些东西。同样的,建议你真的写script来试试run。

你一定要有一个自己特别了解的Project,面试时几乎100%会被问题,目的是考你是否能讲清楚一样东西,具体内容不重要。

内推

一亩三分地

先看各位大神post的时间,一般post超过3-7天的就最好不要投了,最佳的投递时间是几个小时或者1-2天之内。你看到可能没几个人给大米点赞,殊不知大神的邮箱已经爆了。

面试顺序

我计划的面公司的顺序是这样的:

  1. 几乎不想去的公司(Ebay, Walmart, Cisco, Pure Storage等等)。
  2. 喜欢但是很远的公司(Uber, Lyft, Pinterest, Yelp, Salesforce, Twitter等等)。
  3. 喜欢的公司(Microsoft, Apple, Tesla, PayPal等等)。
  4. Dream Companies(Google, Facebook, LinkedIn, Amazon, Netflix等等)。

楼主找工作整体有一个strategy,把在美国找工作的结果分为四个梯度:

编程面试

时间的话,我训练的标准是 easy 10 mins,medium 20 mins, hard 30 mins。如果没有按时写完,用 easy 5m, medium 10m, hard 15m 的时间看 discussion board。如果还没看懂,就把题目记下来,以后多看几遍。

  1. 多搜面经、知己知彼

在面试前,你要多搜下面经,看看要应聘的公司的面试题难易程度和面试官的喜好,有针对性的准备。比如有的公司喜欢面试动态规划,面试前就去leetcode多刷下这类题目,有的公司的算法面试比较简单,面试前找简单题目练一下就好了。当然,这个只是为了有个大概的了解,要想压到题目还是很难的。因为很多公司,比如Google,要求如果某个题目已经被泄露,坚决就不能再被使用。

  1. 练习白板编程

我们平时都是在IDE中写代码。IDE本身有自动提示功能,而且可以随意修改代码。但是,在面试中,我们一般都是在白板或者纸上写代码。而在纸上写代码,对整洁度的要求很高,因为写好之后就不好改了,不然改的乱七八糟,面试官会觉得你思路混乱。所以,在面试前,你要在纸上多练习一下,能够做到脑袋里想好算法之后,能一气呵成的写出代码。如果实在写的太乱,写完之后,再重新抄一遍。所以,去面试的时候,自己多准备几张白纸,以免面试官给你的纸不够用😂。

  1. 尽量保证代码没有bug

实际上,算法面试不仅仅考察你的算法能力,还考察你的代码能力。你的代码是否能做到bug free这个非常关键。在面试中,如果你写出来的代码,bug很多,即便算法正确,也不大可能被录用。所以,在写代码的时候,你一定要注意非法输入的判断、一些特殊边界情况的处理。在写完代码之后,你也要认真检查一遍,并且用测试用例检查一下你的代码是否能运行正确。测试用例起码要包含正常情况、错误情况、以及一些边界情况(corner case)。

  1. 尽量保证代码规范

除了刚刚说的代码要没有bug之外,你还需要注意代码规范,比如变量、函数的命名一定要规范,可读性强。大的代码片段要拆分成小的函数、模块,这样不管是面试官读你的代码,还是你自己写代码,都会比较清晰些。如果你代码写的不规范,有些面试官会因此联想到你工作中写代码是不是也不规范呀。

  1. 要有时间意识

实际上,面试官不只是看你是否能想出算法、写出答案,对于一些简单算法题目,面试官还会考察你是否能快速写出代码。如果简单题目都写的磕磕绊绊,在很多优秀的候选人中,你就很难脱颖而出了。一般来讲,一个算法题目的思考时间不能超过10分钟(不包括代码实现)。超过10分钟,你就会紧张,面试官也会等的不耐烦了😂。所以,很长时间想不到解题思路的时候,要多个面试官沟通下。

  1. 先用最简单的方法解决

一般来说,我的一个面试习惯是,拿到一道算法题目之后,先想最简单的解决办法,说给面试官听,然后再行优化,想更加好的解决方案。这样做的目的,一方面是缓和自己紧张的情绪,不至于脑袋放空、卡壳,另一方面,一开始就想最优的解法,可能要闷头想很久,面试官很难知道你的进度,也没法做指导。

coding interview 的详细过程

System Design

常用的设计题参考了网上的各个资源,都写了自己理解的答案,这里我写的有tinyurl, twitter,messenger,uber,youtube,typeahead,dropbox,yelp,web crawler,search engine,rate limiter,key value store,instagram,online chess game

Other Tips

Form a team

我在整个找工作开始之前,就和班里的同学组了一个五人小队,大家都从六七月份就开始定期互相批改简历,做项目,上AB/testing的课程,分享找工作的资料,资源,一起去GHC career fair,总之就是一路互帮互助。这些实际的练习是一方面,另一方面就是有了伙伴来帮助,能够帮助自己在精神上不会崩溃。

Consistency

所有的策略,技巧,方法,都需要consistency,需要你持之以恒,每日如一的去做,再好的方法遇到三天打鱼两天晒网都是没有用的。

Regularly workout

找工作还是挺辛苦的,每天都是大量的时间投入,一坐就是好几个小时,所以每周定期去运动运动还是很有帮助的。

别犹豫,行动起来