最近有个朋友问我,为什么会选择写数据结构与算法相关的技术博客。在我看来这里面其实有两个问题: 1、为什么要写博客;2、为什么是算法。
1.为什么要写博客?
有段时间遭遇了一些不好的事情,压力很大,间歇性失眠,天天满脑子胡思乱想充满负能量,变得自己都不认识自己了。很长一段时间里我会把这些不好的事情都归结于外在因素,怨天尤人。最坏的时候身心俱疲,易怒,甚至因此还生过一场不小的病。经历过这次生病之后,我慢慢冷静下来,也意识到过度的抱怨和吐槽没有意义,它改变不了任何现状甚至会起到负作用...我开始进行调整,对自己过去二十几年的经历进行反思和总结,寻找自己的问题。人是个很奇怪的生物,很多简单的道理能脱口而出但是落到自己的身上却很难去实践,有些简单的道理可能等到明白的时候人生匆匆已过数十载。曾经我也看过很多文章有写关于人这一生最遗憾的事情,其中有两个出现频率比较高,分别是:后悔年轻时不够努力;后悔能做自己想做的事情。可以问自己几个问题,你是否还记得年少的自己曾经许下的心愿?有没有为此付出实践哪怕一天?你是否有一个地方一直很想去却没能去成?有没有一个人你一直很喜欢却从来没有表白过?再想象一下若干年后尘归尘,土归土,回顾过往有一生有没有一件事只要一想起就会发自内心的欢喜,有没有一件事能满脸自豪的讲给你子孙后代听。正是这样不断的灵魂拷问让我第一次比较全面的认识到了自己。原来终究我也只是个凡人,纵使骨子里再年少轻狂也改变不了平庸的事实。我能接受这样的自己吗?这样的问题也曾问过自己无数次,发现每一次的结果都一样,原来充盈于内心深处的情感早已给出了选择!也算幸运的是,在意识到自己的平庸之后,我开始认真的思考自己到底想要什么以及要走怎样的路。写博客是我一直想做也一直没能做的事情,毕业工作以来一直很想输出分享一些比较有用的内容。也一直没有付出实践,究其原因基本都是被工作和生活的琐事安排得满满当当,没时间去整理和输出。(容我给自己的懒惰找个台阶...)
2.为什么是算法?
- 兴趣
第一次接触到算法是在大学时期,刚开始学习数据结构与算法课程的时候,看到一道很简单的算法题,多个数求和。依然记得第一次理解求和思想并学会用代码写实现标准答案时那种发自内心快乐!那个时候就对算法有了一些兴趣。看看这个订阅号的logo你会发现其实它是一个符号“Σ”,Σ(读sigma)符号正是求和的意思,而这个logo也正是我根据自己算法启蒙的经历设计的0.0(见下图)
- 程序员普遍缺乏算法素养
从近两年国内诸多公司的战略调整来看,整个国内互联网的环境都在朝着一个比较好的方向发展,简单来说就是职业化和精英化。越来越多的公司开始更加注重基础,注重专业素质。而随着时代进步和发展,精英化也必然是大势所趋。工作以来,有一个深刻的体会就是很多从事互联网行业技术相关的开发人员在计算机编程基础知识方面都极度欠缺,最明显的表现就在于数据结构与算法相关。很多工作多年的开发工程师甚至高级开发工程师都不具备基础的算法知识(我的从业经验,仅代表个人)。这实际上是一件细思恐极的事情。这会影响到什么?最典型是没有算法思维和意识,没有对项目精益求精的追求。且不谈在复杂项目核心业务的算法设计,亦不谈性能效率优化层面,最简单的表现在当下精英化的趋势下可能连工作面试都会受到限制。然而这些重要性在大学校园里几乎不可能有人会提醒或者引导,工作初期的我也曾因此踩过不少坑。
- 非科班出身,算法入门难
理性思考过国内程序员普遍缺乏算法素养的根本原因。对于跨行业跨专业进入软件开发行业的人来说算法入门的难度相对比较大,因为没有接受过系统教育,这不难理解。但是对于计算机专业科班出身的人而言即使受过系统性训练也只是比较基础,远达不到工作的标准。(也都源自我的从业经验,仅代表个人)
也正是基于以上这些,我决定了开算法类博客。希望通过自己的分享能起到改变和促进作用,帮助到有需要的人,当然在这个过程自己也能巩固和学习很多知识。
分享一下感受
其实在之前的有一篇博客中也有说过,这里忍不住再分享一下:
不知不觉,从开始发算法博客到如今已经过了半月,在这个过程中其实也遇到过很多困难,也一度想过要放
弃,深刻体会到没有任何一件事情是可以简简单单敷衍过去的,特别能体会那些工作之余还能十年如一日坚
持技术文章创作的作者们的不容易。不过尽管辛苦也有很多收获,比如精益求精,更追求更完美,又比如收
获了很多技术以外的知识,认识了更多的朋友,视野也更加开阔。犹记得第一次投稿成功,第一次文章被大
的专栏收录,第一次有人点赞,第一次有粉丝关注,甚至第一次某平台粉丝破百的时候内心的喜悦... 未
来,希望自己能把算法博客当成爱好一直写下去,也希望能这些文章能给有需要的朋友带来实际的帮助。在
后续博文推送过程中,不排除也有些疏漏或者思维理解上的误区,欢迎交流或批评指正。
再回过头看之前的总结基本感受还是一样的。
博客说明
关于大纲
主要划分为基础大纲和进阶大纲。目前一共只外发了10篇左右算法博客,内容相对比较少,等初阶基础类型基本覆盖齐全,相对系统的时候我会统一整理一篇基础大纲,大概一个月内完成。基础大纲之后才会有进阶性的算法题博文推送和进阶性大纲。穿插在基础大纲和进阶大纲内也会有一些知名互联网公司的比较经典的算法面试题,除了算法相关也会插入一些数据结构相关的文章。
关于博客的内容
- 关于选题和题解
所有题型都是经过精心挑选的。基础大岗都是比较典型的能代表某一种算法思想的类型,进阶大纲会对这些算法思想进一步实践强化理解。算法相关的题解,附算法思路说明,伪代码说明以及实际编码。算法效率都是100%级别(leetcode评测击败100%),基本上保证每一题都是最优解,每个题解都附有测评截图。也有一些题目为了更好的展示不同的算法思想会采取一题多解的形式。
- 关于彩蛋
彩蛋的设计是源算法经验中积累的一些有益于提升算法效率的小技巧,一般会以累计的形式,累计足够4~5个彩蛋发一篇关于彩蛋的说明。有些彩蛋涉及到计算机编译原理相关的知识由于主题和篇幅关系暂时不会太过深入研究分析,但是会有实际数据说明的demo。
关于博客的改进建议
一直以来也希望以比较简单愉快的形式分享知识,然而知识的分享本就枯燥无味再加本人愚钝,目前还没找到比较好的方式,后续会努力做一些改进和尝试。如果你有好的建议,也欢迎交流~
也不排除可能博文中可能出现一些错误,一经发现欢迎批评指正,解题思路也会有千差万别,如果有比博文中更好精彩思路方法也欢迎一起交流。可以加个人微信Aeiric,也可以关注订阅号Aeiric(你没看错,是一样的名字)进行留言。或者发邮件到xujian2065@163.com
