阿里云ODPS普惠算力再升级,Data+AI全产品降价低至59元! 了解详情
写点什么

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

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

评论

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

「linux」Socket缓存是如何影响TCP性能的?

linux大本营

Linux 后台开发 socket 架构师 TCP/IP

SpringBoot整合Mybatis-Plus 实战之动态SQL,Mybatis最拿得出手的功能之一

比伯

Java 编程 架构 面试 计算机

「五大常用算法」一文搞懂分治算法

bigsai

算法 分治算法;

将项目发布到 Homebrew 官方仓库

郭旭东

macos brew homebrew

为什么short、byte会被提升为int?及基本类型的真实大小

烫烫烫个喵啊

Java JVM

了不起的 Deno:带你极速获取各大平台今日热榜

华为云开发者联盟

Java 安全 deno

华为云&跟谁学|华为云API入门学习赛·AI人脸识别 未来工程师梦想的起点

DT极客

解锁高速 IT 团队利器:Jira Service Management

Atlassian

DevOps Atlassian Jira ITSM ITIL

语音识别端到端模型解读:FSMN及其变体模型

华为云开发者联盟

大数据 模型 语音识别

高并发的核心 - AQS【哪些琐是基于AQS来实现的】

Java架构师迁哥

AOT星辰生态系统APP开发|AOT星辰生态软件开发

系统开发 现成系统

淦!终于有人把Java 8和Spring 5完美合体了,业界堪称“神迹”

Java架构追梦

Java spring 架构 面试 springboot

双非本硕四面百度竟意外成功?看完我的面试经历 网友都称:过于优秀

比伯

Java 编程 架构 面试 计算机

架构师训练营 -week11-作业

大刘

极客大学架构师训练营

3本书免费学习数据科学与统计学

计算机与AI

统计学

数字货币管理三大新模式

CECBC

数字货币

🤳你要悄悄变优秀,然后惊艳所有人

蚂蚁集团移动开发平台 mPaaS

mPaaS 智能投放 界面改版 产品资讯

深入解读:KubeVela 与 PaaS 有何不同?

阿里巴巴云原生

阿里云 开源 容器 云原生 CloudNative

小心踩雷,一次Java内存泄漏排查实战

AI乔治

Java 架构 JVM 内存

AWS IoT Core设计解析

soolaugust

边缘计算 AWS 工业4.0 工业物联网 iiot

LiteOS基于Sensorhub的超声波模组移植

华为云开发者联盟

物联网 LiteOS 超声波

接口测试之post常见数据提交方式

测试人生路

post 接口测试

稳坐开发领域霸主之位,揭秘C语言无可取代的几大原因!

华为云开发者联盟

c rust Go 语言

框架设计

raox

极客大学架构师训练营

记一次GC频繁且间隔较长解决实战总结

AI乔治

Java 架构 JVM GC

从零开始搭建Kafka+SpringBoot分布式消息系统

小Q

kafka zookeeper 学习 面试 springboot

年轻人,快来看看分布式与集群的区别是什么?

程序员小灰

redis 分布式 后台开发 集群 Linux服务器开发

专访阿里云 Serverless 负责人:无服务器不会让后端失业

阿里巴巴云原生

Serverless 微服务 云原生 CloudNative 无服务器

面对日益严峻的网络安全问题,CDN可以做什么?

阿里云Edge Plus

整天都在讨论使用SpringBoot,可你居然连缓存都不清楚

小Q

Java 缓存 学习 面试 springboot

开发技巧 | mPaaS 小程序自定义事件,如何取消注册?

蚂蚁集团移动开发平台 mPaaS

小程序 API mPaaS

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