写点什么

知乎热议:算法被吹上天了吗?程序员刷题只为面试?

  • 2021-09-23
  • 本文字数:1950 字

    阅读完需:约 6 分钟

知乎热议:算法被吹上天了吗?程序员刷题只为面试?

算法只是面试敲门砖?


俗话说,“语言只是工具,算法才是程序的灵魂”。对于程序员来说,算法始终是一个绕不开的门槛。近两年,越来越多的互联网公司在招聘环节注重算法的考察。但对于程序员来说,真的有必要死磕算法吗?


近日,知乎上一条关于程序员是否要死磕算法的讨论热度颇高。题主自称自己在刚入门编程前认为算法很重要,但在入门之后却发现算法用处不大,因为题主在实际业务中遇到的问题和已经解决的问题都跟算法不沾边。那么问题来了,如果只是做编程的话,是不是没必要死磕算法?

不同岗位对算法的掌握程度不同


对于这个问题,有网友认为,如果只是想做好眼前的编程工作,比如只是实现一些简单的业务逻辑,不考虑性能(效率、内存、功耗等)的话,那么学习算法确实“没用”,也有网友称,“95% 的公司并不需要算法,在需要算法的那 5% 的公司里写代码,写的代码 95% 是业务代码,和算法没啥关系”。


网友轩辕之风认为,算法虽然重要,但不同岗位需要掌握的程度不一样。如果做前端、客户端开发,或是做后端只写 API、对接口、做 CRUD,掌握一些算法基础就足够了。但如果做的是脱离接口层的后端,经常为了性能,要与 CPU、缓存、内存、I/O 等东西死磕,就需要多刷 LeetCode,把算法学精学透。这些系统性能每提升 0.1 个百分点,都可能会对业务带来巨大的提升。


谷歌 AI 研究员沈卓然认为:


实际工作中绝大多数内容都完全用不到算法,更多是增删查改、对接 API、调整数据格式之类的。更进一步的工作,通常也是和系统设计关系更大,而不是算法。只有在做比较底层、比较尖端、或者非常性能敏感的场景下才可能涉及自己实现算法,但这些场景所需求的也远远不仅是算法。实际上,在工作中反而需要注意不要过度使用算法。软件工程的目的是写出易懂、易合作、易维护的代码,而不是看上去很“聪明”的,或者是效率高一点却复杂很多的代码。


不过这并不是说算法不重要。我认为在实际工作中算法知识最重要的作用是知道某些算法是存在的,这样才能够理解系统的底层原理,或者在需要的时候找到合适的算法实现并引用。

算法在面试中承担“智力题”的作用


虽然大家对于算法的重要性观点不一,但一个共识是:越来越多的互联网公司,尤其是大厂,在面试中注重算法能力的考核。


此前有脉脉用户表示,硅谷大厂,无论是应届生还是工作几年的程序员,只要是一个写代码的岗位,都特别重视手撕代码(数据结构与算法,LeetCode 类型题目)这个环节,这个环节表现不好,面试官可能就没有兴趣去了解其他的能力,他们很忙。


获得高赞回答的答主 Xinyu Chen 认为:面试里的算法题是美国大科技公司(主要是早年的 Google)带起来的一股歪风,后来其他公司渐渐效仿。同时求职者为了在面试中取得竞争优势,就开始通过刷题来训练自己解决面试算法题的能力。LeetCode 这类网站也是在这种形势下产生并逐渐流行起来的。


谷歌 AI 研究员沈卓然则认为,算法题在现在的程序员招聘中基本上承担着智力题的作用,因为计算机科学的知识深度比较浅,培养起来不难,所以大公司招初级员工的时候更看重聪不聪明、潜力怎么样,而不是现在会不会某种技术。


至于互联网大厂为什么喜欢考核求职者算法能力,答主华中科技大学计算机应用技术硕士夏天总结了以下三点原因:


  1. 算法能力能够准确辨别一个程序员的技术功底是否扎实。

  2. 算法能力是发掘程序员的学习能力与成长潜力的关键手段。

  3. 算法能力能够协助判断程序员在面对新问题时,分析并解决问题的能力。


也有网友认为,算法只是一种高效率的筛选人才方式,评价体系比较单一,只需要看对方有没有写出正确的(甚至最优的)解法。此外,算法能力的考核相对比较公平,求职者也难以作弊。


当然,并不是所有的公司都适合在面试环节着重考察求职者的算法能力。答主 Xinyu Chen 认为,算法题作为面试题本身的效用,更适合大公司。公司招人,尤其是初级的开发者,并不需要他们具有特定的技能,所以面试考算法题普适性更高,反之,面试官需要花费大量的精力去准备特定领域的面试,成本更高。而小公司更多的时候需要掌握特定技术的人,如果只面算法题的话,误差会很高。

学算法,真正学到的是算法思维


对于另一部分程序员来说,学习算法不单是为了通过大厂面试,而是为了提升自己的算法思维。有观点认为,算法中最有价值的就是“算法思维”。


所谓算法思维,指的是用算法去解决问题的思维方式,算法在被设计出来之前,设计者究竟在想什么?


至于算法思维是否“有用”,原百度高级算法研发工程师、极客时间专栏作者胡光认为:算法思维不是为了我们传统意义上的“有用”而服务的,而是为了提升你的境界,提升你解决问题的能力。就拿刷题来说,题目总是刷不完的,每天都会有无数的新题产生,那你能找到合适的老师去学习所有新题的解法和技巧吗?当然是找不到的。这个时候,算法思维就能保证在碰到了新问题时,你可以有办法去解决它。

2021-09-23 14:045437

评论

发布
用户头像
该评论已删除
2021-09-23 19:50
回复
很简单 割韭菜的平台
2021-09-24 09:24
回复
没有更多了
发现更多内容

性能测试:性能测试流程与方法

测试人

软件测试

接入应用内支付服务,提高商业变现效率

HarmonyOS SDK

HarmonyOS

StarRocks跨集群迁移最佳实践|得物技术

得物技术

数据库 OLAP StarRocks 企业号2024年7月PK榜

基于51单片机设计的电动车控制器

DS小龙哥

7月月更

万界星空科技定制化MES系统,实现数字化生产

万界星空科技

数字化转型 生产管理系统 mes 万界星空科技

华为云致力推进全域Serverless时代,引领技术创新,赋能行业实践

轶天下事

深度解读昇腾CANN内存复用技术,降低网络内存占用

华为云开发者联盟

人工智能 神经网络 华为云 华为云开发者联盟 企业号2024年7月PK榜

AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界

汀丶人工智能

人工智能 agent metagpt

央视揭露:上百元的AI填报高考志愿真的靠谱吗?阿里云新增两位AI圈“代言人”!|AI日报

可信AI进展

人工智能

百度Feed业务数仓建模实践

百度Geek说

大数据 流批一体 数仓建模 企业号2024年7月PK榜

小间距LED显示屏市场:新机遇与挑战

Dylan

技术 行业 LED display LED显示屏 市场

iPaaS丨企业应用及数据集成的重要性和挑战

谷云科技RestCloud

数据集成 ipaas 数据挑战

WebSocket vs. SSE:哪种实时通信技术更适合你?

Apifox

前端 后端 websocket 实时通信 sse

MiniMax闫俊杰:国内模型远不及GPT-4;OpenAI隐瞒黑客曾入侵其内部系统|AI日报

可信AI进展

人工智能

现代码头装卸系统:技术创新与效率提升

天津汇柏科技有限公司

智慧码头

探索无限可能:华为云区块链+X,创新融合新篇章

轶天下事

KubeBlocks v0.9发布啦!API全面升级、支持Redis Cluster、MySQL主备...更多新功能等你发现!

小猿姐

数据库 Kubernetes 云原生

Databend 开源周报第 152 期

Databend

智启未来,共筑云上生态,华为云生态领航者·总裁班走进深圳南山

最新动态

MES系统定制 | 生产调度车间排班计划/MES排程排产

万界星空科技

生产管理系统 mes 万界星空科技 排版排产计划

ELB Ingress网关助力云原生应用轻松管理流量

华为云开发者联盟

云原生 华为云 ingress 华为云开发者联盟 企业号2024年7月PK榜

知乎热议:算法被吹上天了吗?程序员刷题只为面试?_语言 & 开发_凌敏_InfoQ精选文章