有戏

 找回密码
 立即注册
简历下载
搜索
热搜: 活动 交友 discuz
查看: 709|回复: 0

真的不是“别人就能想出算法,而我却绞尽脑汁,百般尝试也不得其法”,而是你绞的不够

[复制链接]

1000

主题

1002

帖子

25万

积分

论坛元老

Rank: 8Rank: 8

积分
251951
发表于 2015-1-17 13:36:30 | 显示全部楼层 |阅读模式
去年的6月份,是我刷算法和数据结构题目的第5个年头,决定写一本与之相关的书籍,这种欲望是逐渐强烈的,最后强烈到觉得自己可以承担裸辞的一切后果,于是就从百度辞职,开始了一整年的写书人生。今年9月,我写的《程序员代码面试指南--IT名企算法与数据结构题目最优解》出版了,激动的好几天没睡,一路走来觉得好辛苦。现在刚刚重新开始了程序员生涯。

看到这个问题,我觉得特别想分享一下我这本书的自序,绝不敢说自己是大牛,因为见过的牛太多了。只是觉得感触很深而已。

=========================================================

《程序员代码面试指南--IT名企算法与数据结构题目最优解》

自序

左程云

我能出书挺意外的。

在6 年前的某一天,虽然我早就知道想进入那些大公司要靠“刷”代码面试题来练习编写代码的能力。可是这一天却不止如此,我突然有了心情去看代码面试题长什么样子。于是收集了代码面试的题目,越深入,我越有一种恐慌的感觉,因为感觉自己什么都不行啊,对一个归并排序(Merge sort)写出完整的代码都感觉挺费劲的,面对这个冯·诺伊曼发明的排序算法,我真有底气说自己是计算机专业的学生吗?这种打击并没有持续太久,因为爱耍小聪明的人总会特别自信。我决定开始认真面对“刷”题这件事,但那时我根本不知道我即将面对什么,更不要谈有写书的念头。

我把课余时间利用起来,心想:不就是“刷”题吗?别人能写出来,咱也能写出来。起初的心态是我不服,我就想告诉自己能行。过程虐心是肯定的,经常半夜因为看到一个时间复杂度特别低的算法自己真的不能理解而沮丧地睡不着觉。当时觉得找不到什么资料能彻底让我明白,书上讲得太粗浅,网上的太散乱,代码写得看不懂。起初我“刷”题的时候无数次地想放弃,因为觉得这些都是什么玩意儿!我为什么放着好好的日子不过,去找这种罪受?可是我又不甘心,虽然我不懂很多解法,但是它们真的很有意思。

我将能买到的所有相关书籍上的所有题目全都研究了一遍,不管是中文的还是英文的,我都硬着头皮“啃”。写完每道题后,我都和书上的方法进行反复对比。“啃”完了五六本书之后,距离我刚开始“刷”题已经过去16 个月了。写书?别逗了,才刚看完啊。

“年轻人总会找借口说这个东西不是我感兴趣的,所以我做不好是应该的。但他们没有注意的是,你面对的事情中感兴趣的事情总是少数,这就使得大多数时候你做事情的态度总是很懈怠、很消极,这使你变成了一个懈怠的人。当你真正面对自己感兴趣的东西时,你发现你已经攥不紧拳头了。”时常想起本科时的毕业设计指导老师——高鹏义老师说的这句话。说得对!对一个东西,如果你没有透彻研究过,不要轻易说它不精彩。这不是博爱,而是对自己认真。

“刷”题代码达到4 万行的时候,我基本上成了国内外所有热门“刷”题网站的日常用户,此时我确认了一件事情,今天的代码面试指导真的处在一个很初级的阶段,这种不健全是全方面的。

例如:

经常看到一篇文章前后的语境是割裂的,作者经常根据之前的一个优良解法提出更好的优化方式,但整篇文章都不提之前的解法是什么。这就导致初学者根本无法看懂;

几乎所有的书籍都忽略例子带来的引导作用,甚至还有不少书籍在阐述一个解法的时候只写伪代码,这就使得读者在看懂意思和自己真正能写出代码之间其实还有很多的路要走;

代码面试题目的特点是“多”、“杂”、“难”,从着手开始学习到最终达到自己想要的效果之间,自己对自己的评估根本无从谈起。“慢慢练吧,学海无涯”成为主要的心态,这就难免会产生怀疑的情绪;

看见一道新的面试题时还是会无从下手,因为之前的学习无法做到举一反三,对自己做过的题目缺乏总结和归纳;

难道“刷”题真的只适合聪明人玩?我不这么看,既然大多数内容处在有待商榷的地步,那我就去学习原论文吧。

当时一个人在国外,记得在初冬的一个下午,“刷”题已经两年之久,快吃晚饭的时候,我突然想起自己忘了吃午饭,就冲出家门去觅食。站在7-11 门前的广场上,我拿着1.5美元的热狗和75美分的咖啡,微温的阳光撒在眼睛里,远远地望着即将消失的一天。我停下来,把咖啡放在斑驳的石头台子上,手里的热狗挺好看,香肠和洋葱都挺新鲜,清冷的空气吹过来,却让我的心绪更乱。旧金山的天空五彩斑斓,让漂泊者头晕目眩。哭得跟个鬼似的我除了想家,哪里敢想自己会出书呢?

当我意识到在网上很难搜到新鲜的题目时,我已经换了两家公司,反复实现了600 多道题目,关于刷题写了差不多10 万行代码。原来只是为了找份工作而“刷”题这一初心早就忘了,变成了兴趣并坚持了这么久,我自己也感到意外。更奇怪的是,我已经完全乐在其中,同时交流欲望越来越强,时常和同事们展开这方面的讨论。发现很多书上的解法不是最优,很多题目其实和同事们讨论的做法更好,发现高手特别多,但好像都懒得动笔。

有一天,我看到自己写的题目,想到自己那些抓心挠肝的日子,突然觉得要不出书吧?我已经离不开这种感觉了,如果这不是真爱,那什么才是呢?这不是一个励志的故事,是一个爱“刷”题的人决定把很多最优解讲出来,就这么简单。

====================================================

所以,真的不是“别人就能想出算法,而我却绞尽脑汁,百般尝试也不得其法”,而是你绞的不够。

大家好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|有戏 粤ICP备2020111303号

GMT+8, 2025-12-6 12:24 , Processed in 0.073739 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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