写点什么

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

  • 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:044542

评论

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

《机器学习理论到应用》电子书免费下载

计算机与AI

Python 机器学习 数据科学

JWT主动校验Token是否过期

源字节1号

软件开发 后端开发

【注册荣耀开发者】赢【荣耀70】手机

荣耀开发者服务平台

开发者 手机 活动 应用 荣耀

web前端培训课程哪个比较好?

小谷哥

基于 eBPF 的 Kubernetes 可观测实践

阿里巴巴云原生

阿里云 Kubernetes 云原生 可观测

荣科科技:未来主要围绕在线互联化、生态化和智能大数据运营这三个方向发展

WorkPlus

运力升级助力算力流转,中国数字经济的加速时刻

脑极体

【web自动化测试】Playwright快速入门,5分钟上手

和牛

自动化 测试 playwright Python. 8月月更

WEB前端面授培训课程

小谷哥

视频目标检测

阿炜小菜鸡

8月月更 视频目标检测

Axure9基本交互操作(一)

乔乔

8月月更

知识分享|如何设计有效的帮助中心,不妨来看看以下几点

Baklib

企业即时通讯软件有哪些功能?对企业有什么帮助?

WorkPlus

正畸MIA微种植体支抗技术中国10周年交流会在沈举办

联营汇聚

框架整合(二)- 使用Apache ShardingSphere实现数据分片

大菠萝蜜

MySQL 8月月更

基于YOLOV5行人跌倒检测实验

阿炜小菜鸡

8月月更 行人检测

荣耀互联对外开放,赋能智能硬件合作伙伴,促进全场景生态产品融合

荣耀开发者服务平台

OpenInfra Days China 2022|SelectDB与你共享 Apache Doris 在互联网广告业务中的实践

SelectDB

MySQL 数据库 数据仓库 数据湖 Doris

深圳大数据培训多长时间可以找工作

小谷哥

倒数 3 天|RocketMQ 能力全景图即将发布,定义下一代消息队列未来方向

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

数据库治理的探索与实践

阿里巴巴云原生

数据库 阿里云 微服务 云原生

目标检测的发展与现状

阿炜小菜鸡

目标检测 8月月更

多个平台显示IP属地,必须大力推行互联网实名制

石头IT视角

开源一夏 | 基于若依springboot架构实现数据多维统计

六月的雨在InfoQ

开源 8月月更

python绘制一个时间的七段数码管实例基本的七段数码管绘制

BROKEN

8月日更 8月月更

【K8s入门必看】第三篇 —— K8s必备基础概念大梳理

Albert Edison

Docker Kubernetes 容器 云原生 8月月更

服务器

武师叔

8月月更

什么是内部客户服务?

Geek_da0866

经验分享|盘点企业进行知识管理时的困惑类型

Baklib

【爬虫+可视化】Python爬取疫情并可视化处理数据(爬虫入门案例)

BROKEN

Python 8月月更

【python小游戏】用python写一款小游戏--贪吃蛇

BROKEN

8月日更 8月月更

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