活跃农民
积分 561
大米 颗
鳄梨 个
水井 尺
蓝莓 颗
萝卜 根
小米 粒
学分 个
注册时间 2018-9-27
最后登录 1970-1-1
2019(10-12月) -CS 本科 +3个月-1年 | 内推|大西雅图地区 码农类General 全职 @amazon
楼主是 https://www.1point3acres.com/bbs/thread-571041-1-1.html 亚麻一轮OA分析帖的作者,感觉最近这帖子快被神化了 233 想来再留一个帖子好了
今年的秋招对于楼主来说算是圆满落幕,在此想留一个帖子纪念一下这几年的生活,也希望能给地里的童鞋一点激励和启发。
0. 给在役大学同学的一些话
. 1point 3acres
其实从楼主这几年看到的东西上来讲,可能很多大学生,尤其是很多来美国留学的美本/美研同学,有点被推着走的意思。很多朋友都跟我诉过苦,像是自己感觉不知道读书是为了什么,好像也没有目标,仅仅是感觉像是“到了这个时候需要读本科了”“读完本科读个研究生吧”这种感觉。 . 1point 3 acres
事实上,如果能在大一入校的时候稍微对人生有一个规划,搞清楚自己想做什么,自己读书的目标是什么,那你努力和奋斗的动力也会多很多,最主要的是你不会再有迷茫,而且也不会在日后为你所做的决定而后悔。
1. 人生是一场马拉松
.1point3acres
. ----
楼主对于这句话深有体会。楼主在大一到大三这段时间沉迷摄影,一度打算转职成全职摄影师(因为楼主的CS简历几乎是白板一张,下面会附),从现在的眼光看,楼主的简历基本上是烂牌中的烂牌,没有可取之处,到大三了也几乎没有任何professional/career development, 但是路是要一步步走的,机会也总会有的。
在大三下学期楼主想好以后想做什么了之后,某次卖显卡的时候赚到了unpaid实习一份(显卡的买家是一个创业游戏公司founder,然后在砍了我一半价格后给了我一份实习),然后慢慢的从这一份工作做了起来;次年这个工作室觉得我做的很好,就开始给我开工资并且让我负责了一个很大的项目。在这个公司的第二次实习楼主收到了第一个作为SDE的paycheck,然后也帮这个工作室拿到了一个50w的grant,实习结束后工作室就搬去Buffalo了。
从这两份实习经验为基础,楼主之后拿到了佛州一个很好的软件公司的实习offer * 2,在毕业之前积累的很多很多的业内经验,这些经验也让我在回答亚麻的BQ问题时如鱼得水。 . Waral dи,
楼主附一个17年和19年的两份简历,同学们不要怕现在烂牌一手,一步步的走下去,人生毕竟不是一场百米赛跑,楼主尝到过很多很多很多很多次的失败和拒绝,但是慢慢的你总能抓到一个机会的。
.google и
2. 毕业季,秋招,春招
在此推荐所有同学每年都尝试去找一下实习/工作,不要觉得自己没有准备好或者自己菜,因为:
. 1point 3 acres
- 即使你真的菜,从一些失败的经历里也能学到很多东西
- 很多小错误是你在第一次找工作或者第一次面试前压根不会注意到的,越早开始找工作能越早的意识到很多问题(比如简历,面试交流,等等)
- 千万千万别等自己准备好再开始xxxx,机会不会等人,自然也不会等你
- 万一走运了呢
如果你的毕业后计划是工作的话,选课的时候最好稍微照顾一下秋招和春招,尽量能多花点时间在面试准备,投简历,刷题上。学校里的事都是小事,只要你能拿到一个满意的offer,最后一学期全部C掉也无所谓的(尤其是毕业的那一个学期)。
实习和工作offer的优先级应该远远大于你的学校课程等,只要不挂科就行。不要为考试啥的而推迟面试时间,因为楼主见过若干个推迟了面试时间然后没headcount的情况(中小公司居多,大公司偶尔也有)。
. ----
3. 刷题,面试
. Χ
刷题方法这个众说纷纭,对于楼主来说,刷题的质量和深度应该重于广度。刷600道题一遍远不如刷200道题三遍(后者还会更省时间,因为每一次都会更快),把题目刷精,刷出一定的肌肉记忆是十分重要的。一些经典的题目应该能做到看到就能写出来。
刷题个人不推荐真的去刷八九百道题,楼主感觉这玩意儿你真刷了特别特别多也不会在工作后给你太多帮助,两三百道题刷精足矣。
. 1point 3acres
. Χ
当然,到面试这里,不能直接把题当题来刷。 . Χ
面试官想看到的是你解决问题的一个过程,而不是表现出像是你直接背出来题一样。交流十分重要,英语不好的同学你们的首要任务是把自己的交流能力搞好,沟通能力不行的话即使你过了面试,在工作中也很难有作为。没有人会喜欢一个没法交流的同事的。
一些基本的面试套路可以参考下其他帖子,楼主这里就稍微说几个点
. .и
- 开始回答问题前,clarify question,问清楚data size,边界条件,能不能用extra space,能不能有assumption,等等
. check 1point3acres for more.
- 不要先写代码,不要先写代码
-baidu 1point3acres
- 在comment区域或者其他地方,先解释清楚你的回答思路,尝试和面试官沟通交流,看看你的思路是不是面试官想要的。一般这里沟通的好的话,面试官会给你一些feedback让你知道自己是不是在正确的解题思路上 (沟通很重要!)。
. 1point3acres.com
- 尝试提出多种解法
- 在面试官询问之前,分析自己解法的时间/空间复杂度 . 1point3acres
- 在正式写代码之前,用一些伪代码来表明自己的解题方法
. check 1point3acres for more.
- 写代码吧!
- 写完代码后如果有时间的话,自己写点test case,尝试cover到corner case . .и
..
关于Follow up
准备一些公司tag下的经典题目的时候,可以自己想一下这些题目可能有的followup,一般来说无非以下四种:
.--
1. 能不能提升时间复杂度,比如O(n^2)到O(n)
2. 能不能提升空间复杂度,比如不额外使用data structure去存东西 .1point3acres
3. 增加或者减少题目中的特定条件后,有没有更有解。比如数字array类的问题,会问array排序了/非排序的情况 .--
4. 稍微abstract一点的问题,比如解法是不是scalable的,假如说input很大或者很小的话解法有没有提升空间
.
最后建议大家刷题的时候脱离ide,使用一些文本编辑器或者直接在leetcode上写。平时培养起一个在本子上先打草稿的习惯,这样子你在做whiteboard的时候也不会心慌意乱。 -baidu 1point3acres
关于BQ
4. Software Engineer相关
我感觉还是有很多同学对于Software Engineer的工作不是太明确。SDE不是刷题,也不是单纯的语言。Software Engineering is resolving/implementing software problems/solutions in an engineer way. 在我的理解里,SWE里software只是手段,engineer才是本质。语言什么的对于一个成熟的SDE来说是很快就能在工作中掌握的东西。在一个Project里头,代码可扩展性,代码可读性,代码规范,和其他工程师的合作能力,代码单元测试以及deployment等等都是非常重要的能力。而这些能力都是学校里的课很难教给你的,很多这方面的能力只能从自己的课余project或者实习中学会,而很多人平时可能都不怎么会注重这方面的能力(也就是很多所谓工作后不会写代码的人)。我建议大家还是平时多研究一下SWE具体都在做什么,然后有什么是可以学习的。
起码在楼主自己的经验中来说,学校能教的东西太少太少了;很多教授都是理论派,很少有工业经验的,而且很多课的代码量不是很多,很多理论类的知识在你有相关经验之前只是知其然不知其所以然。尽量尽早的在课余时间尝试多做点project,多写多写多写点代码。你代码写的多了,很多东西自然而然就学会了。(这里不是说代码写的特别多就肯定有用,但是毕业了也没写几行代码是肯定不行的)
-baidu 1point3acres
5. 总结
像楼主一开始说的一样:人生是一场马拉松,不是百米赛跑。一时成败没法说明什么,大家都还年轻,无论你想做什么那都是有希望的。即使现在手里一副烂牌,只要你开始为之而努力,也是能慢慢打好的。东西慢慢学,题慢慢刷。CS专业的就业在之后几年不说寒冬,但是竞争肯定会越来越激烈的,但是只要你手里有货,那就不怕没有买家。
望诸君共勉。
本帖子中包含更多资源
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
上一篇:Uber ATG Intern Timeline 下一篇:大龄loser需要改善一下工作环境