资讯专栏INFORMATION COLUMN

前端该如何准备数据结构和算法?

simon_chen / 2257人阅读

摘要:很多前端同学在看到数据结构和算法后会有一定的抵触心理,或者尝试去练习,但是被难倒,从而放弃。本文选择的数据结构和算法的类别均是出现频率最高,以及应用最广的类别。面试这是非常现实的一点,也是很多前端学习数据结构和算法的原因。

一、导读

据我了解,前端程序员有相当一部分对“数据结构”和“算法”的基础概念都不是很清晰,这直接导致很多人在看到有关这部分的内容就会望而却步。

实际上,当你了解了“数据结构”和“算法”存在的真正意义,以及一些实际的应用场景,对它有了一个整体的认知之后,你可能会对它产生强烈的兴趣。当然,它带将带给你的收益也是相当可观的。

很多前端同学在看到“数据结构”和“算法”后会有一定的抵触心理,或者尝试去练习,但是被难倒,从而放弃。

这很大一部分原因是因为你还不够了解学习他们的意义,或者没有掌握合理的练习方法。

实际上,当你有了一定的目的性,并且有了合理的练习方法,再来学习这部分内容会变得得心应手。
å
在本文中,我就来分享一下我学习“数据结构”和“算法”的一些经验和方法。

后面我也会针对所有常见的数据结构和算法分类,进行全方位的梳理。

1.1 类别说明

数据结构和算法的种类非常之多,拿树举例,树的种类包括:二叉树、B树、B+树、Trie树、红黑树等等,本文只选择了二叉树。

对前端来讲,没有必要对某些比较偏的类型和解法多做了解,一是浪费宝贵的时间,二是应用的不多。

本文选择的数据结构和算法的类别均是出现频率最高,以及应用最广的类别。

1.2 题目说明

另外,做题时找对典型题目非常重要,可以让你更快速更高效的掌握知识,本文后面也会给出每种类型的典型题目供大家参考。

题目来源:

awesome-coding-js:我的前端算法开源项目,包括我做过的题目以及详细解析

leetcode

剑指offer

另外,我会在后面长期更新一个前端算法的专栏,对每类数据结构和算法进行详细的讲解,敬请期待。

二、为什么要学习数据结构和算法

在学习某块内容之前,我们一定要首先明确为什么要学,而不是盲目的跟风。

这将更有利于你从学习的过程中获得收益,而且会为你的学习带来动力。

首先明确一点,学习数据结构和算法不一定就是记住二叉树、堆、栈、队列等的解题方法也不是死记硬背一些题目,如果你仅仅停留在这样的表面思想,那么你学习起来会非常痛苦。

2.1 解决问题的思想

计算机只是一个很冰冷的机器,你给他下发什么样的指令,它就能作出什么样的反应。

而开发工程师要做的是如何把实际的问题转化成计算机的指令,如何转化,来看看《数据结构》的经典说法:

设计出数据结构, 在施加以算法就行了。

所以,很重要的一点,数据结构和算法对建立解决问题的思想非常重要。

如果说 Java 是自动档轿车,C 就是手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也不能造车。如果你对这两件事都不感兴趣也就罢了,数据结构懂得用就好。但若你此生在编程领域还有点更高的追求,数据结构是绕不开的课题。
2.2 面试

这是非常现实的一点,也是很多前端学习数据结构和算法的原因。

一般对待算法的态度会分为以下几类:

GoogleMicrosoft等知名外企在面试工程师时,算法是起决定性因素的,前端工程师也是一样,基本是每一轮都会考察,即使你有非常强的背景,也有可能因为一两道算法答的不好而与这样的企业失之交臂。

第二类,算法占重要因素的,国内的某些大厂在面试时,也会把数据结构和算法作为重要的参考因素,基本是面试必考,如果你达不到一定的要求,会直接挂掉。

第三类,起加分作用,很多公司不会把数据结构和算法作为硬性要求,但是也会象征性的出一些题目,当你把一道算法题答的很漂亮,这绝对是加分项。

可见,学好数据结构和算法对你跳槽更好的公司或者拿到更高的薪水,是非常重要的。

三、如何准备

了解了数据结构和算法的重要性,那么究竟该用什么样的方法去准备呢?

3.1 全方位了解

在学习和练习之前,你一定要对数据结构和算法做一个全方位的了解,对数据结构和算法的定义、分类做一个全面的理解,如果这部分做的不好,你在做题时将完全不知道你在做什么,从而陷入盲目寻找答案的过程,这个过程非常痛苦,而且往往收益甚微。

本文后面的章节,我会对常见的数据结构和算法做一个全方位的梳理。

3.2 分类练习

当你对数据结构和算法有了一个整体的认知之后,就可以开始练习了。

注意,一定是分类练习!分类练习!分类练习!重要的事情说三遍。

我曾见过非常多的同学带着一腔热血就开始刷题了,从leetcode第一题开始,刚开始往往非常有动力,可能还会发个朋友圈或者沸点什么的

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109994.html

相关文章

  • 论一个前端工程师如何快速学习,成长。准备自己的35岁 【-原创精读】

    showImg(https://segmentfault.com/img/bVbw3tK?w=1240&h=827); 前端工程师这个岗位,真的是反人性的 我们来思考一个问题: 一个6年左右经验的前端工程师: 前面两年在用jQuery 期间一直在用React-native(一步一步踩坑过来的那种) 最近两年还在写微信小程序 下面一个2年经验的前端工程师: 并不会跨平台技术,他的两年工作都是Reac...

    RdouTyping 评论0 收藏0
  • 前端秋招面试总结

    摘要:前言秋招宣告结束,面试了接近家公司,有幸拿到,感谢这段时间一起找工作面试的朋友和陪伴我的人。一定要提前准备好,不然面试官叫你说遇到的难点,或者直接问问题时可能会懵逼。 前言 秋招宣告结束,面试了接近20家公司,有幸拿到offer,感谢这段时间一起找工作面试的朋友和陪伴我的人。这是一段难忘的经历,相信不亚于当年的高考吧,也许现在想起来高考不算什么,也许只有经历过秋招的人才懂得找工作的艰辛...

    Gu_Yan 评论0 收藏0
  • 前端秋招面试总结

    摘要:前言秋招宣告结束,面试了接近家公司,有幸拿到,感谢这段时间一起找工作面试的朋友和陪伴我的人。一定要提前准备好,不然面试官叫你说遇到的难点,或者直接问问题时可能会懵逼。 前言 秋招宣告结束,面试了接近20家公司,有幸拿到offer,感谢这段时间一起找工作面试的朋友和陪伴我的人。这是一段难忘的经历,相信不亚于当年的高考吧,也许现在想起来高考不算什么,也许只有经历过秋招的人才懂得找工作的艰辛...

    Scholer 评论0 收藏0
  • 【荐】令人心情愉悦的一次面试总结

    摘要:中四种修饰符的限制范围。数据结构和算法树快速排序,堆排序,插入排序其实八大排序算法都应该了解一致性算法,一致性算法的应用的内存结构。的部署方式,主从,集群。八大排序算法一定要手敲一遍快排,堆排尤其重要。 前言 15年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有...

    20171112 评论0 收藏0
  • 一个两年Java的面试总结

    摘要:数据结构和算法树快速排序,堆排序,插入排序其实八大排序算法都应该了解一致性算法,一致性算法的应用的内存结构。如何存储一个的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。 前言 16年毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,...

    anRui 评论0 收藏0

发表评论

0条评论

simon_chen

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<