当一个程序员真正掌握算法之后,会变得有多强?

Hollis

共 3333字,需浏览 7分钟

 ·

2020-01-14 23:28

70995518d0956dbde204780f5c79bace.webp

2020 = 1024 + 996...对于程序员来说,2020年看起来可不怎么“友好”啊。(参与文末有奖互动就有机会免费获得 99 元哦!)

 

但是不管外部环境如何,提升自身内功都是每个职场人所必需的。在如今的环境下,想要换一份理想的工作更是需要“找准时机,抓住机会”,当然在面试前的准备是必不可少的。极客大学邀请了算法训练营的助教,请他们分享一下作为面试官喜欢考察候选人哪些能力、他们有哪些“精选算法面试题”。我们的助教们来自美团、百度或海外的一线互联网公司,希望他们分享的经验可以帮助到你。


前美团资深工程师Windy


作为面试官,我比较看中候选人的行业背景、专业技能还有一些软素质。具体来说:


  • 行业背景就是上一份工作所在的领域比如电商、社交等;

  • 专业技能的话主要是语言基础,高并发、分布式、中间件等知识,以及排查问题、运维、设计的能力。这里面最重要的是编程能力,针对高级岗位还要考察架构能力。

  • 软素质包括候选人的沟通能力、项目管理能力和领导力等。

 

作为面试官,在面试过程我会用笔试题的形式考察候选人的思维逻辑能力,通常考察的具体知识点包括链表、树、排序、二分查找等,需要候选人能够分析出不同算法的时间复杂度和空间复杂度。题目我会选择LeetCode上简单到中等难度的题目,常考的有:


  • 单链表翻转(递归或者循环)

  • 树的前中后序遍历

  • 动态规划(爬楼梯以及变形问题、斐波那契数列、股票问题)

  • 二分查找(以及变形)

  • 排序(快排)

通过算法面试题的考察,我希望候选人不光可以展示编程能力,还可以通过详细了解题目,展示自己的沟通能力和推演能力(如何构建题目的思路)。最关键的编程能力,候选人可以展示自己对于问题边界的思考,比较不同方法的性能和效率,给出解决问题的多种方法。

 

我的精选算法面试题是:搜索二维矩阵

 09d7dc856c8622a2db754fcfed48d869.webp

 

百度高级研发工程师Kimze


针对不同层次的候选,作为面试官肯定有所侧重。在算法训练营中有不少是在校的学生,针对应届毕业生的话,我主要是考察态度、编程基础,以及数据结构和算法的基本功。对于有经验的同学来说,我会结合简历技能,围绕项目经验,考察领域能力的广度和深度,探知到候选人的上限,也可以互相交流学习。

 

高可用、高性能、高扩展性作为后端通用的技术,针对不同技术栈,我会考察:


  • 分布式分层架构设计理解

  • LB 负载均衡、前端压缩/CDN 缓存/DNS相关知识

  • 多级缓存、MQ异步解耦 

  • 无状态化设计 -> 快速扩缩容

  • DB Sharding 、读写分离、分库分表、SQL和慢查询优化、JVM优化等措施

  • ES检索、数据异构、大数据处理

  • 一致性设计:批量异步、串行改并行、同步改异步

  • 数据协议、通信协议  

  • 容量预估规划、全链路压测、灰度发布设计、降级/熔断/限流的设计、RPC服务治理

  • 分布式配置、注册、监控

  • CI/CD:“Docker + Kubernetes”架构  

 

对于数据结构和算法的考察,比较基础的如快排、归并、二分查找的题目,候选人要能分析出时间和空间复杂度,并展示出相关推演的过程。对于高级一些的内容,我最低的要求是有思路,知道什么情况下用什么样的数据结构和算法,并写出模板即可。比如我会问:


  • Redis底层数据结构设计,引申出跳表的原理,再扩展到Hash的实现及扩容实现,希望考察候选人是否了解跳表优缺点, 以及Redis为什么这么设计。 

  • MySQL B+树索引结构的时间复杂度以及选型原因,希望考察为什么使用B+树而不是红黑树或Hash、跳表。

 

我考察的具体题目并不多,我认为非常好的一道题目是:零钱兑换


2e8dd188d649ec386d490cd07ff6895d.webp

 

Serko高级软件工程师Xu


不同公司、不同职位、不同级别所要求能力、范围和深度不一样,海外公司和国内互联网公司的业务需求也有很大不同,但我认为作为程序员一般需要具备下面能力:


  • 编程能力(编码、数据结构和算法、数学)

  • 简洁代码(Clean code)

  • 好的编程实践(Good programming practices)

  • 软件设计

  • 系统设计

  • 软件架构

  • 系统架构

  • 分析和解决问题能力

  • 领导力

  • 沟通表达能力

  • 合作能力

  • 分享能力

  • 持续学习能力 

 

对于大多数需要面试的初级和中级程序员来说,作为技术面第一轮的白板算法题,我一般会出LeetCode上easy到meduim的题目,这类题目一般可以暴力求解、能够优化,有多种解法和思路,同时候选人最好能够展示一些软件工程方面的实力。 

 

在做题过程中,有几点需要注意:


  • 理解题目,在这个过程中要和面试官沟通,澄清题目的要求和相关疑问,而不是一上来就开始写程序。

  • 设计算法,在这个过程中和面试官不断互动,一步一步探寻最优解,而不是一声不吭,一个人”埋头苦干“。

  • 实现算法,在这个过程中可以展示你对软件开发和测试的理解。

  • 代码完成后,酌情可以和面试官讨论一些相关东西,比如TDD、BDD、CI/CD等。

 

我的精选算法面试题是:验证二叉搜索树


a1005b59c6cee882fcb958ec3a9adac9.webp


以上这些题目你都会做了吗?我想你绝对会懵逼!不服?来,评论区里show出你的代码!


什么?你不会?那也不用捉急,同其他编程技能一样,高效掌握常见的算法与数据结构知识,并学会用相应的算法来解决实际工作和面试中的算法问题,都是可以通过学习和训练不断提高的。

 

由前 Facebook 工程师覃超老师担任讲师的「极客大学·算法训练营」将用 10 周时间,帮你迅速提升算法解题能力和思维方式,还能结识来自五湖四海优秀的伙伴与你一起精进。算法训练营不限地域,内容从低到高、由浅入深,涵盖所有核心算法知识精讲、解题思路、实战结合,学完后有能力解决 80% 中等难度的算法题目。

 

算法训练营第 6 期正在招生,无论你想备战即将到来的“金三银四”,还是希望通过系统学习数据结构与算法来提升编程思维,这里都会满足你。


?扫码报名 

仅限前 50 人有效!先到先得!


?现在 9.9 元还可以体验7天哦!


算法训练营第6期招募


 覃超老师,他从美国顶尖学府卡内基梅隆大学计算机专业毕业,曾经在 Facebook工作三年,作为 Facebook Messenger Tech Lead,参与了 Facebook App、Facebook Messenger、Facebook Phone 等产品的研发工作。


本期算法训练营帮助不同基础的软件工程师精进算法能力、构建知识体系。


它不仅涵盖常见的算法面试题精讲,还包括数据结构和算法的理论知识的讲解,以及算法在实际工程上的应用,一次性将数据结构和算法的方方面面讲透;同时训练营设计了一套有效的学习机制,帮助大家克服学习的种种障碍这个训练营能够让你在有限的时间内,实现算法学习的突破。 


1. 通过完备的课程体系,帮你建立算法学习的全景图


不同于我的视频专栏以算法面试题目讲解为主,算法训练营不仅涵盖面试题精讲,还会带你建立完整的算法知识体系,详细讲解常见的数据结构和算法的理论知识,以及算法在实际工程上的应用,一次性将数据结构和算法的方方面面讲透。

 

2. 通过有计划的学习机制,让你进行有跟踪、有反馈的闭环学习


不仅只是观看课程视频,我会在每节课后给你精选练习题,并通过期中、期末考试让你自查成果,接收到实际学习反馈。每个阶段我也会根据大家的学习情况,进行重点、难点的直播讲解。班主任和我们的教研组将倾力提供全方位线上学习服务,包括助教答疑、作业、线上讨论、线下社交等。

 

3. 通过建立班级组织,让你跟优秀的伙伴一起学习


你不会是独立学习的个体,你会在一个班级中、一个小组中,跟优秀的同学共同克服难关。班主任会组织大家进行线上分享和讨论,也会有班长、学习委员组织大家进行线下的社交,从这些集体活动中,你会吸收到很多同班同学输出的优质内容和学习方法。

 

4. 600+大厂内推,给你带来更多职业发展机会


优秀毕业生毕业一年内,随时可获得极客大学提供的两次一线互联网大厂内推服务,更有 TGO 鲲鹏会的 600 家企业推荐通道为你敞开,获得更多的职业发展机会。


详细课程大纲如下:


96853cb220c37e0f5ba3ecac3cf838e2.webp

475cfa81ed0bf2a71c4449abed07e71d.webp

bd3ef74934369d54de5f9792b64a4d97.webp

439f6f16ef99b6a877614b670799b015.webp

e6281158543028355bf3bc1a43502b42.webp




上下滑动查看课程大纲



?扫码报名 

仅限前 50 人有效!先到先得!


?现在 9.9 元还可以体验7天哦!


最后,来看看算法训练营的往期学员是如何在训练营成长的:

12bd604f7bb3317712bbe6d367dcbcca.webp

85ddf089b52bbe0ccc535a8d66996792.webp

69e6bc4759039e4de5c77293d986f354.webp

?点击阅读原文,就有机会免费获得 99 元哦~

浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报