写点什么

王争:算法也有价值观,取决于你想用来做什么 | AMA 集锦

  • 2019-10-22
  • 本文字数:4390 字

    阅读完需:约 14 分钟

王争:算法也有价值观,取决于你想用来做什么 | AMA集锦

极客时间2周年特邀 100 位在产品、架构、测试、运维、人工智能、管理、编程语言、运营等各个领域的专家,在 App 内与用户交流互动。


InfoQ 特别整理了前 Google 工程师王争与用户的互动和问答集锦,分享给大家。



我是王争,极客时间《数据结构和算法之美》专栏的作者。极客时间已经 2 岁了,今天我来部落和大家聊聊,搞一个传说中的 AMA(Ask Me Anything),有点像玩真心话大冒险哈,想想还挺刺激的,大家关于技术、产品、创业、职业发展、或者其他任何扯闲篇的问题,都可以问我,我都会回答。很荣幸能和极客时间一起,一起把部落打造为行业内最好的技术交流社区。大家燃起来!


Q1:争哥,刷算法题总是出现当时明白,事后一段时间不看,再看原题还是会花费很长时间的情况?有没有进阶性的指导方式?怎么去刷题比较好,高效一点


王争:那还是练的不够多。不过还是有些技巧可以分享给你,那就是要总结一些套路,然后拿题去巩固套路,之后看到新题目之后,就拿套路往上套,或者拿做过的题目往上类比。娄天成之所以牛逼,一方面是他资质好,另一方面就是刷题多。算法题实际上套路就那些,大部分题目都是换汤不换药,或者稍微改造一下、柔和一下。只要你刷多了,做多了,自然就能形成条件反射,看到题目大致思路就有了,剩下的就是稍微优化下、找些坑点啊之类的。 除了这些,再奉上我最近写的这篇文章《我的算法学习之路》


Q2:平时怎么有意识的主动使用设计模式,优化自己的代码逻辑?看了一些别人的代码,有一些改变,不过有些地方的确是写完之后,感觉可以重构下,开始写的时候就没有想到这么多


王争:这个很正常的。23 种经典设计模式主要就是解决代码的扩展性问题,主要遵从的设计原则是开闭原则,对扩展开发,对修改关闭。所以,你在写代码的时候,多思考一下,未来哪些是可能变的,哪些是不会变的。对于未来可能变的部分,该如何设计代码结构,才能满足开闭原则。然后结合具体的设计模式,来满足刚刚的这个开闭需求。 不过,你还提到说,写的时候想不到,事后就觉得很多可以重构。这就体现了设计模式的一个重要的应用场景就是:重构!实际上,持续重构是避免过度设计的一个很好的办法,所以,重构的时候针对代码痛点,再行应用设计模式是更加合理的。


Q3:为什么学算法,怎么学算法,我想这类问题,都是老生常谈了。而且争哥的专栏关于这方面也提了很多。可是,我在学习的过程中产生了一个新问题,算法需要学到什么程度呢?曾经,我以为把大学课本里面常用的算法和数据结构学完就够了,毕竟大部分人并不是志在成为纯算法工程师。可是,后来看看 Google 和微软等公司的算法题,发现远远不够。我就迷糊了……


如果说,基本算法和数据结构掌握就足够了,那为什么这些公司这么看重呢?难道只是为了筛选人吗?我知道,争哥曾经在算法上花了很多时间,也拿到了多家大公司的 offer。我想,争哥肯定有自己的思考,希望分享分享


王争:实际上,我怎么强调算法重要,都可能没法给你一个信服的答案。我们可以反推来看这个问题,google 招了很多算法很好的人,发现这些人都是逻辑清晰、聪明、有想法,并且写代码能够做到 bug free…那他就觉得我之后多招些这类算法好的人喽,那面试的时候就多问问算法喽… 不过,纯刷算法是进不了 google 的,大家也别太被刷算法洗脑了…那么多搞 ACM 的,去面试也没能进 facebook、google…有时候还看气质…我公众号(小争哥)里有几篇讲学算法的,你可以去看下。


Q4:争哥你好,你的算法专栏,帮助我找到了学习算法的技巧,非常感谢。算法专栏是我留言最多的专栏,一共 47 条,现在每天都能收到小伙伴的点赞,偶尔也会有评论交流,很开心。


理论的内容虽然会遗忘,但稍微复习一下,很快就能捡起来。主要还是需要多练习,关于刷题我有个困惑是,如果一道题很长时间做不出来,然后看其他人的答案,可能也要看一两个小时,才能最终把思路用代码写出来。这个过程其实蛮煎熬的,这种感觉会影响下一次刷题的心情,甚至会产生抵触。争哥可能没有不会的题目,没有这个困扰,但还是想听听争哥的意见。


王争:我有三个观点分享给你:


1. 量变引起质变,你觉得难还是因为做的不够多;


2. 只有难的东西,才能让你上个台阶。难都是相对的,你觉得难的,其他人可能觉得很简单,所以,难不在问题本身,而是能力跟问题不匹配,我们遇到难的问题之后,就更加要刻意的去练习,把它练熟练,变成对你来说简单的问题。


3. 心态很重要,换个角度想想会更好。遇到难题之后,你应该这么想:这是让我再上一个台阶的机会。


Q5:想问问争哥,是怎么样走上技术路的?有没有迷茫和想放弃的时候?如果有怎么走过来的?


王争:1. 怎么走上技术路的?


这个可能就是源自热爱。热爱让我更加自律,能废寝忘食的去编程、搞算法…比起逆着人性去学习,注定更能干得好…


2. 有没有迷茫和想放弃的时候?如果有,怎么走过来的?


当然有,我毕业刚进 google 没多久就想离职,那时候跟同学打算在上海开个西安面店,门面都看看好了…最后一顿撸串…两瓶啤酒之后 觉得还是太冒险了…遇到挫折的时候,谁都会想过放弃,特别是那些刚毕业没多久的小伙伴们,初入社会,得不到认可,对自己前途也很迷茫…都会有要放弃的时候…我的看法是,太年轻,阅历不够,想法又多,容易害了你。对于初入职场的小伙伴,你就跟着老大好好干…老大让干啥干啥…把活干好…别想太多,就不迷茫,反倒对你更有益…


Q6:很好奇争哥现在哪里发展,对于大龄程序员如何度过中年危机,争哥有没有什么建议?


王争:貌似互联网行业的人中年危机感最多…可能跟没有太多积累…竞争门槛低有关系…说白了就是写代码这是不难…实际上,要想度过中年危机,一个准则就是:成为同龄人中的佼佼者…即便社会要淘汰大龄码农,也不会淘汰佼佼者…至于如何成为佼佼者…可以管理上谋求发展…可以发展副业…可以成为技术大拿…太多方法了…


Q7:争哥您好,订阅过您的专栏,对我找工作帮助很大。目前有个关于 offer 选择的问题想请教您。目前手里有两个 offer,京东云「软件开发工程师」,base:北京;小红书「后端开发工程师」,base:上海/北京。薪资待遇,小红书比京东云高一些,但是京东的体量更大一些,不知道如何做出选择。争哥,能否从公司发展,个人技术成长等方面来讲讲选择哪个公司更好一些呀?万分感谢。Ps:本人 CPP 开发,京东云应该是 CPP,进入小红书就要转 JAVA 了,当然这不是选择的依据。


王争:你提供的关于你自己的信息比较少,所以,不好直接给你建议,如果愿意的话,可以加我微信 wangzheng0822 详细聊下。不过,我还是可以给你提供一些我了解的信息,希望能帮助到你决策。


1. 就我个人的了解来看,小红书也经历了火-》不火-》最近又挺火,三个阶段。很多公司或者赛道,都会经历三个阶段,比如 p2p,知识付费,不过小红书能挺过来还是挺不错的。第一个阶段之后谷歌的 Tiger 加入了小红书,之后貌似又离开了,可见小红书确实经历过发展不好的阶段,不然 Tiger 也不会走的。最近小红书又搞什么社区吧,貌似又开始火起来…不知道能持续多久…当然,这个跟我们做技术也关系不大,创业是大佬的事情,跟我们无关。


2. 京东云说实话确实不怎么了解,之前有个百度 T10 还是 T11 的大佬,在百度很有名气,去了京东云,搞了没多久就走了,又去了阿里,可以京东云也发展的不好。不过,还是那句话,跟我们程序员没关系。还是看你感不感兴趣,希不希望在云这块长期发展。


3. 实际上,对于两个差不多的公司,我们选择的时候,要看参与的项目哪个好,好项目、核心项目、感兴趣的项目,带来的个人技术上的成长、履历的积累、职场的发展,要远大于边缘项目。这点你没提供具体的信息,我不好给你具体的建议。


4. 小红书主要在上海,北京应该是分公司吧,一般 remote office 都不怎么做核心的东西,你要考虑好这点。


5. 是要来上海还是留北京,一定要考虑清楚。因为一旦在某个城市呆久了,离开的成本是很大的,几乎不可能。而北京的就业几乎要比上海多,建议留北京。


5. 小红书加班很严重的…京东貌似好点…这点也要想清楚啊,要是最近有谈女朋友…老婆要生孩子…建议考虑下加班的事情…


Q8:问下争哥,关于技术和产品,争哥是如何看待它们之间的关系的?究竟有没有技术驱动的公司?很多时候大家会说,为了业务的快速迭代,技术上能实现就行,但这样会不会就留下了隐患?例如米聊和微信,当年米聊技术架构无法扩展,限制了业务增长,最终失败。


王争:有技术驱动的公司,比如谷歌、大疆、华为…但是即便被外界认为是技术驱动的公司,里面也并不是每个部门、每个项目都是技术驱动的,只有个别核心部门,比如 google 里的搜索,是真正技术驱动产品、业务,剩下的 90%可能都是业务、产品驱动。业务快跑,技术跟不上,留下隐患,一点都没问题。除非你做的是技术驱动的产品。否则,公司发展大了,投资人投钱进来,找些牛逼的技术人把代码重新写一遍就是了。滴滴的 CTO 原来是百度的 T5,也没影响公司发展的如此大啊。


Q9:争哥,既然你说真心话大冒险,请问一般您几点下班,下班后、周末的时间怎么安排的,有什么高效的管理时间的方法吗?对于面试您觉得准备多久合适,最一个五年左右的后台开发工程师,算法数据结构、网络编程、系统设计等应该怎样分配精力准备面试。


王争:1. 我工作这么多年来,几乎没加过班,我工作、生活分得很开;


2. 周末基本上是带孩子到处玩;从来不工作、不学习。不过,最近有时候会在家写写稿子;


3. 面试的话,准备多久看你自己的😂,总之你觉得准备充分了、信心满满,有跃跃欲试的感觉是最好的了。


4. 都五年了的话,建议根据简历做过的项目来准备,你做过网络编程相关的项目,你就多看看网络编程的知识,没做过,完全不需要准备啊。


Q10:您是如何平衡生活,工作,学习之间的关系呢,我总是感觉没时间学习,陪伴家人,技术成长的慢,好迷茫。


王争:如果工作比较忙的,确实会这样。所以,有人才会说 996 忙到没时间成长,就是这个道理。要么提高自己的能力,能够快速的搞定工作的事情,然后就有多余的时间学习了;要么就换个稍微不那么忙的工作。


Q11:创业如何开始呢?有个好点子还是有个好团队呢?


王争:创业要找个自己擅长的领域,并且做好 3-5 年慢慢摸索的心理准备,3-5 年不挣钱也能养活自己和家庭的能力。然后再考虑去创业。至于点子和团队,那都是最基础的,没有点子、没有团队,谈何创业呢。




2 年时间,极客时间已经为用户交付了 94 门课程,涵盖产品、架构、测试、运维、人工智能、管理、编程语言、运营等多个领域。9 月「部落」上线后,用户又有了新的思考和讨论的聚集地。欢迎你加入「部落」,和大咖们共同探讨技术问题,和我们一起探索新的学习方式。


相关文章:


《这六个真实软件开发中的算法问题,你都能解决吗?|极客时间》


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


《在实际开发中,如何权衡选择使用哪种数据结构和算法?》


了解更多请搜索:王争算法


2019-10-22 18:142542

评论

发布
暂无评论
发现更多内容

19张图带你梳理SpringCloud体系中的重要技术点!

Java架构师迁哥

Fl Studio真的不如Cubase或者Logic Pro等电音软件专业吗?

奈奈的杂社

编曲 电音 电音制作 中国电音 编曲宿主

平面设计之PS(中)

空城机

PhotoShop ps 4月日更

CIAM的7个基本原则

龙归科技

安全性 用户 业务增长

经典递归

山@支

三翼鸟的羽翼下,人诗意地栖居在智能生活里

脑极体

一位五年Java开发经验程序员的拼多多/蚂蚁金服/百度面经分享!

Java架构之路

Java 程序员 架构 面试 编程语言

深入浅出 LVS 负载均衡系列(一):NAT、FULLNAT 模型原理

UCloud技术

负载均衡

你真的懂反馈吗?

石云升

28天写作 职场经验 管理经验 4月日更

我的 2015-2018 —— 银行软开三年项目回顾

清秋

大前端 重构 鉴权 4月日更

AI 事件驱动场景 Serverless 实践

阿里巴巴云原生

人工智能 Serverless 容器 云原生 消息中间件

一个DNS引发的“血案”

穿过生命散发芬芳

Wireshark 数据包分析 4月日更

翻译:《实用的Python编程》08_01_Testing

codists

Python

这里有一份2021年Java面试必备的《并发编程》学习资料,你要还是不要?

Java架构之路

Java 程序员 架构 面试 编程语言

新的物联网技术应用有哪些

cdhqyj

互联网 物联网 通信 计算机

调整云计算资源大小时要避免的10个错误

云计算

全面提升鸡群产能!Newcher智慧养鸡场解决方案剖析

Rancher

一份秀出新天际的SpringCloudAlibaba笔记,把微服务玩的出神入化

Java 编程 程序员 架构 微服务

Github限时开放!阿里内部强推的《微服务容器化参考指南》简直太牛了!

Java架构之路

Java 程序员 架构 面试 编程语言

游戏数据埋点

data_y

游戏 数据埋点 游戏数据分析 埋点定义

JavaScript小笔记

赫鲁小夫

4月日更

Android音视频 - MediaCodec编解码音视频

LoveYFan

android 音视频 编解码

Android音视频 - EGL源码解析以及C++实现

LoveYFan

android 音视频 OpenGL ES

【得物技术】算法入门一:算法的好坏?复杂度告诉你

得物技术

算法 时间复杂度 大前端 入门 复杂度

在业务高峰期拔掉服务器电源是一种怎样的体验?

冰河

分布式 微服务 数据恢复 MySQL 高可用 异常处理

【软件推荐】TOP级YouTube视频下载工具2021

科技猫

软件 分享 工具软件 视频 youtube

你可能不是真的懂let和const

前端树洞

JavaScript ecmascript 大前端 ES6 4月日更

嘿,朋友!和你讲讲这15年来我的成长吧

亚马逊云科技 (Amazon Web Services)

新华三“云屏”发布:云屏融合重塑工作体验,全力构建智“会”时代

DT极客

一周信创舆情观察(3.29~4.4)

统小信uos

聪明人的训练(九)

Changing Lin

4月日更

王争:算法也有价值观,取决于你想用来做什么 | AMA集锦_语言 & 开发_王争_InfoQ精选文章