湾区入手小黑屋的经验和要躲的坑

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货

最近看过此主题的会员

坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
前Google华人高管创立
面试offer一键直通
Leap.ai助你进入热门独角兽
查看: 3846|回复: 24
收起左侧

[Leetcode] 【找工求职】1/n 如何开始刷题(求加精)

     关闭 [复制链接] |试试Instant~
我的人缘0
cfdtlee 发表于 2018-3-12 16:24:34 | 显示全部楼层 |阅读模式
本楼: 【顶】   100% (5)
 
 
0% (0)   【踩】
全局: 顶  99% (184)
 
 
0% (1)  踩

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
这篇是接着前一篇将拿到cs offer之后该怎么做的文章写得,前一篇详见 http://www.1point3acres.com/bbs/thread-350438-1-1.html 我想通过一系列的求职文章来跟大家分享我从入学后开始准备面试到拿到FB intern+return的经验

这篇是招工求职系列文章的第一篇,前一篇是第0篇。刷题是在美国找SDE最重要也是最难最耗时的一步。就像复习托福有很多技巧一样,刷题也有很多方法和策略能让你事半功倍。这篇将从战略和战术两个方面来聊聊刷题的正确打开方式。

## 战略

### 越早开始越好
不要等到说“我这门Java入门课上完再开始刷题”,因为等你上完Java课,一个月过去了,等你开始刷题的时候,Java基础语法又忘记了,还得重新查Java语法。正确的方式应该是从今天就开始刷题,同时可以在上公开课,看书等等。

### 效率最大化
做一道题不是做完,accept就完事,如果想刷完一遍对每题都印象深刻,就要做到效率最大化,一份时间当好几份用,刷一遍达到刷好几遍的效果

- x1 第一遍做
- x2 复习一遍用到的算法,理解题点
- x3 做笔记,下次复习的时候能够快速回忆起来关键点
- x4 分析时间复杂度,空间复杂度,从而思考如何优化

## 战术

刷题,刚开始会很难,即使对于科班出身,也需要时间去上手。最难的是前20道题,因为这个时候,语法不熟,Leetcode系统不熟,算法不熟。但是一旦熬过20题就会感觉变轻松了,如果是按Acceptance做的话,50-70题又是一个坎,因为你会遇到很多新的数据结构,没接触的数据结构直接做会感觉很难。遇到这样的情况就硬着头皮按着战术去做就是。所以下面是战术。

### 如何刷题
第零步,选择语言,建议用Java或者C++,大部分公司不限制面试语言,一些公司比如Amazon会在OA的时候限制只能用Java和C++;选择平台,建议用Leetcode,市面上什么lintcode之类的都是相互借鉴,做一个就好。IDE选择,直接使用Leetcode提供的界面编程。
第一步,按照Acceptance从高到低排序,选题号小于300的做,因为这两年从300增到700题,如果完全按照Ac来做的话前面会太简单,做了100道题可能做得都是easy的,进步太慢。按这个排序做20题,目的熟悉基础语法,熟悉leetcode,不会的就看答案,这里的答案是指Discuss里面的高票回答,看完答案再重写一遍,因为这个时候你不会,基本上是因为语法不会,Ac前20题不会出现复杂的数据结构。

第二步,继续按照Acceptance排序刷接下来的20-50题,每次遇到一个新的数据结构,先查书/wiki,学习这个数据结构,然后做题,做不出来,再看答案,看完重写一遍,会了之后,选择同样数据结构的题横着刷(按Topic来刷,如图)3-4题,这样的目的在于,学习了新的数据结构,马上应用了3-4遍,学习的效率很高。然后再继续按排序做。
![](

                               
登录/注册后可看大图
)

第三部,刷题顺序不变,按照Acceptance,同时夹杂着横刷,50-300,但是因为积累了一定的数据结构,所以开始加入分析数据结构,比如为什么用Linked List而不用Array List,为什么用Queue而不用Stack;分析算法复杂度,包括时间复杂度和空间复杂度;然后就是思考如何优化,时空是否存在优化,以及能否牺牲空间换取时间。
$$O(n^2) > O(n\sqrt(n)) > O(n)$$

第四步,如果按照我说的笔记方法在记录的话,第二遍刷的时候可以按照题号排序来做,夹杂着横刷,这一边遇到不会的先看笔记,一般看了笔记有一点提示就很快能做出来,如果还是想不起来那可以看Discuss然后做,做完把这题作为好题分析去做笔记。

第五步,一般是面试之前,边看面经边按照公司来刷,做到这一步的时候有必要买membership,这样就可以按公司查看。
![](

                               
登录/注册后可看大图
)

上传github,加上一定的注释来解释你的代码,一方面为了刷github上repo和submit的数量,刷绿点;另一方面熟悉git这种collaborate的工具。像第一篇里面说到的,使用github是CS素养的第一步,后面会具体写。

### 如何看答案
点进Discuss,按照vote排序,选择靠前并且使用你用的编程语言的一条,点进去看,Solution是新加的功能,里面一般只有一个参考答案,可以参考。看了别人的答案,高票的一般都很巧妙,并且代码风格都很好,是很好的学习资源,不仅学习他的算法,思路还要学习他的分析等等。看完答案,回去自己重写一遍,重写的时候决不能看答案。

### 如何做笔记
- 易错点记录,只要不是一次过的题,就存在易错点,比如语法错啦,边界条件少啦等等。很典型的递归错误就是忘了加退出条件。这样的错误记录了两三遍之后,就再也不会错了。
- 语法记录,很多常用的语法,比如各种数据结构的初始化比如初始化一个list of list`List<List<Integer>> lol = new LinkedList<List<Integer>>();`,再比如数组排序,以及如何使用compare函数

    ```
    int[] arr = {13, 7, 6, 45, 21, 9, 2, 100};
    Arrays.sort(arr, 1, 5);

    ```
- 知识点记录,给每一类题都建一个文件,推荐Dropbox的paper或者Evernote。按前面第二步的方法做的时候将题目归类并记录。记录的时候,就用一句话记录这题的题号,用的关键知识点,和关键代码,这样的好处是下次复习的时候可以快速想起,比如明天就要面试FB了,今天晚上你不可能做新题了,你就可以看你记录的这些关键点,复习效率特别高。举一个List的例子 https://www.evernote.com/l/AKNd6Oijdz5EaK8aBHfybQGOTLWqTt2isbA
- 好题分析,上一点是每题必须做,这一点是选择性的,当你做到一道题卡了很久,或者学到很多知识点(有好几个follow up),你可以写一篇文章来分析,来记录你是如何一步一步优化做出最优解的。

### 辅助材料
- 数据结构Java书,这两本书是我刷题的时候用到最多的书,遇到新的数据结构的题目,第一步就是先翻这两本书,学习一下对应的数据结构,然后回过头看题目,会感觉豁然贯通。
链接: https://pan.baidu.com/s/1W0-6E316u_nEG3yPOv_GEw 密码: 86k1
wikipedia
- Google,任何问题,先问Google,碰到语法问题,程序报错等等,复制到Google里基本都能找到解决方案



评分

参与人数 27大米 +179 收起 理由
hnlq + 3 很有用的信息!
a8272322 + 3 给你点个赞!
slyy + 1 很有用的信息!
Jason Lee + 6 爽哥赞一个!!
zilu0907 + 3 感谢楼主
he630103694 + 3 给你点个赞!
FYYoffer + 3 很有用的信息!
houliang + 3 很有用的信息!
bigworld + 5 给你点个赞!
Stevenzzp + 3 很有用的信息!
LesterFreamon + 3 给你点个赞!
lipei98989 + 2 很有用的信息!
coldplay + 3 很有用的信息!
Jerry_37 + 20
alastor0325 + 1 很有用的信息!

查看全部评分


上一篇:在window内做stream join
下一篇:学习算法/数据结构+刷题中的同时在谨慎考虑自己的规划

本帖被以下淘专辑推荐:

  • · CS|主题: 190, 订阅: 14
我的人缘0
aaaaaria 发表于 2018-3-12 22:14:45 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (8)
 
 
0% (0)  踩
感谢LZ分享!!
回复

使用道具 举报

全球28万学生4.7分推荐
我的人缘0
 楼主| cfdtlee 发表于 2018-3-13 00:44:10 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  99% (184)
 
 
0% (1)  踩

恭喜你拿到offer啊,刷题加油!
回复

使用道具 举报

我的人缘1
vtiaocao 发表于 2018-3-13 00:46:55 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  86% (602)
 
 
13% (96)  踩
易错点记录不错,先马克了,等会看
回复

使用道具 举报

我的人缘0
mfirestorm 发表于 2018-3-13 00:49:03 来自手机 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (16)
 
 
0% (0)  踩
等lz完成了

21.000+ students read the Road to learn React. The course weaves all the opinionated roadmaps into one roadmap to master React. It gives you all the fundamentals in React. You will build a Hacker News App along the way.

回复

使用道具 举报

头像被屏蔽
我的人缘0
oijlkj876 发表于 2018-3-13 12:32:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

我的人缘0
 楼主| cfdtlee 发表于 2018-3-13 14:59:37 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  99% (184)
 
 
0% (1)  踩
oijlkj876 发表于 2018-3-13 12:32
刚刷50题,感觉楼主的经验很实用,期待后面文章

不错不错,50题之后就会刷快起来了
回复

使用道具 举报

我的人缘0
1点50分 发表于 2018-3-14 09:03:56 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  80% (12)
 
 
20% (3)  踩
首先恭喜楼主,请问你没刷多少题回来复习呢?还是一直刷下去300题 再回来重新做

With React+D3v4 you'll learn the basics of building fast data visualization components in about an hour.

回复

使用道具 举报

我的人缘0
 楼主| cfdtlee 发表于 2018-3-14 13:11:53 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  99% (184)
 
 
0% (1)  踩
1点50分 发表于 2018-3-14 09:03
首先恭喜楼主,请问你没刷多少题回来复习呢?还是一直刷下去300题 再回来重新做

看你时间多少,我那时候总的也只有200多题吧,我那时候时间紧,刷了150开始复习的。
回复

使用道具 举报

我的人缘0
sjyjya 发表于 2018-3-17 00:36:13 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  0% (0)
 
 
0% (0)  踩
太感谢了!转专业刚收到cs offer的路过,觉得很实用。明天开始刷题!楼主好人,不知可否加微信认识一下
回复

使用道具 举报

我的人缘0
landy622 发表于 2018-3-17 06:52:17 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  75% (3)
 
 
25% (1)  踩
感谢提供java书和经验分享 赞!

Learn React.js, Redux & Immutable.js while building a weather app

回复

使用道具 举报

我的人缘0
ttbx 发表于 2018-3-18 11:47:52 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
感谢lz的经验分享!
回复

使用道具 举报

我的人缘0
Raymond_Lingx 发表于 2018-3-19 16:59:05 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (44)
 
 
0% (0)  踩
特别感谢楼主,作为一个小白,最近刚准备开始刷题,可以加个微信有问题的时候交流一下吗?
谢谢啦!
回复

使用道具 举报

我的人缘0
Eziohao 发表于 2018-3-21 00:48:58 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  50% (1)
 
 
50% (1)  踩
感谢分享经验,收藏了
回复

使用道具 举报

我的人缘0
f1rosie 发表于 2018-3-21 05:20:38 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
谢谢LZ分享
回复

使用道具 举报

我的人缘0
Allenping 发表于 2018-3-21 13:28:25 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (27)
 
 
0% (0)  踩
关注一波 这样的优秀文章
回复

使用道具 举报

头像被屏蔽
我的人缘0
lipei98989 发表于 2018-3-21 17:11:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

我的人缘0
zilu0907 发表于 2018-4-3 16:45:52 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (16)
 
 
0% (0)  踩
谢谢楼主分享,另外,看到leetcode上可以用好几种语言,请教一下楼主,刷leetcode用java,C++还是python好呢?
回复

使用道具 举报

我的人缘0
PdoubleR 发表于 2018-4-5 11:43:39 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (6)
 
 
0% (0)  踩
很有用,谢谢!
回复

使用道具 举报

我的人缘0
jerryfu823 发表于 2018-4-5 14:10:45 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (1)
 
 
0% (0)  踩
感谢楼主,支持加精。
回复

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地论坛声明

GMT+8, 2018-9-26 07:01

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表