OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

王争:算法也有价值观,取决于你想用来做什么 | 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:142277

评论

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

大疆被制裁,请马上卸载postman!

Liam

程序员 Postman 开发工具 API swagger

常见问题(FAQ)页面的搭建步骤

小炮

对话|鲜丰水果:“看不见”的门店数字化

阿里云云效

云计算 阿里云 云原生 持续交付 数字化运维

云原生技术赋能ISV实现应用现代化

York

云原生

如何基于 OpenKruise 打破原生 Kubernetes 中的容器运行时操作局限?

阿里巴巴云原生

向工程腐化开炮|动态链接库so治理

阿里巴巴终端技术

android 动态链接库

4个迭代,从批量交付到持续交付转型

阿里云云效

云计算 阿里云 云原生 研发团队 研发

【堡垒机】2022年云堡垒机品牌排名大比拼!

行云管家

云计算 网络安全 堡垒机 企业安全

使用MASA.Blazor写一个标准的查询表格页

MASA技术团队

创新的力量天翼云推动科技创新技术实践落地

天翼云开发者社区

昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

Geek_32c4d0

昇腾

移动平台WorkPlus助力医院智慧信息化建设

WorkPlus

AI+生物计算:用计算机视觉技术理解细胞生命

百度大脑

图数据库实操:用 Nebula Graph 破解成语版 Wordle 谜底

NebulaGraph

数据库 开源 图数据库 分布式图数据库

3个月夯实基建,鲜丰水果这样实现研发数字化

阿里云云效

云计算 阿里云 云原生 持续交付 研发运维

2021年【大学生Python学习】社区&&小博主,2021最新大厂高频微服务面试总结

程序媛可鸥

Python 程序员 面试

2022年中小企业数据安全如何保障?对比华为云与其他云计算大厂,15分钟的字节跳动视频面试

程序媛可鸥

Python 程序员 面试

全运会开幕!天翼云全力打造“智慧赛事”

天翼云开发者社区

它来了,它来了!开源圈 KOL 的江湖对谈第二季要来了!

OpenTEKr

开源 程序员人生 开源社区 开源软件 优秀开源项目

加密市场普跌 虎符交易所平台币HOO却能连续2个月逆势上涨

区块链前沿News

Hoo 虎符交易所 平台币

2022年中国在线音乐市场年度综合分析

易观分析

云管平台提供的功能一般包括哪些?采购需求主要是什么?

行云管家

云计算 企业上云 云管平台 云管理

沈阳飞桨领航团Meetup邀请你来,探索AI如何赋能智慧城市

百度大脑

CVE-2021-3129:Laravel远程代码漏洞复现分析

华为云开发者联盟

安全 漏洞 代码复现 CVE-2021-3129 base64 标准

飞桨助力动车3C车载智能识别,为动车组运行保驾护航

百度大脑

Flutter 图片库高燃新登场

阿里巴巴终端技术

flutter

微博评论高性能高可用计算架构

李大虾

#架构实战营 「架构实战营」

2. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml

MASA技术团队

从“半部电台”到“云监工” 天翼云助力红色电信启航新征程

天翼云开发者社区

Rust基本概念

Shine

读书笔记 rust

社区活动 | Apache Pulsar SIG(特别兴趣小组开放)!欢迎大家加入

Apache Pulsar

开源 架构 云原生 Apache Pulsar pulsar 社区

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