【字幕】恋上数据结构与算法之01为什么要学习数据结构与算法
视频地址:请查看01为什么要学习数据结构与算法_哔哩哔哩_bilibili
同志们好,我是小码哥的mj李明杰。非常欢迎大家来学习链上数据结构与算法,从今天开始呢就由我来带大家一起来学习和掌握这个数据结构与算法啊。在正式学习之前我们先来看一下学前须知啊,首先第一个我们要了解一下我们为什么要学习数据结构与算法啊,然后我们这个课程呢又是采取什么编程语言来讲解呢?然后再介绍一下课程大纲和注意事项,最后再说一个关于课程的一个选择问题啊。
首先我们来看第一个问题,我们为什么要学习数据结构与算法呢?那说到这个数据结构算法,大家对它的第一印象可能是怎么样呢?可能是觉得它复杂深奥难学,其实之所以会这么认为呢,我觉得主要是因为没有找到适合自己的学习资料,对吧?其实任何知识点只要找对的学习资料和学习方法,我觉得都是可以学习和掌握的啊。
另外同学们也可能会觉得这个东西呢不常用,啊,因为在平时的开发过程中啊,好像不怎么用到数据结构算法对吧?比如说一个产品从开发到上线的过程中,好像压根就没有用到数据结构算法啊,好像我们不懂这个数据结构跟算法,也能出色地完成平时公司给我安排的任务啊,也能照样拿高薪啊对吧?
那么我为什么还要学习数据结构算法呢?其实有一个很重要的原因,那就是为了应对面试。
数据结构算法可以说是民企面试必考啊,也就是说国内外一线的啊大型互联网公司,他在面试的过程中多多少少都会问一些数据结构算法的这个题目啊,而且是规模越大的公司呢,它就越注重这个数据结构算法,甚至现在连中小型公司的面试啊都可能开始问什么呢?算法题了。
其实不管什么行业吧,为了筛选出更优秀的人才,随着这个时间的推移,那这个面试的难度肯定是会越来越高的啊。
那说到这里同学们可能会觉得很奇怪,唉平时工作中呢我们根本就好像用不到数据结构算法,那为什么面试的时候还会经常问呢?这不是很搞笑吗?甚至呢可能会觉得不公平,甚至觉得这种方法会误伤人才啊。
比如说有些人开发基金至少5年了,那技术实力呢业务能力的学习能力其实都很强,那公司给他安排任务呢他也能很出色的完成,但可能仅仅是因为他不会数据结构算法,那大公司就进不了对吧?
被大公司拒之门外,但其实呢它整体的综合能力可能会比大公司的一些人还要强,那这样的情况其实有很多,比如2015年home blue的作者去Google面试home,blue这个工具,相信很多同学应该都听过home blue是MAC平台的安装包管理工具,可以说全世界大大小小互联网公司的程序员都可能在用这个工具,那这个足以说明后不如作者的技术实力了吧对吧?
那肯定是很有实力的一个人,但是他却被Google拒绝了。
当时呢他就发了一条Twitter来吐槽,啊那这个图片就是他Twitter的这个内容上面写的什么意思呢?Google说我们90%的工程师都在使用,你写的碰不入,但是呢你却不能白板编成一个二叉树的翻转,所以请滚蛋吧,也就是说因为他没法手写一个二叉树的翻转,那这个时候Google就把他给拒绝了。
不过后来呢啊很多硅谷的大公司都抢着要他,所以啊大公司面试如果着重考察数据结构算法的话,确实会误伤一些人才,那为什么还要这么做呢?其实不管是哪个公司肯定都想招聘优秀的人才嘛,但是你在短短的几个小时的面试过程中,你想了解清楚一个人的话其实是真的非常困难的。
所以很多大公司招聘的第一步呢就是卡学历,比如说要求本科,要求硕士甚至是博士,因为从概率上讲,那高学历出现优秀人才的几率肯定也会大一点嘛,对吧?比如举个例子,一个是计算机硕士,他呢毫无开发经验,一个呢是大专学历,有至少三年开发经验,那这个大公司呢就很有可能会选择招聘这位硕士啊,因为大公司呢很多时候更看重的是一个人的长期潜力啊,就是长期的一个潜力。
如果你不会这个技术没有开发经验不要紧,他可以培训你,他愿意花时间培养你,除了通过学历来固定人才呢,那在面试的时候去考察这个数据结构跟算法,其实也是在短时间内考察一个人长期潜力的一个捷径,因为数据结构算法功底扎实的程序员技术实力、业务能力、自学能力一般都不会差。
还有如果我们问的都是平时工作中常用的技术点,那大家的答案其实都差不多,而且很多时候大家在面试前都会去背一些题目对吧?把这个题目背下来,那这样大家的答案都差不多,你怎么去区分这些人才呢?那算法题就不一样了,那这个没法背啊对吧?因为算法题的这个范围可大了,对不对?而且这考验的是一个人的功底和长期积累,所以通过算法题呢就可以将这个人才啊进行再次的这个区分,进而挑选出更优秀的人才嘛,所以大公司面试的时候考察这个数据结构跟算法不是乱来的,也是有一定的道理的。
总而言之呢如果你想进入更大的公司,数据结构算法肯定是你必须要掌握的。
那接下来我们再看一下数据结构和算法究竟用在什么地方,这个是什么东西啊?这个数据库对吧?比如说平时你用这个oracle,my sql,sqlite,不管是哪个数据库,它的底层肯定都用到数据结构了,比如说用到b树,用到哈希表等等这些数据结构。
唉大家可能会想平时我在用数据库的过程中,好像也没有用到数据结构算法,对,平时我们用数据库是不是直接用SQL语句就好了?如果你是想重新开发一套数据库,那必须要会数据结构跟算法了,对吧?而我们平时用的这些数据库绝大部分都是由大公司开发出来的,对吧?
所以大公司对数据结构算法的要求肯定是非常非常高的。
然后再来看一个应用啊,这个是一款游戏叫做梦幻西游,很多同学可能玩过啊,你看这是一幅地图,然后这个主人公呢想从这个长安城走到这个阴曹地府,对吧?那这个时候你会发现这个游戏就会帮他规划这个路线,从这个位置先走到这里,然后再走到这里,然后再走到这里对吧?帮他规划好这个路线了,那规划路线这种东西肯定也用到一些数据结构,比如说图对吧?
图这种结构,然后也用了一些算法,比如说最短路径算法,游戏开发里面肯定也是用到大量的数据结构跟算法的,然后这是什么呢?Block chain前阵子比较火的一个东西,区块链啊那这个是比特币,那区块链跟比特币它底层也是用到大量的数据结构,比如说用到了链表、二叉树、哈希函数等,然后人工智能arvr然后无人驾驶这些东西肯定都是基于数据结构跟算法的。
可以看出来数据结构跟算法真的是无处不在啊。
最后我们再总结一下啊,一开始我们提到唉在平时的开发过程中好像不怎么用到数据结构算法,其实是因为我们的很多开发任务呢都是直接使用各种第三方框架来完成的,实际上呢很多第三方框架内部呢又用到了大量的数据结构跟算法,所以啊如果啊你懂数据结构算法的话,那你就能更好的去阅读这些框架的源码,也能更能体会这些作者的设计思想,也能更好的让你使用框架对吧?
可以把这个框架的价值呢发挥到最大,而且你有没有思考过,为什么别人就能写出这么优秀的这个框架呢?其实不仅仅是开发第三方框架的时候要用到数据结构算法,你的工作过程中其实也是有可能要用到数据结构算法的。
比如说当你的用户量大到一定程度,比如说上百万上千万上亿用户的时候,这个时候你就要面临处理上百万上千万上亿条数据对吧?当你处理这些海量数据的时候,你怎么可能不用到数据结构算法呢?如果你是一直都没用过数据结构算法,有可能你做的一直都是小项目,当你进入更大的平台,更大的公司面对更多的这个用户量的时候,你肯定必然要用到数据结构算法,所以希望同学们以后再也不要去说数据结构不常用,数据结构没有用,这样的话说直接一点其实并非是用不上数据结构算法,而是你自己的层次还不够。
另外在计算机编程领域呢刚刚也说到数据结构跟算法的应用是无处不在的,比如说图像视频处理,数据库游戏开发、编译器、搜索引擎、arvr人工智能区块链,这些其实都用了大量的数据结构跟算法,如果我们的数据结构算法功底比较扎实的话,我觉得是能让我们站在更高的角度去思考代码的写出性能更高的这个程序,而且也能让我们更快速的去学习上手各种新技术,比如说刚刚提到的人工智能区块链,而且我觉得也能让我们打开一扇全新的大门,因为这样呢我们能进入更高级的编程领域,对不对?
那为什么有些人学新技术这么快呢?比如说这个区块链人工智能一出来很多人就已经嗯搞得很厉害的是吧?很精通了,那人家的数据结构算法功底比较扎实嘛,那学的快也是很正常的。
那今天呢我刚好又在朋友圈看到一个比较扎心的视频啊可以给同学们看一下,虽然它是个电视剧,但我觉得说的也是挺有道理的,那这个就是现实嘛,作为一个程序员,你的年龄已经很大了,我问你你学新东西有年轻人快吗?再说以你的性格又做不了管理层,我的怎么样是不是很扎心啊?
我看了,我觉得这个视频真的是很扎心哈,确实随着年龄的增长的话,我们的学习能力体力确实会有所下降,我自己现在都感觉真的是熬夜真的是熬不动了,所以我觉得真的是不要在应该努力奋斗的年纪啊选择安逸对吧?
我们学习跟积累其实都得趁早啊,而且只要你想在it路上走得更远,站得更高的话,我觉得数据结构跟算法肯定是必须要掌握的,既然迟早都要学到,那为何不从现在开始学呢?对不对?趁我们现在脑子还很灵活对吧?趁趁我们现在这个学习能力还跟得上,我觉得就把它给攻克嘛对吧?
从现在开始,而且我觉得这他真的是那种一次掌握终身受益的这个技术,比如说这这项技术肯定是伴随着我们整个程序员生涯了,而且都是有用的。
最后呢再给大家说一个小知识啊,这个Pascal这个编程语言可能很多同学听过啊,Pascal之父Nicklaus Wirth呢他曾经凭借一个公式就获得了这个图灵奖,什么是图灵奖?
图灵奖是算是计算机领域的这个诺贝尔奖啊,那什么公式呢?这个公式大家可能看过,算法加数据结构等于程序,可见算法跟数据结构确实非常非常的关键,对吧?凭借这么一个公式就拿到了这个图灵奖。
最后呢我再说一点题外话啊,其实早在2015年的时候,我就想推出这一类的课程了,但是因为种种原因呢一直没有推出啊。
就据我了解呢,其实国内的很多开发人员呢其实都是半路出家,也就是并非是计算机专业出身的,所以很多计算机基础课呢可能都没有学习过,比如说数据结构算法对吧?但是他们的技术实力呢学习能力呢我觉得是一点都不比计算机专业的差的,也可以把这个代码写得很好,也可以把这个这个项目做得很优秀。如果因为卡在数据结构算法导致不能进入更大的公司的话,我觉得还是挺可惜的,所以所以一直很想推出这个课程。
相关文章:

【字幕】恋上数据结构与算法之01为什么要学习数据结构与算法
视频地址:请查看01为什么要学习数据结构与算法_哔哩哔哩_bilibili 同志们好,我是小码哥的mj李明杰。非常欢迎大家来学习链上数据结构与算法,从今天开始呢就由我来带大家一起来学习和掌握这个数据结构与算法啊。在正式学习之前我们先来看一下…...

120页ppt丨集团公司战略规划内容、方法、步骤及战略规划案例研究
响应会员需求,晓零分享一份经典资料《120页ppt集团公司战略规划内容、方法、步骤及战略规划案例研究》,欢迎进入星球下载学习。 以下是对企业战略规划三个阶段八个步骤的详细解析: 一、阶段一:内外分析 项目启动和前期准备&…...

滚雪球学SpringCloud[2.3]:服务发现与负载均衡详解
全文目录: 前言1. Ribbon的使用与配置1.1 Ribbon 概述Ribbon 的核心功能: 1.2 Ribbon 的基本使用1.2.1 引入 Ribbon 依赖1.2.2 配置 RestTemplate 与 Ribbon1.2.3 示例:通过 Ribbon 调用服务 1.3 Ribbon 的配置选项 2. Ribbon的负载均衡策略2…...

商务英语口语之聚会宴饮常用口语柯桥培训到蓝天广场
吃饭一定要掌握的英语口语 邀请他人共进餐: Would you like to join me for dinner? 你愿意和我一起吃饭吗? Lets grab a bite to eat together. 我们一起去吃点东西吧。 How about having lunch with me? 和我一起吃午饭怎么样? 询问…...

【C#】VS插件
翻译 目前推荐较多的 可以单词发言,目前还在开发阶段 TranslateIntoChinese - Visual Studio Marketplace 下载量最高的(推荐) Visual-Studio-Translator - Visual Studio Marketplace 支持翻译的版本较多,在 Visual Studio 代码编辑器中通过 Googl…...

嵌入式C语言自我修养:C语言的面向对象编程思想
⭐关联知识点:C和C的区别 代码复用与分层思想 什么是代码复用呢? (1)函数级代码复用:定义一个函数实现某个功能,所有的程序都可以调用这个函数,不用自己再单独实现一遍,函数级的代…...

行车记录仪格式化了怎么恢复?专业恢复方法分享
行车记录仪作为现代驾驶的必备设备,它忠实记录着行车过程中的点点滴滴,是保障行车安全、处理交通事故的重要依据。然而,有时由于操作失误或其他原因,我们可能会不小心将行车记录仪进行格式化,导致宝贵的录像数据丢失。…...

C++中extern ”c“的理解
c中extern “C“的作用及理解_extern "c-CSDN博客...

红黑树的删除
文章目录 前言一.删除的节点左子树右子树都有二.删除的节点只有左/右子树删除调整操作 三.删除的节点没有孩子1.删除的节点为红色2.删除的节点为黑色1).兄弟节点为黑色(1).兄弟节点至少有一个红色的孩子节点LL型RR型RL型LR型 (2).兄弟节点没有孩子或所有孩子为黑色 2).兄弟节点…...

Vue3+setup实现父子组件单表增删改查写法模板
父组件写法 <el-card><!-- el-card 头部插槽 显示列表名和新增按钮 --><template #header><div class"table-header-container"><i class"fas fa-th" />角色列表(100)<span style"flex-grow…...

jmeter 录制APP脚本
一、手机 1、修改网络 代理选择手动→填写服务器主机名(电脑IP,如:192.1xx.x.xx)→服务器端口(任意未被占用端口,如:8888) 2、安装证书 手机浏览器访问服务器主机名:服务器端口&a…...

C++类与对象深度解析(一):从抽象到实践的全面入门指南
文章目录 C 类与对象——详细入门指南前言1. 类的定义1.1 类定义的基本格式示例代码解释 1.2 访问限定符示例代码解释 1.3 类域示例代码解释 1.4 成员命名规范常见的命名约定:示例:拓展: 1.5 class与struct的默认访问权限示例: 2.…...

docker拉取 jdk 8
docker pull openjdk:8docker run -d -it --name java-8 openjdk:8docker run -d -it --name java-8 openjdk:8 –name java-8 容器名,自定义的 openjdk:8 镜像名:标签名 , 使用 docker images 查看 2、查看已运行的容器实例: doc…...

机器学习VS深度学习
机器学习(Machine Learning, ML)和深度学习(Deep Learning, DL)是人工智能(AI)的两个子领域,它们有许多相似之处,但在技术实现和应用范围上也有显著区别。下面从几个方面对两者进行区…...

基于vue框架的宠物交流平台1n2n3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:会员,宠物信息,宠物类型,团队信息,申请领养,团队申请,领养宠物 开题报告内容 基于Vue框架的宠物交流平台开题报告 一、项目背景 随着现代生活节奏的加快与人们情感需求的日益增长,宠物已成为众多家庭不可或缺的重要成员。…...

Rust 所有权 借用与引用
文章目录 发现宝藏1. 所有权(Ownership)2. 引用(References)2.1 不可变引用2.2 可变引用2.3 引用的规则 3. 悬垂引用(Dangling References)4. 借用(Borrowing)结论 发现宝藏 前些天…...

构建智能电商新生态:深度解析京东商品详情API的力量
在当今数字化浪潮中,智能电商系统已成为推动零售业转型升级的重要引擎。作为电商行业的领军者之一,京东凭借其庞大的商品数据库和先进的技术架构,为开发者与商家提供了丰富的API接口,其中商品详情API无疑是构建智能电商系统的关键…...

Golang | Leetcode Golang题解之第398题随机数索引
题目: 题解: type Solution []intfunc Constructor(nums []int) Solution {return nums }func (nums Solution) Pick(target int) (ans int) {cnt : 0for i, num : range nums {if num target {cnt // 第 cnt 次遇到 targetif rand.Intn(cnt) 0 {ans …...

使用注意力机制可以让你的模型更加灵活,但是需要额外的计算资源。rnn lstm bilstm attension
确实,使用注意力机制可以使模型更加灵活,但也确实需要额外的计算资源。注意力机制允许模型在处理序列数据时,能够动态地关注不同位置的重要性,从而更好地捕捉长依赖关系。下面是一个简单的注意力机制实现示例,可以帮助…...

git命令大全
简介:个人学习分享,如有错误,欢迎批评指正 一、Git操作流程 1、代码提交和同步代码 第零步: 工作区与仓库保持一致第一步: 文件增删改,变为已修改状态第二步: git add ,变为已暂存状态 $ git status $ git add --al…...

【数据仓库】数据仓库常见的数据模型——范式模型
目录 一、范式 1、第一范式 2、第二范式 3、第三范式 4、进一步范式化:BCNF、4NF 和 5NF 简介 (1)Boyce-Codd 范式(BCNF) (2)第四范式(4NF) (5&#x…...

【LeetCode每日一题】——LCR 078.合并 K 个升序链表
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目注意】六【题目示例】七【题目提示】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 优先队列 二【题目难度】 困难 三【题目编号】 LCR 078.合并 K 个升序链表 …...

代码随想录算法训练营第五十九天 | dijkstra(堆优化版)精讲
目录 dijkstra(堆优化版)精讲 思路 堆优化细节 方法一: 最小堆优化 dijkstra(堆优化版)精讲 题目链接:卡码网:47. 参加科学大会 文章讲解:代码随想录 小明是一位科学家&#x…...

go语言后端开发学习(七)——如何在gin框架中集成限流中间件
一.什么是限流 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数。 我们生活中也会经常遇到限流的场景,比如:某景区限制每日进入景区的游客数量为8万人;沙河地铁站早高峰通过站外排队逐一放行的…...

SpringBoot2:web开发常用功能实现及原理解析-整合EasyExcel实现Excel导入导出功能
1、工程包结构 主要是这5个Java类 2、导入EasyExcel包 这里同时贴出其他相关springboot的基础包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><depend…...

CTFShow-信息搜集
Web1: 题目描述:开发注释未及时删除 。 打开题目后提示web1:where is flag? ctrlu读取源码。 Web2: 题目描述:js前台拦截 无效操作 打开题目后显示:无法查看源代码 右键无法用,…...

Facebook的虚拟现实功能简介:社交网络的新前沿
在科技飞速发展的今天,虚拟现实(VR)已经从科幻小说中的梦想变成了触手可及的现实。作为全球领先的社交平台,Facebook(现已更名为Meta)正大力推动虚拟现实技术的发展,以重新定义用户的社交体验。…...

Redis embstr 编码
embstr 编码 是 Redis 中一种优化存储小型字符串的编码方式。它是 Redis 内部存储字符串的多种方式之一,特别适用于存储长度不超过 44 字节的小字符串。...

【Elasticsearch系列二】安装 Kibana
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

中国电子学会202403青少年软件编程(Python)等级考试试卷(三级)真题与解析
202403Python 三级真题 一、选择题 1.在 Python 中,hex(2023)的功能是?( ) A.将十进制数 2023 转化为十六进制数 B.将十进制数 2023 转化为八进制数 C.将十六进制数 2023 转化为十进制数 D.将八进制数 2023 转化为十进制数 2.下列表达式的值与其他三个选项不相…...