前端开发者-到底学不学数据结构与算法?

5,715 阅读9分钟

阅读完本篇大概需要8分钟.

一、对于前端工程师算法真的重要吗?

很多人可能不知道,我最开始不是做前端的,我是一名iOS开发者,2014年左右入得坑,那时候iOS是比较火热的,随便会搭建界面,出去都是10K起步的,导致很多培训机构跟风,培养了一大批0基础入学,4个月出来就是2年工作经验的大神。由于每个月进入市场的人数剧增,导致市场快速饱和,最后的结果我相信很多人都知道,市场行情就是这样,供需关系失衡的时候,就是最危险的时候,那么对于996的程序员们来说,如何才能不会被市场淘汰呢?

回到主题,前端工程师算法真的重要吗?

其实抛开语言本身对于程序员来讲,无论你是做什么开发的,前端也好,后台也罢,数据结构和算法是最最根本的,因为数据结构+算法 = 程序,我想很多人应该明白这个道理,但是,你有没有和我有同样的感觉,工作中貌似用的并不多,很多算法那已经被高级语言封装好了,例如JS中的过滤filter,排序sort以及很多关于字符串,数组的操作等等这些,换个角度说,其实我们每天都在使用数据结构和算法来垒代码,只不过,我们每天是站在巨人的肩膀上搬砖。

那么对于程序员来说,数据结构和算法对我们来说影响最大的地方在哪里?

我个人觉得代码是对一件未知事物通过自己思想表达来解决的过程,语言只不过是一个载体,就好比说话一样,不同语言表现形式不同,但最终表达出来的意思是一样的。换个角度说,数据结构和算法就是你思维认知的启蒙,因为他已经为你提供了解决问题的思路的大方向,你只要按照他的方向去走,指定不会错,毕竟这些东西都是前辈们总结出来的,能经得起时间的验证,所以我觉得数据结构和算法非常重要,因为他关乎的是你解决问题的思维方式,关乎你写出来的代码的质量和效率,所以我突然意识到,自己为什么踩过那么多的坑,工作了那么久,还是没有总结出自己的那一套适合自己垒代码的思维方式,所以我想通过算法来刻意训练下自己,看能否改变下自己的思维方式,希望自己能有个更大的提升。

二、数据结构和算法真的很难吗?

我有个朋友非计算机专业的,也是前几年搭上了移动开发这艘火箭的,今年年初开始他买了很多有关数据结构课程逼迫自己每周抽时间学习,算是一节不落的跟完了整期直播课程,前几天我和他交流,我问他,非计算机科班出身,学数据结构累不累?他直接告诉我,确实很累,学习本来就是个痛苦的过程,因为每个人对未知事物都会有畏难心理,但是换个角度,抛开天赋来讲,每个人的后天努力都是和你的成果成正比的,你多一份努力,自然会多一些收获,只不过每个人的认知能力,理解程度不同,对一些事物的接受程度也会有所不同,但最终只要你敢去直面困难,都是能克服的,毕竟方法永远比困难多,考不了清华北大,咱考个985,211也不错嘛,对不啦!所以天下无难事,只怕有心人,所以面前的这位大侠,要努力哈,毕竟现在的年轻人,都很难!!

三、对IT行业变化的一些思考

培训机构在国内是神一般的存在,因为那里是零基础小白入门IT行业走向大神最快的方式,也是市场供需关系的调节体,市场哪个技术火,哪个方向火,总会有一批头部梯队察觉,带头跟风炒一波,毕竟这些是进大厂的必备敲门砖!最近具我观察,去年开始培训机构开始出有关数据结构和算法相关的课了,线上学习的较多,当然学习的人数也很多,因为人工智能、5G已经在路上了,而人工智能最基本的就是算法,所以他们对前沿技术是非常敏感的。对于在职人员来说如果你能早点觉察到,这也是机会,免得过几年被淘汰掉,危机意识一定要有!

四、数据结构和算法如何学习和训练?

这个问题是仁者见仁智者见智的,每个人的学习方式不同,对新知识的接受和理解程度不同,自然没有统一的标准答案,但是我个人觉得,自身心态一定要先要转变,很多人开始学数据结构和算法都是从入门到放弃,包括我在内,目的或许没想到这玩意能提升自我垒代码的思维方式,觉得会解算法题,大厂面试可以顺利通过,能混个大厂的职位,也是很棒的,毕竟大厂对数据结构和算法是必考,我个人觉得首先得是意识形态转变,硬技能驱动软技能,毕竟程序员是拿硬技能吃饭的,从根本着手,扎实的编码能力,牢固的基本知识,大平台不可能不喜欢你的,这点是非常确定的。

回到问题,学习数据结构和算法什么方式最好?

以下是我总结的几点,希望能对你有帮助

  • 看书:枯燥乏味,代码零散,有些东西用书面语描述起来晦涩难懂,有的书籍连贯性不够好,对于没有基础的人来说,会让你觉得,看完了好几章后,依旧似懂非懂,一头雾水。但是对于有知识基础的人来说,巩固和提升,看书是一个很好的方式,毕竟权威的书籍,知识体系结构还是很不错的。
  • 看博客:博客质量层次不齐,很多博客都是互相抄袭,没头没尾,每个人的认知和理解不同,写的东西自然也不同,但是利用碎片化时间来看博客,也是一种很好的方式,建议看那种连贯性的博客,知识体系完善的,毕竟一个完整的博客能让你的思路不会混乱,当然我也会超这个方向去努力,输出的博客也是连贯性的,当年我的CSDN写iOS博客的时候也是从最基本的C语言UI搭建一步一步开始的。
  • 听音频:没画面的东西,我觉得还是算了,听完就忘记了,时间成本高,建议碎片化时间可以利用起来。
  • 看视频:我个人觉得一种很好的学习方式,唯一缺点是有点时间成本高,好在很多平台可以倍速播放,能解决掉时间成本的问题,但是一定要看业界有成就的人出的课程,站在巨人的肩膀上你会越来越强大!
  • 刷leetcode:这个是必须!但是要分门别类的来刷,从简单开始,多总结,多思考,而不是只是为了刷题而刷题,哪怕每周一道,要理解里面的原理知识点,这个比你刷一百道都有用,毕竟知识是一通百通嘛。

四、为什么要开始每周一道算法题?

最近我参加了一个学习课程,具体课程就不透露,免得有广告嫌疑,预计9周左右,每周一节,每节一道算法题,预估我也要跟着写9篇左右的菜鸟学习总结和心得体会,昨晚上了第一节课,听得我也是比较爽的,今天一大早就起床想总结下内容,做个记录,也希望能通过文字的形式对面前的你有所启发。

小结

看完上面的内容,不知道面前的你是否有触动,也欢迎各位留言讨论和互动,如果我的分享对你有所启发,顺手点个赞,让更多小伙伴看到,也回应我一下哈!

最近的一些分享计划,希望对你有帮助:

Vue系列电商项目分享

🎉 Vue构建大型单页面电商应用 开源啦!点我看源码🚀🚀

从本周开始力争每周分享一道算法题

最后感谢您的关注!

希望我的分享对你能有帮助,有不正确的地方也希望得到您的勘误!本人将不胜感激,另外如果你想获取前端整期学习视频和资料扫一扫下面的二维码,回复学习即可,也希望在前端进阶的路上,我们一起成长,一起进步!