https://github.com/geemaple/algorithm
记录是激励自己的好方式,留下自己的 Repo,与君共勉,要找工作了,求个好运吧🍀,2018-10-13
我是一个 iOS 程序员, 非 top 名校,侥幸 211,985 都有。毕业季 objective-c 和 python 是一起学的,只因当时 iOS 太火爆,走上了这条不归路
2017 年 10 月份左右的时候,看了《剑指 Offer 》,只刷了 50 道左右题目。那时候也没什么章法,先按简单的来,30 几道之后就刷不动了。简单的问题都搞不定,自信心被打击的不行,扔了半年。
这时,我只是对几种常见排序,入门级别的动态规划有了解。但底子仍为 0,连时间复杂度也弄不明白。老实说,我就是曾经那些 diss 算法根本用不上的中的一员。
出来混,迟早都要还的,想要去硅谷的执念仍在,2018 年过年回来陆续开始按照标签来刷,二分查找,双指针,分治,递归,广度优先,深度优先,动态规划。
如果是 Google 和脸叔的题,基本上直接认怂。很多题自己只能有一部分思路,然后就是无解,好多答案都是想不出来研究别人的,甚至好多看解释半天都理解不了,有时还要去翻相关概念,经常把答案 copy 到 IDE 里面一点点调试,和自己写的对比。有时就差一个字符,结果千差万别。
这半年几乎把时间都用在了刷题上,除了心情状态不佳,工作,或有点拖延症外几乎都在刷题,在公司,在家,在亲戚家,高铁动车,卧铺,参加婚礼空闲的时候都在找地方刷题
我把题号记在 Anki 里面,像单词一样去重复的刷做过题。欠了 125 多个题还没有及时重刷,该加把劲了~
自己这半年是有成长的,有大神说无论状态怎样都要刷题,像运动员锻炼一样,因为一旦放下,可能就会放下好久。
整理资料时发现,竟然有这么多留言,万分感谢大家
每个评论都认真看了, 你们的链接也都收藏了, 大家一起加油, 噢力给~
回过头来,我自己,也有新的认知与思考
对我来说,硅谷也不再是一个耀眼的光环,对于想去的人,真的要去了解目标公司,要去“粉丝话”。不然会觉得差距太大,或者心里层面上无法匹配
留学确实是个不错的方式,但这需要家庭原始财富积累,对于没有财富积累的家庭,可以通过外企的工作机会,万一获得L1签证的机会,就可以去总部了。像谷歌, 爱彼迎, 微软, 苹果, 亚马逊, ebay, hulu都低调的有国内分部
顺便说一句,Google就在我公司楼下,玩笑的宏伟目标就是我要去楼下上班,但是我不会说我在哪里的, 哈哈
Google interviews focus very heavily on algorithms and data structures
其实外企考察的是交流,思维,分析解决问题的能力,还有价值观的认同。总之,就是专业能力。
但也确实是通过多轮算法,系统设计,行为面试体现的。
比如Google, 基本上就是算法面试。从接触HR到电面,基本上都是说的算法。我的实力也就是电面了,oh~no,仍有点愧对同学的引荐
比如Airbnb, 电面算法, 一面写需求,二面改bug,三面写算法,四面讲项目。
实力差了些,运气差了些, 手机卡都能在面试过程中坏掉, 没能成功
最好的学习时间,是十年前,其次是现在。既然挂了有冷冻期,那不如多冷冻一会吧。谁知春天来了又会是什么样呢?
算法也有原始积累,复利的爆发,也都是在成长的中后期,才有明显的效果。参考倍增的思路1, 2, 4, 8, 16 ....
由于身体的客观原因, 休息了一年多, 最近开始早起刷了, 基本上7:30-9:30一道题, 周末会留一天偷懒。
早起的好处是,对身体健康有益,不耽误工作,一天余下来的时间也能回味思考。
目标只是, 观察自己能坚持多久, 仅此而已。专注自我,不要被其他人乱了节奏。
会把自己的解题思路放在知乎+公众号上,也许能够帮助其他人,少走弯路。
但如果你善于搜索,或者英文交流没有问题,看leetcode的讨论区也完全足够。
最后,任何竞争都是多维的竞争。
但田忌赛马,也还是赢了呢?
1
Ruohua3kou 2018-10-13 00:20:51 +08:00 via iPhone 1
我一天做一道还都经常不敢做难点的,我要像你学习~
|
2
yidinghe 2018-10-13 00:29:43 +08:00 via Android 2
刷了这么多题,循环和判断因该会写了。接下来就是学面向对象。
|
3
likuku 2018-10-13 00:44:20 +08:00
算法科学家之路在向您招手...
|
5
portlet 2018-10-13 01:00:11 +08:00 via iPhone 1
点赞
|
7
wind3110991 2018-10-13 01:17:24 +08:00
说说心得,感觉自己工作久了也得刷刷了,现在感觉基础知识还不如个校招生
|
8
jedihy 2018-10-13 01:50:28 +08:00
难题都是 G 的题。FB 的题做不出,你应该是有一些基础没有打好。
|
9
justyy 2018-10-13 03:14:59 +08:00 4
祝好运。重点刷刷 BFS,DFS 和动态规化的题。我也刷了 200 多道, 已经拿到了 GE 的 Staff SE 的职位(英国剑桥),每刷一道,上传 github 写博客分享,这样才能学习,https://github.com/DoctorLai/ACM/blob/master/leetcode/README.md 这是脚本自动生成的目录
|
10
justyy 2018-10-13 03:15:20 +08:00
|
11
sadhen 2018-10-13 03:22:16 +08:00 1
|
13
Andiry 2018-10-13 03:58:49 +08:00 via Android 1
想去硅谷应该把时间花在申请上,而不是刷 leetcode
|
14
ToT 2018-10-13 04:41:21 +08:00
肉身翻 还有工作经验 英语水平 等等要求,出来读书要容易些。
|
15
realkenshinji 2018-10-13 07:54:17 +08:00 via iPhone
马一个,之前我也是刷了一部分 codility 的题,leetcode 没刷两个
|
16
lhx2008 2018-10-13 07:59:35 +08:00 via Android
我是非科班的,每次刷题都在怀疑自己智商。
|
18
simonqian 2018-10-13 09:31:38 +08:00
去硅谷工作不一定要算法好,只要你在某一方面有过人之处就行
|
19
askfilm 2018-10-13 10:16:56 +08:00 1
我觉得至少在国内刷题这种行为就是把实用主义拉回了理论主义, 简单的讲就是: 要求开挖掘机的学柴油机原理
没有 google 的命 确有 google 的病 |
21
yang2yang 2018-10-13 10:46:31 +08:00
怎么才能去硅谷工作?
|
22
shiina 2018-10-13 10:51:56 +08:00
前段时间也做了 200 多个题,能力有点提高,但是已经感觉到了自己的的能力上限。
|
23
ffffish 2018-10-13 10:55:01 +08:00 1
送你一句共勉 刷题不一定能找到工作 不刷题一定找不到工作 (大牛除外
|
24
songtianyi 2018-10-13 11:23:33 +08:00
"因为一旦放下,可能就会放下好久" 曾经的 acmer 很赞同这句话。算法这东西,捡起来真的困难, 一个是没那么多时间了,一个是思维跟不上了。
|
25
beny2mor 2018-10-13 11:39:18 +08:00
问不对题,你的迷茫提现在哪里......
曾经刷了段时间,真的一放下就不想去捡了 |
26
Desiree 2018-10-13 11:40:17 +08:00
加油,我也在刷,速度可能还没你那么快,不过坚持下来才是刷题最难的,因为算法的思维才是刷题的核心,如果你有一天将量到一定程度,可能就会看到更广阔的世界吧。
|
27
Windsooon 2018-10-13 12:01:49 +08:00 2
如果楼主刷了 200 多题还迷茫的话,那刷题的方法一定出错了,要知道以前的 Leetcode 一共也只有 200 多题。我觉得更好的方法是刷完一题之后好好总结为什么一开始没有做出来。例如 G 家常出的 Word Break,可以用 DFS, BFS, DP 来解。真正能用几种方法解出这道题需要很多时间训练以及基础知识的积累。而且一般这些原题都有 follow up,不真正理解是解决不了的。如果要去国外工作的话,我建议可以看看一亩三分地的面经。在 Pramp 上 mock interview 试试。
|
30
AntiGameZ 2018-10-13 13:25:37 +08:00 1
半年时间,200 题,应该反复刷了不止一遍吧?这个时候应该会有瓶颈期了,能自己突破当然好。突破不了的话,还是买本 Algorithm 4th 之类的书,从头梳理一遍思路吧。
现在只是把题目做出来已经不够,还得琢磨一题多解,熟悉各种套路。 对于非算法爱好者,而又得在硅谷混的人来说,刷题,真是一个慢性病…… |
31
mathzhaoliang 2018-10-13 13:47:05 +08:00 1
我有点不太明白,要去大公司的话,拿着自己写过的牛逼项目去不是更好吗?要不就自己创业,干嘛挤破头去硅谷呢?
难道你希望等你 N 年以后咽气了,别人在你的墓志铭上写:"这人刷了一万道 leetcode,拿了硅谷几十个 offer,可是一个牛逼的项目都没有" ? 最好是现在想清楚自己的方向,朝这个方向走,好过漫无目的的刷题。 |
33
UIXX 2018-10-13 14:10:50 +08:00 1
哎,我深深感觉到一些面经害人不浅。潜移默化地告诉想去大公司的人刷题等于面试成功。(事实上这些人不一定是因为自己的 coding 能力被录取了,你永远不知道他们都有哪些隐性优势)
我暂同 @mathzhaoliang 的部分观点,有方向、有项目就是最好的起步,算法只能算内功,没有招式也使不出劲。很多算法复杂,你没接触过实际应用单纯做题纯粹像是背八股文那样索然无味,时间一长也就忘了。 除非你要参加比赛,那是必须要刷题的。如果你已经有了工作,在实际项目上努力更加节省时间。 |
34
melonrice 2018-10-13 14:29:02 +08:00
额,2017 年 iOS 火爆?
|
35
paw 2018-10-13 15:27:05 +08:00 11
刚负责某厂的校招 1 面,讲真,在面的那些人中,号称刷题过千 /acm 的,基本都直接给挂了,给过的也在后面 2/3 挂掉了,有个好像是 acm 全国二等奖一面也没给过。你 acm 再牛逼,问一个 c++虚函数相关问题,居然有反问虚函数是啥的;不按 acm 套路出算法题,给一个实际产品场景让设计效率尽可能高的数据结构,就挠头了,没一点抽象能力。招进来干啥?
招人是开发项目的,不是让你多能解奇葩算法题的,而是看你的综合基础知识;解决实际工程 /产品问题的能力等。 既然 lz 现在已经入坑 ios 开发了,就往 ios 深处挖一下,了解底层机制 /优化 /网络等和一些常见的开发模型以及为啥这样好等,这些在求职中还是很有用处的。保持一种往下挖一层的好奇心还是很有用的,知其然知其所以然。 还有 lz 再面应该也算是社招了,实际项目经验也是很重要的一点了。 刷题,自我安慰罢了,除非是那种以此为乐的。如果是带着功利心去刷,别浪费时间了。 |
37
wcgwuxinwei 2018-10-13 18:33:50 +08:00 via iPhone
@paw
老哥说到点子上了,+10086 |
38
daredevilll 2018-10-13 18:35:01 +08:00
|
39
justyy 2018-10-13 18:46:08 +08:00
@paw 对,ACM 只是加分, 还是看综合实力,看你做过什么项目啥的。 我一般喜欢问 C++的 virtual destructor 有啥用 (可以刷掉很多人)。
|
40
guanghe123 2018-10-13 19:29:16 +08:00
@justyy 大佬是在国内 rou 翻的吗,方便介绍下拿到 offer 的方法吗~
|
41
fanqianger 2018-10-13 19:34:56 +08:00
刷题不是全部,但是是一些基础吧。我觉得能把 easy 和 medium 的题目了解就行了。反正我不是挂在刷题上(笑
另外,现在 H1B 基本上不可能了,楼主不如考虑欧洲,澳洲,新加坡等地方。 |
42
aihidao 2018-10-13 21:24:59 +08:00
我刷题效率很低。一年到现在才 98 道。因为都是偶尔一段时间刷刷。
确实能感觉到做题 思路会越来越清晰,从一开始的 拿题就做,提交十几次,到现在思路清晰,提交一两次就过。 刷题可能对人工作帮助不大。但真没有一些人说的那么不堪。 如果一道题我的执行效率比别人慢了,我都会分析一下为什么我慢,对方思路有什么好的,或者为什么那样写会快点。 这样怎么没有帮助,虽然现在硬件越来越不值钱,但是注重下效率什么的总是好的。 |
43
mathzhaoliang 2018-10-13 21:55:01 +08:00 2
我个人认为刷 leetcode 是一种投机取巧的行为,跟考托福 GRE 刷历年题库一样,本质目的是为了拿到 offer,对个人职业提升有限。
有功夫不如多看一点数学、看看最新的论文、或者计算机语言的底层。 leetcode 刷得再溜,对理解压缩感知、alpha zero、随机控制有什么帮助吗?别人讨论区块链、自动驾驶、人脸识别的时候能插上话吗?真正的算法是不依赖于这些 "编程技巧" 的。理解这些算法背后的原理带来的愉悦感远远大于刷 leetcode 得高分的成就感。 |
44
Oz2011 2018-10-13 22:03:16 +08:00
中国身份直接拿 offer 肉翻真的不容易,去上个学吧
|
45
ffffish 2018-10-13 22:18:10 +08:00
@mathzhaoliang @paw 其实 FLAG 也都知道刷题(包括白板手写代码)并不是最理想的面试方式,但是也没有更好的方法啊,而且别人都刷你不刷那肯定吃亏啊。我认为 leetcode 单独做起来其实还是蛮好玩的,但确实不是招聘应该考察的全部范畴。
|
46
ACool 2018-10-13 22:19:26 +08:00 2
@mathzhaoliang #43 我觉得刷 Leetcode 对于编程能力其实是有帮助的,有助于编码时思考更全面,写出 bug free 并且优良的代码的几率更大。对于计算机科学来说,编程能力也是基本功之一,就算是最新的论文,也需要编程来实现,没有良好的编程能力,是很难做到复现或者改进的。
|
47
justyy 2018-10-13 23:04:01 +08:00
@guanghe123 我是在英国读书工作后申请的。国内想要肉身单靠刷题翻出来,很难,真的。还不如出来读个书先。
|
48
tianshilei1992 2018-10-13 23:28:01 +08:00 1
@ACool 我同意。很多人认为刷题没用,但是实际上就是在刷题中养成的全面考虑的思维逻辑才是最重要的。工作中很多人写代码都是想当然,很多 corner case 直接就想不到,这样做对产品后面的质量会造成很大的威胁。之前在修复某深度学习框架的时候,发现里面某个函数的有一段 code 就想当然的把输入当成一定是某个样子的,然后就出错了…影响了最后的收敛。
|
49
Tcdian 2018-10-14 00:29:05 +08:00 via Android
转行前端的大专生,LeetCode 360 + 了,还没有工作 ~😔
|
50
Tcdian 2018-10-14 00:53:11 +08:00 via Android
|
51
qzeng2017 2018-10-14 02:50:43 +08:00
|
52
holyghost 2018-10-14 03:01:49 +08:00 1
https://github.com/liupangzi/codekata
leetcode 500+ |
53
AntiGameZ 2018-10-14 06:26:26 +08:00
@UIXX 硅谷的某些一线大厂,对于入门级职位,真的是只面算法题,基础知识这些一概不问的。这也是为啥身边一看,转专业念 1-2 年 Master,同样刷题,找的工作并不比科班出身差的原因之一。
|
54
justyy 2018-10-14 07:06:38 +08:00
@guanghe123 我是到英国读书的, 这是我的简历: https://steakovercooked.com/documents/cv.pdf 每个人都不一样,所以我的一些经验可能不太适合大家。
|
56
loryyang 2018-10-14 08:28:37 +08:00
加油!
|
57
Oz2011 2018-10-14 08:46:38 +08:00 via iPhone
@CodeM 再怎么样比在国内刷题想肉翻的容易 10 倍不止吧。你在国内拿得到几个美国公司的面试机会?人家留学生毕业能拿多少面试机会?说句难听的你 900 道都刷完也不一定有人给你刷题机会啊
|
58
luopengfei14 2018-10-14 08:49:40 +08:00 via iPhone
@Tcdian 坚持
|
59
CodeM 2018-10-14 08:57:38 +08:00
|
60
AntiGameZ 2018-10-14 09:11:54 +08:00 via iPhone 1
@CodeM 也没那么惨,美帝 5 月份毕业,我是最后一个找到工作的。即便这样,面试我也没断过
|
61
Oz2011 2018-10-14 09:44:53 +08:00 via iPhone
我说了啊,比国内刷题想拿 offer 肉翻的机会起码多 10 倍啊。毕业生都不给 sponsorship 的会给海外人面试机会吗?
|
62
pythonee 2018-10-14 20:20:43 +08:00
很佩服你的坚持
前途会是一片光明的 |
63
justyy 2018-10-15 00:48:57 +08:00
|
64
Raisu 2018-10-15 08:02:35 +08:00 via Android
人脉也很重要的啊
|
65
hjiang 2018-10-15 11:18:22 +08:00 1
不要为了面试用题海的办法学习,形成不了知识体系。学习从根本原理出发会事半功倍。虽然各种算法看起来数量很多,计算机领域解决问题的思路数量无非就几种,算法只是在具体问题上的应用而已。
|
66
guanghe123 2018-10-15 21:55:23 +08:00
@justyy 多谢多谢,看来 rou 翻没戏了,悲伤。。。看了简历,真的好棒呀~
|
67
helloworld000 2018-12-02 07:13:44 +08:00
@justyy 没你说的那么严重,英国还是很多公司可以给办签证的,每年也是有一些毕业 under/masters/phds 能留下来(随便去那几个大公司的 linkedin 看看就知道有不有同胞了),当然也得自己非常厉害,top10 学校的学生只要不是太水,简历好好让已经在 flag 大公司里的人给改改都能拿到面试,拿到面试后面就看造化了。
@guanghe123 可以出去读个 master,有个 top10 学校的就能拿面试了,到了面试就看个人造化了。 |
68
helloworld000 2018-12-02 07:30:37 +08:00 1
@justyy 内推也只是帮你拿到面试,后面还是得靠自己。除了 coding,亚麻是非常看重 principle leadership 的,你下次好好准备下这个应该就可以
https://zhuanlan.zhihu.com/p/43194520 https://www.jianshu.com/p/c417bf539a61 |
69
justyy 2019-02-13 23:43:15 +08:00
@helloworld000 Thank you. Noted...
|
70
helloworld000 2019-04-26 05:01:14 +08:00
@justyy 不过我感觉即使去了伦敦 amazon,package 和生活不一定有你在 cambridge 过的爽啊。。。
|
71
justyy 2019-04-28 16:25:19 +08:00
@helloworld000 对的,现在在剑桥很爽。955,下午 4-5 点下班前 洗澡喝茶,周五中午公司还有足球,很爽。
|
72
pengliheng 2019-05-13 09:58:59 +08:00
你专跳 easy 的来刷, 难刷的马上跳过, 看一眼想不出答案的立马看答案. 看一眼答案还想不出,直接放弃, next one.
我觉得刷到 300+可以再看看..... |
73
feilong569 2019-08-29 10:14:46 +08:00
你这篇文章,写出了很多程序员的心声。大多数程序员(包括我)对算法都是内心有一种恐惧。每次刷题,都是被逼到极点了。
|
74
beizhedenglong 2019-11-05 23:59:00 +08:00
楼主现在啥状态了
|
75
realkenshinji 2019-12-09 14:38:00 +08:00 via iPhone
@askfilm 国内刷题?你投投国外的公司就知道了,稍微大一点的没有不面算法题的
|
76
realkenshinji 2019-12-09 14:43:09 +08:00 via iPhone
@justyy 没错,但是大佬你刷的每一个题都铸就了你坚实的基础
|
77
kaiak 2020-01-02 05:50:25 +08:00 1
@justyy 额.. 我不知道新的 CV 有没有改.. 但是你这一版里面的 Thesis Title: Chinese Chess 写成了 These Title: Chinese Chess.. 又或者可能是我理解错误
|
80
letv 2020-04-06 14:01:42 +08:00
楼主现在咋样了呀
|