大厂面试喜欢考算法,该怎么破?

Posted 博文视点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大厂面试喜欢考算法,该怎么破?相关的知识,希望对你有一定的参考价值。

这两年的软件工程师面试可谓神仙打架!

有些 985、211 院校毕业的高材生都没有拿到满意的 Offer。国内一些大公司的门槛也越来越高,这里的门槛很大程度上体现为对算法能力的要求。

很多人因为算法能力不过关而丧失了自己满意的 Offer。

然而,虽然算法能力的门槛越来越高,但是面试题的类型和底层逻辑是不变的,甚至不少公司考察的都是 LeetCode 原题,这其中也包括了国内 ATM 等大公司。
1、
算法面试都考什么?
如果从大的方向,可以将考察点分成两类。第一类是数据结构与算法基础知识,第二类是算法思想。

数据结构与算法基础知识
这部分,我又做了一个小小的细分,将其分为两个小点。

(1)各种数据结构的特性与基本操作

比如数组、队列、栈、链表、树、图等。尤其需要掌握的栈和树。这是因为使用到栈和树的地方实在太多了。比如 DOM 树(虚拟 DOM 树)、树形选择器、浏览器执行栈、浏览器历史记录栈,等等。

另外,围绕栈和树的题目也相当多,从最简单直接的树形数据结构转化复杂一点的数据结构解析,基本上用“栈+DFS”就可以实现,而做 DFS 时通常都围绕树型结构进行递归求解。

所以这两个数据结构非常重要。面试频率非常高,这里要敲一下重点,希望大家认真对待这部分。

(2)复杂度分析

复杂度分析是学习数据结构与算法的基础,也是核心。建议大家一定要先学会分析算法的复杂度,再去学习具体算法。

这部分内容包括时间复杂度和空间复杂度分析,其中每一种复杂度都有最好、最坏及均摊复杂度。而一般我们使用最坏复杂度比较多。

另外,分析复杂度除了分析迭代,也要会分析递归,递归栈的空间开销经常被大家所忽略,这点值得引起大家的注意。

算法思想(80%考点)
对于算法思想,需要大家在掌握了上面内容基础上进一步学习。

这里列举了五个考点,它们分别是:

• 搜索(BFS、DFS、回溯、二分等);

• 暴力优化(双指针、单调栈、前缀和等);

• 动态规划;

• 分治;

• 贪心。

以上内容覆盖了算法面试80%的考点。一些比较“冷门”的知识比如二分图、跳表、蓄水池抽样算法等考察的频率很低,就没有列出来。

希望大家集中精力将重心投入这 80% 考点中。其他知识点大家可以根据自己的情况学习。

2、
如何科学高效地准备算法面试

科学的学习路线和良好的刷题技巧是最重要的两个因素。

有一个科学的学习路线就不会迷茫,也不至于发生由于学习顺序不当导致自信心被打击的情况。有良好的刷题技巧就不至于反复踩坑,刷了又忘,忘了又刷,以至于最后什么都没有学到。

《算法通关之路》这本书就很好地解决了以上两个问题。

它不仅提供了完整的学习路线,内容覆盖面试的大部分考点。还浓缩了作者刷了数千道题目总结出来的核心知识点以及刷题技巧,帮助大家在有限的时间内搞定算法面试。

《算法通关之路》一书的最后一章就是专门讨论刷题技巧的,比如如何根据数据规模反推算法复杂度,以及数据预处理等,都是非常实用的刷题技巧。

这本书由多位作者编写。他们大多来自名校,在算法比赛中都有不错的成绩。另外还特别善于写题解,传达自己的思想。整理的算法题解和算法思想放到了 GitHub 进行开源,累计获取 4 万多 star,帮助了无数的程序员获得满意的 Offer。

相比于其他同类图书, 这本书有三个特点:

  1. 题目范围广泛,基本上覆盖了大部分的常见题型。题目全部来源于力扣的高频经典题,值得大家投入经历学习。

  2. 题目之间不是孤立的,而是有一定的相关性和难度梯度。旨在通过若干关联题目的讲解,让读者深入理解题目背后的逻辑,做到即使遇到新的题目也可以游刃有余。

  3. 大多数题目的讲解非常详细,而不是一笔带过,除此之外,还配有大量图片,非常适合新手学习。

以上是关于大厂面试喜欢考算法,该怎么破?的主要内容,如果未能解决你的问题,请参考以下文章

秋招已过,各大厂的面试题分享一波 附C++实现

下载量破千万!大厂面试题分享:图解Java+网络+算法笔记

为什么大厂非得考数据结构和算法?

面了20多家前端大厂,大厂面试到底考什么?(经验总结)

大厂Mysql高频面试题!全网最经典26道Spring面试题总结

看过太多大厂面试题,其实考的无非是这 3 点能力