笔试技巧知多少 2 | 笔试备考指南
5973
2023.03.27
发布于 未知归属地

讨论帖头图.png

点击标签栏里的 「暖春 Offer 计划」 标签或点击头图,可以进入完整专栏


↗️ 嘿,又是我

还记得咱们上期提到的关于笔试前的准备、一些需要注意的考核侧重点、该怎么准备笔试,最后还给同学们准备了一个九日复习计划,不知道大家有没有按照计划稳步复习,现在进行到第几天了呢?

需要补课的同学可以点击 👉🏻 传送门: 笔试技巧知多少 | 笔试备考指南

本期,学习君将带深入学习笔试中经常遇到的关于数据结构和算法的知识。


近日,不少扣友在讨论区提问:

  • 算法笔试的高频考点有哪些?有无快速解题的小技巧?
  • 理论知识掌握了,但缺乏实战经验...
  • 觉得自己掌握了数据结构知识点,做题的时候又不会了怎么办?

发现扣友们心存上述疑惑后,学习君当然不能坐视不管,这不马上为大家送来了多款干货!


1️⃣ 笔试中数据结构题题型

🍈 举个例子

先来看小伙伴分享的几个笔试中经常遇到的数据结构题型吧:

第一位小伙伴:

12.png

第二位小伙伴:

image.png


🍄 那么,数据结构为何在笔试中如此关键?

在计算机科学的各个领域中,数据结构都是一个关键的概念,因为它能够帮助程序员有效地解决问题,并提高程序的效率和性能。

  1. 它是解决复杂问题的基础: 数据结构提供了处理和组织数据的方法,能够帮助程序员设计和实现更高效的算法,从而解决复杂的问题。在笔试中,面试官通常会询问有关数据结构的问题,以便了解面试者对问题的分析和解决能力。
  2. 它是编程语言的基础: 数据结构是计算机科学中的核心概念,很多编程语言都提供了对数据结构的支持。在笔试中,面试官通常会检查面试者对数据结构的理解和运用能力,以便了解他们是否具备编程的基本能力。
  3. 它是算法的基础: 数据结构和算法是密不可分的。很多算法都需要使用特定的数据结构来实现。在笔试中,面试官通常会考察面试者的算法能力,并要求他们在限定时间内使用数据结构来解决一些问题。

因此,数据结构在计算机科学和编程中是非常重要的,也是笔试中需要关注和掌握的关键知识点之一。


🍈 再举个例子:

从讨论区的面经帖中不难发现,几乎所有技术岗位的笔试,都避不开对数据结构掌握程度的考察。例如扣友 @帅地 分享的「腾讯」Java 岗笔试中,就出现了以下关数据结构的问题:

  1. HashMap 原理
  2. 为什么 HashMap 无序?为什么不安全?
  3. 海量数据存进 HashMap 性能会变差吗?
  4. Hash 碰撞的解决方法
  5. HashMap 的 reHash 过程,这一过程中会发生安全问题吗?
  6. CurrentHashMap 原理
  7. TreeMap 的实现原理

事实上,几乎所有国内外一线大厂,例如 BAT、Google、Facebook,在笔试时都十分注重对数据结构的考察,甚至 90% 的笔试时间都围绕数据结构和算法展开。

因此,只有熟练掌握数据结构与算法,才能在与笔试官的对垒中位居上风。


💎 数据结构高频考点

image.png


👀 数据结构学习锦囊

推荐学习资源推荐学习资源推荐学习资源
数组和字符串image.png哈希表精讲image.png二叉树image.png
队列与栈精讲image.png链表图文学image.png一本吃透数据结构image.png

2️⃣ 笔试中算法题题型

🍈 举个例子

先来看几个学习君最近刚遇到的小伙伴的例子吧:

第一位小伙伴:

image.png


第二位小伙伴:

image.png


💎 算法高频考点梳理

算法是一门系统性学科,因此,知识体系的搭建十分重要。为了助力大家顺利拿下算法,学习君梳理了算法在笔试中的高频考点,快来看看你都掌握了没有?

image.png


🔔 算法笔试技巧

1、明确输入输出:在写算法之前,需要明确输入和输出是什么,这有助于避免漏掉某些边界情况。

2、确定算法时间复杂度:对于某些需要优化时间复杂度的算法题目,需要先确定算法的时间复杂度。

3、画图帮助理解:对于一些图形问题,画图有助于更好地理解问题,找到解决问题的关键。

4、举例子验证算法正确性:在写算法之后,可以通过举例子验证算法的正确性,这有助于避免算法漏洞。

5、模块化编程:在编写代码时,可以将算法拆分为不同的模块,每个模块专门处理一个小问题,这有助于提高代码的可读性和可维护性。

6、注意细节:在实现算法时,需要注意一些细节问题,比如数组越界、变量类型转换等等,这些细节问题容易忽略,但却是导致程序出错的主要原因之一。

7、沟通和交流:在笔试中,有时需要与面试官或其他笔试者进行沟通和交流,这可以帮助更好地理解问题,找到解决问题的思路。

♥ 如果你还想知道详细的笔试技巧请戳:算法面试小抄


👀 算法学习锦囊

推荐学习资源推荐学习资源推荐学习资源
排序算法精讲image.png递归与分治精讲image.png广度优先搜索精讲image.png
动态规划图文学:线性 & 区间动态image.png贪心算法精讲image.png排序算法图文学image.png

3️⃣ 刷题攻略

💡 动态规划

动态规划算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。

动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的 ( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 )。

动态规划常见问题

动态规划经典问题.png

推荐做题


💎 递归与分治专项

  • 递归是编程技巧,直接体现在代码上 ,即函数自己调用自己;在调用的函数执行完毕之后,程序会回到产生调用的地方,继续做一些其他事情。调用的过程被称作为递归,返回的过程被称作为回溯。
  • 分治是一种算法设计的思想,将大问题分解成多个小问题,例如归并排序将大问题:「排序整个数组」,分解为小问题:「排序左半和右半」;绝大部分情况下「分治算法」通过「递归」实现。即:子问题的求解通过递归方法实现。

推荐做题


🔮 贪心专项

贪心算法是对完成一件事情的方法的描述,贪心算法每一次都做出当前看起来最好的选择,而不用考虑其它可能的选择。

贪心算法的学习可以与动态规划算法进行比较,看看它到底比动态规划算法少考虑了哪些子问题,为什么可以少考虑那些子问题,而每次只专注于求解一个子问题,通过逐步递推得到原问题的答案。

贪心算法经典问题

贪心算法经典问题.png

推荐做题


🎀 排序专项

排序算法是算法的入门知识,其经典思想可以用于很多算法当中。由于实现代码较短且应用广泛,因此,排序算法及其相关问题在面试中经常出现,尤其是快速排序和归并排序等基本排序算法。并且,经常有面试官要求现场手写出基本的排序算法。所以,要想在面试中开个好头,熟练掌握常见的排序算法思想 & 特点以及代码写法十分关键。

9 大常见排序算法分类及总结

排序算法.png

时间复杂度总结

排序算法复杂度总结.PNG

推荐做题


💖 学习计划

这些就是当下热门企业的最新出炉的学习计划啦,点击对应企业的图片链接,加入计划一起学习吧!

综合提升企业真题企业真题企业真题
春招突围「数据库」image.png网易有道春招备战image.png京东春招备战image.png兴业数金春招备战image.png
春招突围「后端岗」image.png百度春招备战image.pngbilibili 春招备战image.png美团春招备战image.png

# 📢 嗨嗨嗨【春招会员助力月】开启啦 春招如火如荼,力扣特为 PLUS 会员开启 『春招助力月』 PLUS 会员除尊享会员专属 LeetBook 外,还可享受其他学习资源的会员专属价。助力月已经开启,快快到力扣学习[『学习板块』](https://leetcode.cn/leetbook/)选取你最需的学习资源吧!
# 📔 内推专区

学习君已经为你准备好了众多内推渠道,点击心仪的公司进投递吧~

企业名称招聘岗位内推信息
非凸科技研发岗位https://leetcode.cn/circle/discuss/IftDSl/
蚂蚁集团平台工程研发/AI 工程https://leetcode.cn/circle/discuss/Rz2UWF/
米哈游多项岗位https://leetcode.cn/circle/discuss/a1WeEi/
华为研发岗位https://leetcode.cn/circle/discuss/g7XWW2/
阿里巴巴AE金融后端 Java 研发https://leetcode.cn/circle/discuss/CGLgJ2/
4399 游戏研发岗https://leetcode.cn/circle/discuss/GaWL3b/
阿里巴巴闲鱼后端 Java 研发https://leetcode.cn/circle/discuss/SpBAOB/
阿里云存储后端开发https://leetcode.cn/circle/discuss/cHcDDC/
慧咨环球C#开发https://leetcode.cn/circle/discuss/zxTrNn/
华为OD多项研发岗https://leetcode.cn/circle/discuss/klsCQG/
评论 (2)