文末包邮送书!!!
回顾过去一年,我们耳熟能详的大厂纷纷爆出裁员,虽然最终都被官方辟谣,但……
互联网寒冬之下,所有公司都勒紧裤腰带过活,这种背景之下,如果你不努力、不学习,想去大厂,凭什么?
请大家原谅我的直白,当前,处在IT人才的买方市场(供过于求),而且未来几年应该都是这样。大部分企业在招聘时会从很多优秀的人中选出更优秀的人,而不是在一群普通人中选择优秀的人。如果你不够优秀,可能在筛选简历环节就被淘汰。而企业在筛选没有太多工作经验的应届生时,最常用的方式就是解决算法难题。
所以我最终很直白地告诉这位同学,该刷的题还是得刷,该记的知识点还是得记,如果目标是一个好的offer,那就更是如此。
但如果放开这一切,我们还是要思考:为什么学算法?为什么学数据结构?
“面试造火箭,工作拧螺丝” ,我知道很多人都是工作四五年,别说红黑树,就连普通的二叉树都没手写过。这种状态正常吗?正常。但不写不等于不用。就算真的不用,也不等于不需要知道怎么用。
其实,很多同学学习数据结构的方法是有问题的。就这位同学而言,至少背代码是绝对错误的。学习算法与数据结构应该契合一些应用场景,自然而然地理解和记忆,而不是死记硬背。
比如说对于红黑树,我们需要知道这是一种常用的平衡二叉树(或者说特殊的平衡二叉树)知道其对于查找、 插入、删除的复杂度都是log(n),其中 n 是说树中元素的数量。对于Java栈,你可能还需要知道 Hashmap 为什么选用红黑树来实现;要知道红黑树可以在一些非实时任务调度中高效公平地调度任务;要知道其所有的应用,都是围绕着“平衡”二字展开的,这才是数据结构的核心。
至于实现的细枝末节,知道固然好,但没必要逼着自己记忆,因为在我们的职业生涯里,绝对不可能出现让你手写红黑树的节点删除的场景。
但你需要知道为什么创造它?为什么引入它?它有什么特殊的?它适用于哪些场景?不适用于哪些场景?对于不适用的场景有什么替代方案?这样才能真正理解算法与数据结构。其实,除了算法,对于别的知识也是这样。只是算法更容易在面试时候展。
我们学习学习操作系统的目的难道是要造出来一个操作系统吗?显而易见并不是。学习操作系统是让我们了解为什么会有OS?如果没有OS又会是什么样子?它怎么样做任务调度?怎么样做进程管理?怎么样对可用的硬件做成抽象?死锁是如何产生的?内存是怎么管理的?文件系统是如何实现的?通信指谁与谁的通信?这些都不是为了应付考试,而是了解事务的本质,这才是核心。
我们很可能不会完美地掌握所有知识,但会在学习的过程中发现自己的知识盲点,进而刻意提高,而不是陷入“学不会—理解不了—记不住”的死循环。当然,对于要找工作的人,可以针对面试中的问题集中学习,但面试过后,总归是要将知识落地,才能体现你的最终价值。不要说什么“面试造火箭,工作拧螺丝”,疲于应付拧螺丝的人,只能一直留在拧螺丝的位置上;而想法设法把“拧螺丝”这件事做好的人,才有机会去造火箭。
说回算法学习,最重要的就是构建策略。假如我们遇到一个问题,让我们找到一个国家的铁路网中两个城市的最短路径。对于这种问题,大家肯定首先想到的就是使用迪杰斯特拉算法。但是如果问题变成“换乘火车次数少于N次,寻找最短路径”呢?这时不能直接套用最短路径的算法。只是改变了题中的条件,就可以让整个题目走向另一个逻辑,这就需要大家对原算法的原理和执行过程特别了解,并且读懂题意。
所以,我将以往刷过的经典算法题进行了整理,并抽象出这些算法的底层逻辑,出版了这本《图解算法小册》。
本书采用全彩印刷,对于每一道题目,都给出了详细的图解过程。
不仅如此,我也在书中给出的算法学习的常见问题与解题方法。
如果你觉得只有这些,那就小看我了,为了方便读者随时练习,比较不同解题方法之间的差异,我还贴心地为大家准备了在线学习平台。
所以,你还等什么?快来跟我一起学习算法吧~~~
限时五折,快快扫码抢购吧!
福利来喽 ~
#留言有礼# 说说你对算法的看法?或者一些宝贵的学习经验,来留言区一起聊一聊~
>>> 活动参与 活动截止之前我们会抽取幸运小锦鲤获得《图解算法小册》纸质书籍一本,包邮到家。
特别申明:
1、一位用户1个月内只能有1次获奖机会,让更多粉丝受益活动才更有意义
2、每一位用户只有1次留言机会,不允许重复留言~
请大家记住这三个1哦
>>> 活动时间 活动截止时间:2023 年 06 月 30 日 16:00 整
兑奖截止时间:2023 年 07 月 01 日 16:00 整
点击阅读原文,查看本书详情!
文章引用微信公众号"脚本之家",如有侵权,请联系管理员删除!