答疑专栏
❗❗❗ 不说废话,直接干货 ❗❗❗
背景:三月份我做了大概十几场笔试,一共面试了十家公司左右。在整个二三月份没有再练习算法的情况下,平均三题A2题的样子(比较普通,但是进面足够)。在面试环节,每次算法题我都有幸做出来了。
据小猪了解和亲身体验,相当一部分公司会较为看重笔试成绩,比如阿里系尤其是今年的淘天,或者pdd,华为等。在简历大片大片雷同的电商、外卖、管理平台、短链接项目的情况下,笔试成绩成了大厂有效筛面的重要工具。
我是26届,数据结构都还没学,如何开始? 25届,还有几个月秋招,来得及吗? 学了数据结构,也刷了算法,但是笔试依然无从下手,怎么提升?
针对以上三个问题,三种不同状态,综合我的笔试准备流程和经验,和大家分享,仅供参考~
1️⃣26届零基础
❗ 26届
时间绰绰有余,不用担心!
- 打牢基础
- 学习方式。倾向跟视频学习,推荐尚硅谷数据结构与算法(其实也有推荐考研王道数据结构),我的建议是都很好,应对校招没问题,主要看你更喜欢谁的风格。倾向看文章学习,推荐 labuladong 的算法笔记 (opens new window),代码随想录 (opens new window),二者选其一,在精不在多。
- 学习模式。不要光看 不要光看 不要光看!!!任何一门语言或技术栈的学习,切忌只看不练!我是22年开始摸索学习算法,快速看完某个基础数据结构,就去leetcode刷一类题,从simple到hard。我的思路不一定适合你,但是希望你一定要多做多练多总结。
- 时间规划。切忌三天打鱼两天晒网。完成打牢基础这个阶段,建议在3-4周内。
- 提升速度
两种模式,根据时间选择~
- 时间完全充足。时间充足,多么奢侈的话o(╥﹏╥)o 我建议跟着兴趣来吧!我当时刷算法最“快乐”的时间段,就是每天不带目的,打开leetcode,闭上眼随机点几题的时候了。如果你时间充裕,不如享受算法。
- 时间需要规划。建议第一阶段,跟随 labuladong 的算法笔记 (opens new window) 或 代码随想录 (opens new window) 做题,其上有完整解答思路和流程。第二阶段,计时 计时 计时 刷 leetcode 面试经典150题 或 热题100。
不论哪种模式,注意好 以下三点:
- 控制时间。建议总体上 简单题控制在10分钟能完成,中档题20分钟,困难题30分钟。如果超时就不要再想了,可以看看讨论区或答题区各种思路。
- 注意总结。不要背题 不要背题 不要背题!其实经常有看到一些经验之谈,建议适当背几道题,我个人不建议且没有背过。与其有背题的时间,不如多多总结归纳,这道题是从什么点出发,怎么想到用这种结构来做,为什么使用动规,贪心的理由是什么...一类题有一类题的模版,一道题有一道题的抽象。一道题做精,一类题就拿下了。
哪怕刷完了 hot100或其他,也不要就此打住❗ 算法太容易手生了,后期每天保持一题或多题的量维持手感即可。
# 如何(从零)开始准备笔试?
写在前面 我是22年八月开始有了想刷算法的冲动,打开leetcode第一题,干瞪眼五分钟后果断放弃...迷茫的时候打开了B站大学,看起了某谷的数据结构基础课程,艰难的踏上了把算法融入生活的道路。时至去年年底,大概刷了500题,今年春招面试过程中的算法全A,笔试平均3A2。悟性一般,但是走的许多弯路也能总结点经验和大家分析。
接上文👇
2️⃣25届冲秋招
❗ 0基础
毫无疑问,秋招的算法难度会比目前暑期实习岗难度大。0基础小伙伴 3个月左右的时间需要合理规划,个人建议:
- 基础补充
直接跟着 labuladong 的算法笔记 (opens new window) 或 代码随想录 (opens new window)(个人更推荐) 来学习,跳过图论相关知识。面试中算法部分基本不考,笔试中一般在最后一题,大部分人都做不出来,问题不大。
这里以 代码随想录 (opens new window) 为例:
学习动态规划时,按照章节顺序首先学习 理论基础:
然后从具体题目展开:不要直接看思路!自己根据上一篇推荐的不同难度题型推荐时间来完成,再学习他的解题思路。建议为节约时间,部分解题视频可跳过,各章节的题目先选做。
如果 5月 开始,建议在 2-3周内 完成基本数据结构的掌握和简单算法题的实现
- 刷题总结 刷题总结 刷题总结
反复 刷 leetcode 面试经典150题,每天 3-4 题 + 总结 控制在 2.5h 左右,预计 6月 可完成。这样 7-8 月有较为充足时间准备八股(后续会出八股各阶段准备攻略哦)和项目。如果你已经超额完成,十分熟练了,可以做做其他不同类型的高频题奖励下自己😄。如果你的项目经验实在欠缺需要时间准备,可以刷 leetcode 热题100,但不推荐,题量太少。具体的需要自由调整。
一定要注意总结和复盘!比如回溯问题中的used数组,什么条件下会使用,什么时候又不用,要知其所以然,尽量不要背题。
❗ 想提高
笔试中的算法题,一般都是ACM模式。各种小芳小美,各种打怪兽...你需要理解题目背后的含义,然后...打败怪兽
其实就我个人而言,我是确保a掉前两题,尽量看看第三题(通常图论)。这里给大家推荐 左神,小破站搜索 左程云一周刷爆leetcode 就有相关视频。他的思路灵活且犀利,虽然视频较长,但时间充足情况下看懂受益匪浅,可以挑着学习他在笔试高频问题上的解决思路,比如 贪心、动态规划。
除此之外,我的经验之谈无非就是多做题多总结。如果面对笔试中的中档题无从下笔,更多可能是 1.题目做少了 2.没有成熟的方法论。因此建议在 刷题总结阶段 多做题,做精题。看看 文档中的解题思路,看看讨论区、解答区的优秀思想,这样才能再抽象算法问题后,能快速想到一两种可能可行的解决方案。