Google某前员工Lucida在文章《白板编程访谈——Why,What,How》当中这样写道:
程序员可以被分为两种:
1.先确认前条件/不变式/终止条件/边界条件,然后写出正确的代码
2.先编写代码,然后通过各种用例/测试/调试对程序进行调整,最后得到似乎正确的代码
保守估计前者的开发效率至少是后者的10倍,因为前者不需要浪费大量时间在 编码-调试-编码 这个极其耗时的循环上。通过白板编程,可以有效的判定出面试者属于前者还是后者,从而招进合适的人才,并把老油条或是嘴遁者排除在外。
从硅谷名企Facebook、LinkedIn、Amazon、Google到国内的阿里、腾讯、百度……各大IT公司都在用白板编程题目来考核程序员的开发效率和编程思路。
LeetCode网罗了海内外名企白板编程题,成为最大的程序员面试题目OJ(Online Judge)平台,相对其他OJ平台,它的优势十分明显:
通过刷LeetCode来掌握编程技能,已成为程序员
获取企业密钥
的不二法门,除企业面试的原因之外,还有一些理由让程序员愿意与LeetCode纠缠一生:
CS(Computer Science)初学者:
普通程序员:
-
锻炼
脱离IDE白板写代码
的能力,更多考虑边界问题、时间空间复杂度
-
随着LeetCode题库的不断扩充,加深对CS中
经典数据结构
的深刻理解
-
不断简洁你的代码,
在复杂度与可读性中做到最优和平衡
-
培养
解决问题的思维能力,
如何去思考本身也是一个需要不断学习和练习的技能
资深的程序高手:
那么想要成为或已经是程序员的你,刷过LeetCode了么?又是怎样刷题的呢?
LeetCode目前已收录600+面试题,据不完全统计,一名普通程序员正常情况下刷完全部题目需要3-4个月,他们讲述了自己的刷题方式和感受:
第一遍为逆向背诵,消耗时间还不上道;
第二遍思路开始清晰,但并未参透其中奥妙;
于是有了第三、四、五遍……
最后终于提交了正确答案,却只beat百分之几的人,
跑去论坛发现别人用你1/4的代码就解决了,
这不是刷题次数还太少,也不是编程基本功不扎实,
而是解题思路不够直接。
明有科举八股,今有LeetCode
八股定格式却取文采心意
LeetCode定题目但重思维逻辑
刷题是漫长的路,但不是题海战术
刷题的核心是要有策略、能总结
据众多以刷题为日常的LeetCoder的经验分享,我们归纳出三大高效刷题姿势:
1.分