前段时间,有一位好友找到我,向我打听阿里社招笔试是否看重算法题的考察,我给予了肯定的答复。他表现的有些沮丧,表示自己工程底子很扎实,框架源码也研究地很透彻,唯独算法能力不行,leetcode 上的简单题做起来都有点吃力。以至于面试一些公司时,基本都是前几面和面试官聊工程,相聊甚欢,一到笔试就 GG。鉴于我个人在学生时代有过 ACM 经历,对算法还是相当感冒的,个人算法能力不算出众,也不算弱,最好成绩是省赛金牌,区域赛铜牌(主要还是抱得队友的大腿),后来实在是写不动 C++ 了,中途转了 Java,借这个机会跟大家聊一聊,分享下个人对算法的一些认识。

我发现很多人有的一个观念是刷算法并不能很好地帮助他工作,他们中有些人是有了很多学校或者公司的项目经验,有些则是在数据库、RPC、大数据等某个垂直领域有了比较长时间的沉淀,他们会觉得刻意地刷算法题比较偏门,没有太大的价值。一方面有些人会比较自信,不认为需要靠算法来证明自己的价值,另一方面,有些人会认为刷算法题是应届生面试才需要考察的技能,对于社招来说,公司应该更注重考察项目经验和系统设计层面的技能。以我个人经验来看,面试互联网公司时,算法题几乎都是必考的一个环节,从公司的考察点出发,就可以佐证出,算法不重要这个观点的确是有待商榷的。还有一些人轻视算法,是觉得只有大厂才看重算法,一些小公司的面试根本不 care 算法,而且特别是像我文章开头提到那个朋友一样的人,有着比较强的工程能力,我相信在面试中一定可以凭借着这个优势,赢得面试官的好感,那我不妨再反问一句,为什么要让算法成为你的软肋呢?

我已经表露了我对面试中算法重要程度的态度,而且我也认为面试中考察算法能力是非常重要的一环。在公司里做项目,我们往往需要花费数个月去落地,而面试中完成算法题最多只限制在半小时内,虽然时间区间不同,但本质上都是在考察一个人在一个固定的时间内完成某个任务的能力。读题考察了候选人的理解能力,期间我会与候选人沟通,以确保他正确理解的题意,并且在码字之前,我会要求对方先讲解题思路,这考察了沟通能力,有的候选人可能没有经历过刷题训练,缺少一些常见的算法思维,但经过提示后,如果能快速地完成 coding,在笔试中或许也能够通过。所以你看,其实考察算法题其实和也是借此考验了你的工作能力,它要求你在短短的半个小时之内做到 Bug Free,一定程度上这比做工程更难,因为没有人为你测试,而你要想通过这一环节,是需要额外花费精力去训练的。

虽然我认为面试中算法很重要,推荐大家准备面试时多去刷刷题,但我也确实抵制一些偏题、怪题。以我的刷题经验和工作经验结合来看,推荐的难度为 leetcode 简单、中等题,ACM 铜牌、银牌题,仅供参考。记得有一次瞄了一眼阿里的校招在线笔试题,具体是哪个部门不清楚,那个难度估计得是地狱难度了,这类情况仅仅是小概率会发生,至少在我们大部门不会出现特别难的算法题。

很多人说面试造火箭,入职拧螺丝,以此来讽刺面试中算法面是不必要的,我是不赞同的。抛开面试,算法能力也的确是工作中帮助了我。简单举几个例子吧,我通过算法题接触到了欧拉函数、GCD 等数论知识,让我可以非常好地理解 RSA 加密的原理和实现过程,而 RSA 加密是很有可能在工程中被使用到的一种非对称加密方式;通过解决常见的数据结构类算法题,我了解到了跳表的实现,这方便了我去理解 Redis 的 Set 结构;熟练地解决贪心和 DP 等问题,也潜移默化地影响着我在工程项目中的代码逻辑。

字节跳动可以说是业内有名的看重算法面的公司了,但鉴于本人并不了解实际的情况,只能跟大家聊聊阿里的算法面试。分成两部分:实习生面试和社招面试。我这里的经验主要都是基于我所了解的情况,在阿里其他部门(非阿里云)可能情况就不一样了。先说实习生面试吧,算法主要考察的是简单题,主要以贪心、数据结构、模拟为主,可以说非常友好了,主要考验学生对于基础知识的掌握程度,但也要求候选人能够在较短时间内完成,否则很难在整体面试中获得 A 评价。而社招,算法面试的地位肯定是要低于工程能力的考核的,但是对于能不能发 offer 又起着决定性的作用,等于说,即使你的工作履历很 match 岗位,工程经验也很丰富,但算法面一塌糊涂,往往用人部门只能忍痛割爱了。

如果你正在准备面试,我是建议准备下算法,刷一些题目找下手感,leetcode 和各种在线 OJ 都是不错的选择,B 站也有很多视频,具体的刷题列表,我这儿没准备,相信你可以在网上找到很多的。

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

聊聊算法在面试中的地位相关推荐

  1. 如何在一场面试中展现你对Python的coding能力?| 技术头条

    点击上方↑↑↑蓝字关注我们~ 作者 | wLsq 来源 | Python数据科学(ID:PyDataScience) 如果你已经通过了招聘人员的电话面试,那么下面正是该展现你代码能力的时候了.无论是练 ...

  2. python以某种编码进行打印_如何在一场面试中展现你对Python的coding能力?

    (点击上方快速关注并设置为星标,一起学Python) 来源:Python数据科学    链接: https://mp.weixin.qq.com/s/KwjLpeRT4l-pOc_iRCLWzg 如果 ...

  3. 数据库查询某一列大写转化小写字母表示_算法/开发 面试必看! 【数据库】面试题合集...

    本合集整理了计算机专业相关算法/开发面试中遇到的[数据库]相关面试题,后续会不断更新,有需要的小伙伴可以点赞or收藏随时查阅哦! Q:数据库四大特性ACID? Atomicity(原子性):一个事务( ...

  4. 卖萌屋算法岗面试手册上线!通往面试自由之路

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 作为算法工程师,基础知识的重要性自然不必多说.虽然在有些项目中比较难感受到基础的作用,但扎实的coding能力,对算法本质和适用情况的理解,始终是决定 ...

  5. 《算法导论》读书笔记之第1章 算法在计算机中的作用

    本章是本书的开篇,介绍了什么是算法,为什么要学习算法,算法在计算机中的地位及作用. 算法(algorithm)简单来说就是定义良好的计算机过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出. ...

  6. python考试题库开发_算法/开发 面试必看! 【python基础】面试题合集

    本合集整理了计算机专业相关算法/开发面试中遇到的[python基础]相关面试题,后续会持续更新,有需要的小伙伴可以点赞or收藏随时查阅哦!♥ Q:python不可变对象?可变对象?可变对象:list ...

  7. 如何准备算法工程师面试,斩获一线互联网公司机器学习岗offer?

    最近互联网公司的秋招如火如荼的进行,我也收到过不少同学的关于面试和选择offer的咨询,因为在之前的专栏文章和一些回答中已经介绍过一些相关经验,这篇文章就做一个全面的总结. 本文将分三个部分: 1.机 ...

  8. java面试时候算法题多吗_java程序员面试中最容易被问到的18个算法题(附答案!)...

    作者:cpp软件架构狮 链接:https://www.toutiao.com/i6618515311836529156/ (点击阅读原文前去围观) 算法是比较复杂又基础的学科,每个学编程的人都会学习大 ...

  9. 几道 BAT 算法面试中经常问的「字符串」问题

    https://www.toutiao.com/a6675839856192520711/ String 作为最常见的编程语言类型之一,在算法面试中出现的频率极高. 1. 验证回文串 题目来源于 Le ...

最新文章

  1. centos下设置node.js开机启动(并且启动自己的项目js)
  2. Visual Studio 2005常用插件搜罗
  3. USACO Training Section 1.1黑色星期五Friday the Thirteenth
  4. 基于云平台的家居综合监测管理系统的设计与实现
  5. 红包随机分配问题php,自己写仿微信红包的随机分配,为什么平均数差距这么大?...
  6. 《计算机网络教程》(微课版 第五版)第四章 网络层与网络互连 课后习题及答案
  7. 【Android 】零基础到飞升 | ListView简单实用
  8. php中ne,eq相等 ne、neq不相等, gt大于, lt小于
  9. 一道好玩的逻辑题之蓝眼睛红眼睛
  10. ar8171 linux网卡驱动下载,ar8171 8175网卡驱动
  11. linux 查看声卡设备并测试录音 (ALSA 音频工具)
  12. ‘python不是内部或外部命令’解决办法
  13. 大学物理——波动光学
  14. 基于Matlab计算经典CFAR阈值
  15. 如何用数据库寻找相似的历史k线
  16. 面向对象编程、面向服务架构、基于组件开发三种编程模式的区别和适用领域
  17. Linux进程管理之task_struct结构体详解
  18. 百囚犯问题(100 prisoners problem)
  19. weka使用训练集分类测试集_weka实验报告
  20. 广工大物实验——弹簧振子周期公式研究

热门文章

  1. mysql截取不含%_zp blog
  2. 图论 ---- C. Nastya and Unexpected Guest(图上最短路dp + 01bfs)
  3. 点分治问题 ----------- P3727 曼哈顿计划E[点分治+博弈SG函数打表找规律]
  4. 矩阵连乘算法代码JAVA_矩阵连乘问题的动态规划算法(java)
  5. mysql innodb myisam 插入数据_mysql innodb换成myisam后插入数据变快?
  6. strut2服务器与android交互数据,用Android搭建客户端 手机和服务器交互开发
  7. centos pureftpd mysql_使用PureFTPd和MySQL的虚拟主机(包括配额和带宽管理)在CentOS 6.2上...
  8. cocoahttpserver 载入本地html,利用CocoaHttpServer搭建手机本地服务器
  9. eclipse java 7_在Eclipse中编程Java 7
  10. C/C++中strlen(),strcpy(),strcat()以及strcmp()的代码实现--学习笔记