Google工程师:如何看待程序员普遍缺乏数据结构和算法知识?

出处:极客时间《数据结构与算法之美》

很多技术人都很迷茫,觉得自己做的项目没有技术含量,成天就是卖苦力。技术的东西,日新月异,有些人总在忙于追求热点新技术,东学学、西学学,平时泛泛地看技术书籍、技术文章,但始终根本抓不住技术的本质,干了三五年之后,感觉并没有积累到什么东西,跟刚毕业的大学生能力差不多,因此深深的感到焦虑。

实际上,本质的原因,还是我们没有掌握到,做为程序员,我们该积累什么东西?是各种知识、技术本身吗?我觉得不是,我觉得最应该积累的是“能力”。

能力就像是内功,而知识就像是招式。知识会过时,而能力永远都不会过时。初级程序员才比招式,高级程序员只看内功。

对于一个程序员来说,如何修炼内功呢?首要是打好基本功,比如掌握操作系统、编译原理、数据库理论等,但最基础的应该就是扎实的掌握数据结构和算法了。

不过,虽然道理都懂,但你可能还是会有很多困惑,比如下面这些:

  • 总感觉数据结构和算法是“屠龙技”、“虚招式”,除了面试,工作中根本用不着;
  • 不懂算法,只要编程语言API、开发框架用得熟练,代码照样写得“飞”起来。

实际上,如果你做的只是简单的业务逻辑翻译工作,开发的系统没有性能压力,那你确实只需要掌握API、框架用法就足够,但是,你真的就甘心做一个天花板很低的CRUD码农吗?

如果你开发的业务比较复杂,你就需要设计复杂的架构来应对,进而就要用到各种复杂的技术、中间件、框架。要想更好地用好这些东西,你就需要了解它们的底层原理。而为了保证性能、扩展性等,它们底层使用了大量的数据结构和算法,比如我们常用Redis的有序集合来实现排行榜功能,但你知道它底层是依赖什么数据结构和算法吗?为什么要用跳表和散列表两种数据结构来构建索引呢?扎实的数据结构和算法功底,可以帮助你快速的读懂源码,更加从本质上理解它的设计原理。

如果你开发系统有很高的性能压力,那一个简单的数据存储结构的选择问题(比如是用数组来还是链表),就可能会产生成千上万倍的性能差别。这个时候,数据结构和算法的价值就完全凸显出来了。而且,即便你是用编程语言提供的现成的类来开发,但如果你不知道这些类库背后的原理,不懂得时间、空间复杂度分析,那你又如何有信心能用好、用对它们?你又该如何评估代码的性能和资源的消耗?

不过,你可能会说,我是一个有追求的程序员,我知道数据结构和算法很重要,但是,国外有这么多经典的数据结构和算法书籍、视频、动画,为啥要花钱来学习这个专栏呢?

尽管有很多书籍讲的通俗易懂,也有很多书籍全面、经典,但是大部分都偏理论,书中的例子也大多脱离真实的软件开发。看完书之后,很多人只是死记硬背了一些知识点而已。这样填鸭式的学习,对于锻炼思维、开拓眼界并没有太多作用。而且,从基础理论到应用实践,有一个非常大的鸿沟要跨越,这是大学教育的普遍不足之处,这也是为什么我们常常觉得大学里学过的很多知识都没用。

所以,我并非只是单纯地把某个知识点讲清楚,而是结合我的理解、实践和经验来讲解,力争成为一个跟所有国内、国外经典书籍都不一样的专栏,一个可以长期影响一些人的专栏。

我的专栏最大特色就是,列举大量实际软件开发中的场景,给你展示如何利用数据结构和算法解决真实的问题。我掰着指头数了下,整个专栏会涵盖100多个算法真实项目场景案例。我还手绘了一些清晰易懂的详解图(总共有300多张),让晦涩难懂的算法变得轻松有趣。

\"\"

手绘图—出自《数据结构与算法之美》

现在,专栏已经更新完毕,72篇文章27万字,这期间也陆陆续续有 48000+ 程序员加入学习,是极客时间订阅量最好、好评最多的专栏之一。很多读者对我评价都很高,觉得我真的不只是技术好、逻辑性强,还很会讲,能够点出技术的本质、算法的本质,娓娓道来,听得十分过瘾。很多学员都跟追剧一样,每天早上第一件事就是看我的更新。说实话,我自己都没想到会这么受欢迎。

留言区赞美的话太多了,现在我截取很少的一部分,展示给你。如果你感兴趣,可以试读一下专栏中“结束语 | 送君千里,终须一别”那篇文章,里面的留言足以看出读者对我的无比认可!

\"\"

我是谁?

王争,前Google工程师,之前从事谷歌翻译相关的开发工作。在业余时间,持续研究数据结构和算法,几乎读过所有的数据结构和算法书籍,切过上千道算法题目。除此之外,我一直没有脱离一线编程工作,所以有大量的数据结构和算法的实战经验,希望我的专栏能开启你算法学习之门。

你能获得什么?

1.掌握常用的数据结构与算法的由来、原理、实现、特点
不仅让你搞懂每种数据结构和算法的原理和实现,还让你知道,他们的历史背景和由来。真正弄明白我们为什么需要这个数据结构和算法,它是为了解决什么样的问题才被创造出来的。掌握每个数据结构和算法的本质,也就能掌握创新的源头。

2.锻炼逻辑思维、算法思维,提高编码质量、编程能力
逻辑思维,对于一个程序员来说是非常重要的,而算法思维,对于写出高性能的代码也是非常关键的。专栏不仅仅是数据结构和算法知识的一种填鸭式的灌输,更加侧重于对你逻辑思维、算法思维的训练。通过72篇文章,跟随着我的逻辑讲解,潜移默化地提高你的逻辑思维、算法思维。

3.教会你如何将算法应用于实战,如何在实战中应用算法
我在讲解每种数据结构和算法的时候,都会配合一到两个真实软件开发中的问题来讲解,同时还会配合一到两个非常考验你思维的课后思考题,加深你的理解。除此之外,我还通过几个大的实战项目,完整的给你展示了,在一个大项目中,如何利用数据结构和算法,来解决问题,提升性能。

可以点击《数据结构与算法之美》试看专栏内容,下面是专栏目录:

\"\"

戳我试读或订阅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android guide 中文版,Sky Guide

Sky Guide是一款能让小伙伴们观察银河的手机软件,尤其是喜欢行星、星座的小伙伴们来讲,这款软件能很好的帮助小伙伴们观看这些,让小伙伴们体验不一样的观星乐趣,因此想要观看的小伙伴们,赶紧来试试吧。软件介绍&#x…

layui选项卡嵌套选项卡_在ProtoPie中使用嵌套组件构建选项卡栏

layui选项卡嵌套选项卡One of the powerful features of ProtoPie is the ability to build fully portable and interactive UI components. We are going to make use of nested components, SVG icons, and layout constraints to build a tab bar UI component that is sel…

50行代码串行Promise,koa洋葱模型原来这么有趣?

1. 前言大家好,我是若川,最近组织了源码共读活动《1个月,200人,一起读了4周源码》,感兴趣的可以加我微信 ruochuan12 参与,长期交流学习。之前写的《学习源码整体架构系列》 包含jQuery、underscore、lodas…

js 用迭代器模式优雅的处理递归问题

2019独角兽企业重金招聘Python工程师标准>>> 什么是迭代器 循环数组或对象内每一项值,在 js 里原生已经提供了一个迭代器。 var arr [1, 2, 3] arr.forEach(function (item) {console.log(item) })实现一个迭代器 var iterator function (arr, cb) {fo…

如何抓取html请求,请求获取网页的response,获取网页的html 怎么那么慢

HttpEntity multipart builder.build();httppost.setEntity(multipart);long start System.currentTimeMillis();// 发送请求response httpclient.execute(httppost);long end System.currentTimeMillis();System.out.println("查询upsfreight消耗的时间是(毫秒):&quo…

Serverless 究竟是什么?

大家好,我是若川。说起 Serverless,我想你应该并不陌生,作为一种云开发的架构模式,在近两年里,伴随着云原生概念的推广愈发火爆。作为一名 Serverless 的拥趸,在跟大家推荐的过程中,我经常能看到…

instagram.apk_评论:Instagram Reels vs.TikTok

instagram.apkWith all the attention to the newly debuted Instagram Reels from Facebook and the hilarious, bizarre world of TikTok, here’s a first impression on the two platforms and how they compare from a designer’s perspective.所有人都在关注Facebook新近…

240多个jQuery常用到的插件

概述 jQuery 是继 prototype 之后又一个优秀的 Javascript 框架。其宗旨是—写更少的代码,做更多的事情。它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及的,它兼容 CSS3,还兼容各种浏览器(IE 6.0, FF 1.5, Safari 2.…

华为首款鸿蒙设备正式入网,华为首款鸿蒙设备正式入网:麒麟9000+挖孔全面屏,价格感人!...

作为国内电子产品领域的巨头之一,华为这两年的快速发展是大众有目共睹的,除了手机业务外,华为的平板业务同样有亮眼表现,无独有偶,在近期各方媒体的不断披露之下,又有一款华为平板被基本确认,这…

myeclipse深色模式_完善深色模式的调色板

myeclipse深色模式Apps largely have a limited color palette which may already map well to dark mode. However, some colors produce optical vibrations when viewed on a dark background, straining the user’s eyes. So, certain apps need to map to a slightly des…

微软悄悄发布了 Web 版的 VsCode

大家好,我是若川,最近组织了源码共读活动《1个月,200人,一起读了4周源码》,感兴趣的可以加我微信 ruochuan12 参与,长期交流学习。在8月31日,微软发了一个介绍他们新发布的功能的帖子介绍&#…

figma设计_设计原型的最简单方法:Figma速成课程

figma设计It doesn’t matter if you haven’t used any prototyping tools before or you’re transitioning from other ones (like Sketch, Adobe XD); This guide is for beginners and professionals alike. So for a university assignment, I had to prepare a presenta…

初中级工程师如何快速成长和寻求突破

大家好,我是若川,最近组织了源码共读活动《1个月,200人,一起读了4周源码》,已经有超50人提交了笔记,群里已经有超1200人,感兴趣的可以加我微信 ruochuan12 参与。前言写这篇文章的初衷是因为看到…

ajax使用html()后样式无效,jquery.ajax使用字符串拼接后内联css样式失效

问题所在:是这样的,我使用ajax调用了一串json数据,使用字符串拼接的方法动态插入div容器.结果css并没有对动态插入的内容加css样式.代码描述:css使用的内联,在head部分, jquery使用外联,在body后.我尝试过:$(function(){}) //入口函数加载window.onload function(){} //原生do…

ios 按钮图片充满按钮_iOS有一些非常危险的按钮-UX评论

ios 按钮图片充满按钮I recently bought a cool thing off Amazon. It’s an adapter for iPhone, making it easy to transfer photos from your big bulky camera to your phone. The adapter itself is very easy to use: simply insert your SD card and plug the adapter …

swiftui_SwiftUI的混合包

swiftui介绍 (Introduction) SwiftUI introduced us to a whole new way of designing and coding interfaces. Gone are the old ways of subclassing UIKit (or AppKit) classes and hardwiring layout constraints. Instead, we now have a nice, declarative way of struct…

三年经验前端社招——有赞

大家好,我是若川,祝大家中秋节快乐。最近组织了源码共读活动《1个月,200人,一起读了4周源码》,已经有超50人提交了笔记,群里已经有超1200人,感兴趣的可以点此链接扫码加我微信 ruochuan12 参与。…

html的 button点击事件无效,InfoWindow里面加button,监听button点击事件无效 求解啊...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼点击infoWindw中的button按钮,无效果;覆盖默认的dom结构html,body,#container {width: 100%;height: 100%;margin: 0px;}p.my-desc {margin: 5px 0;line-height: 150%;}//创建地图var map new AMap.Map(con…

数据挖掘 点击更多 界面_8(更多)技巧,可快速改善用户界面

数据挖掘 点击更多 界面重点 (Top highlight)Creating beautiful, usable, and efficient UIs takes time, with many design revisions along the way. Making those constant tweaks to produce something that your clients, users, and yourself are truly happy with. I k…

三年经验前端社招——腾讯微保

大家好,我是若川。祝大家中秋节快乐。最近组织了源码共读活动《1个月,200人,一起读了4周源码》,已经有超50人提交了笔记,群里已经有超1200人,感兴趣的可以点此链接扫码加我微信 ruochuan12 参与。本文经作者…