我多篇顶会论文在手,面试AI算法岗时竟然还要刷算法题? | 元旦送书福利

2021-01-01   AI科技评论

原标题:我多篇顶会论文在手,面试AI算法岗时竟然还要刷算法题? | 元旦送书福利

作者| 耳洞打三金

今天是2021年的第一天,AI科技评论首先祝大家2021年万事顺利、身体安康、心想事成、论文多多、新的一年牛气冲天( ఠൠఠ )ノ!!!

前些天我们编辑部有个例行活动:一起商讨元旦福利要为大家送什么书 。

为什么要送书呢?

因为书是人类的...... 是人类的...... 书中自有...... 书中自有......

好吧,其实是因为想直接送大家V100显卡,但是怕大家觉得太贵、心里过意不去、不好意思接受

那为什么说这是例行活

因为AI科技评论一直就在陆陆续续地为大家赠送书籍,就以今年下半年为例,AI科技评论在1024程序员节日曾为大家赠送了蜥蜴书:《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(原书第2版)》两书,中秋节之际曾为大家赠送了周志华教授著作《集成学习:基础与算法》(森林书)和贾扬清力荐《阿里云天池大赛赛题解析——机器学习篇》一书,在其它时候AI科技评论又送书了杨强老师的《迁移学习》一书以及吴军老师的《信息传》一书。

那今天我们又要送给大家什么书呢?

噢!这个不急,首先要从几件小事说起......

小事一:

在今年AI科技评论采访过的国内某TOP 2高校的一名AI研究生期间,他正在积极备战秋招,而除了顶会论文和项目经历之外,他最主要的准备都用在了刷算法题上面,其中以刷Leetcode Medium和 Hard为主,而去年三金我认识的另外一位 TOP 2隔壁的 TOP 2同学,十分优秀啊,多篇顶会在手,但是在准备谷歌研究院、达摩院等面试时同样也在辛苦地刷算法题。

小事二:

在今年的NeurIPS 2020开会期间,三金我登录NeurIPS的虚拟Poster聊天室之后,在里面遇到了一位北美CS TOP 10名校的博士生。这个时间他在聊天室,是因为这三个小时是他的一作论文的Poster时间,他要为陆陆续续来到他的论文虚拟Poster之处的其它AI研究员介绍自己的论文以及问答交流。

而三金我显然不是在问他论文相关的问题

,而是关心他的工作问题,他说他很忙,哦对了,他手上有像NeurIPS 这样顶会的多篇论文,他也曾在Facebook AI研究院等大厂研究员做过挺长时间实习研究员,但是他面试依旧也要刷算法题,我没有问他是不是也在Leetcode 上刷,因为我怕他会觉得我比较Low、怕他把算法导论等黑色大理石书直接甩在我的脸上。

小事三:哦这个事就是传闻了,传闻以XX跳动为首的互联网大厂近年来在算法工程师的面试时,算法题考察的越来越难了,难到手写红黑树都已经成为不了段子了。

难归难,但是据流传国内江湖上还是以Leetcode Hard为一个评判基准,而且有时是面试上来就做一到三道算法题,确实是这样吗?

那是否每个人面试都需要做算法题呢?

想必不是,Kai ming这样的大神估计是不需要的,在ACM总决赛拿过牌子、Codeforces、Topcoder榜上有名的同学估计也是不需要的。

那三金我需要做算法题吗?

不需要,但这不代表我啥都不会,简单的动态规划还是不在话下的

AI太内卷了啊,现在国内外的选手都太优秀了,学历、顶会论文、项目、Coding能力都得要求 ,当去大厂面试的时候,Coding能力是很重要的考察标准,如果你没有顶会论文,但是Coding能力很强,这种情况是有可能过的,如果你Coding能力很拉垮,哪怕有一两篇顶会论文,那八成也是要挂掉。

当然这也要分研究岗和工程岗,有时具体情况要具体而论,比如对AI科学家这一级别一般不至于还要让对方做几道算法题,否则那就太掉价了。

总之,哪怕多篇顶会论文在手,找算法工作时大概率上还是手撕算法题的,因为企业要的还是工程师多一些,没有Coding能力怎么展开工程业务呢,算法工程师,算法工程师,首先你得是个工程师。

三金我口吐芬芳了这么多,需要说明的一点是以上观点仅仅代表三金我一人哈,不代表AI科技评论,如有任何不妥当之处,欢迎评论区来打三金脸

那么今天到底要送什么书就显而易见了,它肯定是一本算法书,准确的说是教大家如何高效地刷算法题的书。

它就是本月份迅猛夺下京东全品类新书榜第一名、京东计算机图书总榜第一名、

并且在两网榜单上霸榜至今的、建议程序员人手一册的、GitHub 68.8k star的硬核算法教程——《labuladong的算法小抄》!

上文说到大部分同学找算法工作都得刷算法题,且以在Leetcode平台为主,这是为什么呢?

大概是因为力扣的算法题因被BAT、京东、美团、字节跳动、滴滴、拼多多、微软、亚马逊、Google、Facebook等一线科技公司选作面试题从此名声大噪的吧。

从程序员的角度来讲,Leetcode这个平台对于在线刷题十分友好,社区讨论也非常积极,每周参加一次的Leetcode周赛也是很多同学业余的爱好。

不过很少有人能刷完力扣的上千道题,本“算法小抄”就把这些海量算法题分门别类汇总,提炼出各类题的套路和解题框架,帮助你快速掌握算法思维,以不变应万变来应对互联网公司的各种算法题!

都是白给的套路,谁能不爱!

再加上书中用喜闻乐见的语言来讲述算法,还配上了几百幅有趣的算法图示及部分动画演示。

这让三金我这一这样啥都不懂、啥都不会的同学都能快乐阅读,快乐学习。

不禁感慨,这本书确实配得上这个排名!

准备算法题最高效的方法当然是直接刷题!

但是,刷题也是有技巧的,刷题平台上动辄几千道题,难道你要全刷完吗?正确刷题方式是——

边刷边归纳总结,抽象出每种题型的套路框架。

比如,刷一道算法题,解题思路有什么可复用的地方,是否可以和之前做的某一道题联系起来?

再比如,都说动态规划问题难,千变万化,但这类问题本身是不是有一些特性,是不是能够抽象出一套抽象的指导方法来做动态规划问题?

在《labuladong 的算法小抄》中,已经为你全部总结好了这些核心框架,并且直接集中放到了开篇第一章,后续章节精选了八十道力扣算法题,手把手教你如何运用算法框架去解决实际算法问题。

本书专攻算法刷题,训练算法思维,应对算法笔试。

本书作者付东来,labuladong的作者,江湖人称Offer收割机,有着多年的刷题经验,有着他的经验加持,相信把这本书刷完,你也可以培养出框架思维!

举例说明!!!

在《labuladong的算法小抄》“动态规划解题套路框架”章节中,会讲到简单的凑零钱问题,暴力解法就是遍历一棵 N 叉树:

1defcoinChange(coins: List[int], amount: int):

2

3defdp(n):

4ifn == 0: return0

5ifn < 0: return-1

6

7res = float( 'INF')

8forcoin incoins:

9subproblem = dp(n - coin)

10# 子问题无解,跳过

11ifsubproblem == -1: continue

12res = min(res, 1+ subproblem)

13returnres ifres != float( 'INF') else-1

14

15returndp(amount)

这么多代码看不懂怎么办?直接提取框架,这样就能看出核心思路了,这就是遍历 N叉树的框架:

1defdp(n):

2forcoin incoins:

3dp(n - coin)

其实很多动态规划问题就是在遍历一棵树,你如果对树的遍历操作烂熟于心,那么起码知道怎么把思路转化成代码,也知道如何提取别人解法的核心思路。

再看看回溯算法,在《labuladong的算法小抄》“ 回溯算法解题套路框架”中会直接告诉你,回溯算法就是一个 N 叉树的前序 + 后序遍历问题,没有例外。比如,排列组合问题、经典的回溯问题,主要代码如下:

1voidbacktrack( int[] nums, LinkedList track ) {

2if(track.size == nums.length) {

3res. add( newLinkedList(track));

4return;

5}

6

7for( inti = 0; i < nums.length; i++) {

8if(track.contains(nums[i]))

9continue;

10track. add(nums[i]);

11// 进入下一层决策树

12backtrack(nums, track);

13track.removeLast;

14}

15

16/* 提取 N叉树遍历框架 */

17voidbacktrack( int[] nums, LinkedList track ) {

18for( inti = 0; i < nums.length; i++) {

19backtrack(nums, track);

20}

N 叉树的遍历框架,找出来了吧。你说,树这种结构重不重要?

综上所述,对于畏惧算法或者刷题很多但依然感觉不得要领的朋友来说,可以先刷树的相关题目,试着从框架看问题,而不要纠结于细节。

所谓纠结细节,就比如纠结 i 到底应该加到 n 还是加到 n - 1 ,这个数组的大小到底应该开成 n 还是 n + 1

从框架看问题,就是像我们这样基于框架进行抽取和扩展,既可以在看别人解法时快速理解核心逻辑,也有助于我们找到自己写解法时的思路方向。

当然,如果细节出错,你将得不到正确的答案,但是只要有框架,再错也错不到哪去,因为你的方向是对的。但是,你要是心中没有框架,那么根本无法解题,给你答案,也不能意识到这就是树的遍历问题。

框架思维是很重要的,有时候按照流程写出解法,说实话我自己都不知道为啥是对的,反正它就是对了……

这就是框架的力量,能够保证你在思路不那么清晰的时候,依然写出正确的程序。

当然最重要的还是为众多大佬节省刷题时间提高刷题效率,毕竟您也不想因为准备面试而天天一道一道的刷算法题对吧?

[赠书福利]

AI科技评论本次联合【博文视点】为大家带来15本“ 《labuladong 的算法小抄》”正版新书。

在本文留言区留言,欢迎大家畅所欲言,谈一谈你刷算法的故事,或你对2020的总结或者是对2021年的规划和心愿,甚至可以是新的一年对AI科技评论的建议和期待,有哪些喜欢看的报道,还希望看到什么样的报道?

AI 科技评论将会在留言区选出 15名读者,每人送出《labuladong 的算法小抄》一本。

活动规则:

2. 留言内容会有筛选,例如“选我上去”等内容将不会被筛选,亦不会中奖。

3. 本活动时间为2021年1月1日 - 2020年1月7日(23:00),活动推送内仅允许中奖一次。