写点什么

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

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

评论

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

大模型预测,下一个token何必是文字?

Openlab_cosmoplat

SD-WAN组网方案简述

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

京东一面挂在了CAS算法的三大问题上,痛定思痛不做同一个知识点的小丑

不在线第一只蜗牛

Java 算法 JVM CAS

分享 5 个提高技术领导力的技巧

高端章鱼哥

DIY 3 种分库分表分片算法,自己写的轮子才吊!

程序员小富

Java 分库分表

以夸娥千卡集群为底座,摩尔线程与无问芯穹联手开启千亿大模型服务新篇章

Geek_2d6073

OpenAI 展示音频模型 Voice Engine;清明节前 AI 复活亲人成热门生意丨RTE 开发者日报 Vol.175

声网

高防服务器干什么的?用途及其重要性解析

一只扑棱蛾子

高防服务器

AIGC重塑金融:AI大模型驱动的金融变革与实践

EquatorCoco

人工智能 金融 AIGC

掌握ADB:详解操作命令及完整用法指南(二)

霍格沃兹测试开发学社

Flutter iOS上架指南

雪奈椰子

强烈推荐:2024 年12款 Visual Studio 亲测、好用、优秀的工具,AI插件等

EquatorCoco

人工智能 Visual

探究云手机的海外原生IP优势

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 海外原生IP

【干货】零售企业商品数字化管理措施探讨

第七在线

Git常用命令大全:让你轻松驾驭版本控制

霍格沃兹测试开发学社

引入了 Shiro 的项目请求路径中带有中文报错400 的问题

emanjusaka

Java shiro Error 400

新一代营销费用管理:覆盖线上线下营销渠道各链路多场景费用

赛博威科技

Higress 基于自定义插件访问 Redis

阿里巴巴云原生

阿里云 云原生 Higress

基于Sermant的全链路灰度发布在汽车行业DMS系统的应用

华为云开源

开源 华为云 服务治理 微服务治理 sermant

DR9274-6GK|4T4RQCN6224 QCN9274 QCN6274 WiFi7 Lower Power Consumption Network Card

wallyslilly

QCN6224

云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权

阿里巴巴云原生

阿里云 微服务 云原生 网关

Baseswap交易所的得力助手:Base链市值机器人

开发丨飞机丨 @aivenli

服了,一线城市的后端都卷成这样了吗!?

王中阳Go

Java golang 面试 面试题 后端面经

SD-WAN支持的多种线路类型

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

阿里1688布局跨境业务,瞄准海外代采

技术冰糖葫芦

API 接口

Python 代码混淆工具概述

三思多功能智慧综合杆助推上海杨浦区数智化升级

电子信息发烧客

一文教你如何安装和使用Docker

伤感汤姆布利柏

如何在Java中读取超过内存大小的文件

快乐非自愿限量之名

Java

Android Studio安装超详细步骤

霍格沃兹测试开发学社

JMeter前置处理器-Beanshell前置处理器详解

霍格沃兹测试开发学社

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