跨考转码拿到大厂offer | 刷题的正确姿势(一)
从零基础到刷题700道:我的算法学习历程与互联网公司笔试面试准备经验(一)
我在本科时读的是一个不太知名的理学专业,直到考研复试才第一次接触算法。那时候听到学长说,几年前华为招聘时,只要能现场写出快速排序就能进,但现在无论是开发岗还是算法岗,不仅笔试要有一定分数,面试还得准备手撕代码,难度比以前高了不少。
从零基础到如今刷了近700道LeetCode题目,面试手撕代码也能顺利通过,这一路我学到了很多,也走了不少弯路。这篇帖子就想和大家分享一下我的算法学习经历,以及如何准备互联网公司的笔试和面试手撕算法。
我的学习算法的历程
AcWing:算法启蒙
在考研之前,我一道算法题都没做过。因为报考的学校复试笔试占比很高,我才开始接触算法。最开始是在AcWing上学习Y总(yxc)的算法基础课,感觉像是打开了一扇新门。
当时我只会一点C和Python的基础语法,而机试要求用C语言,所以那段时间全用C刷题(现在想想真是段痛苦的经历)。一边学AcWing的基础课,一边刷上的题目,算是迈出了第一步。
Labuladong与代码随想录:系统学习
当时在acwing学习的时候,一边做acwing的题目,一边做的leetcode上的算法入门题单,当时做到动态规划的时候,发现了labuladong的算法笔记,东哥把题目按类型划分得很细致,每类题还有长视频讲解。
我印象最深的是他讲动态规划的核心套路,第一次让我意识到做题是有规律可循的。后来又看了他的回溯框架和背包问题讲解,收获很大。差不多同时,我发现了代码随想录(Carl卡尔哥创建的)。
结合卡尔哥的题单、讲解视频和东哥的笔记,我从2月初到3月中旬,一个半月刷了300道题。那段时间每天泡在图书馆,一杯咖啡一台电脑,连过年都没停,打开LeetCode就是刷,一天能做20道,提交40多次。可惜最后考研被单科线卡住,没能进目标学校,跨考的痛让我记忆犹新。(痛,太痛了!)
灵神:深入提升
上岸后过了几个月开始学Java,偶尔参加LeetCode周赛(虽然水平一般)。这期间发现了灵神(灵茶山艾府)的题解。
灵神的题解写的特别好,也是针对不同的题型做了分类整理,并且制作了超级详细的题单,如下图所示:
- 每类题单里题目分得很细,大部分都有详细解析。
- 除此之外,灵神在b站还有每周的周赛讲解,以及不同类型的题目视频讲解,视频下方还有课后作业可以补充练习,十分贴心。
之后就是一直在leetcode刷刷刷,也参考了很多大神的题解,比如三叶姐的公众号会有每日一题。
该怎么刷
常见的算法练习有leetCode、洛谷、Codeforces等。因为我不是专业打算法竞赛的,只在LeetCode上练习。我觉得针对互联网公司手撕环节,LeetCode已经足够。虽然笔试可能涉及一些难题(比如数论、线段树等高级数据结构),但把LeetCode高频题刷透,笔试大部分也能过关。
大伙都知道leetcode的Hot100,150道高频题这些耳熟能详的题单,但我并不推荐大家上来就盯着hot100猛刷。像上文提到的代码随想录、灵神、labuladong的算法都是我认为比较好的学习资源。
我个人的推荐:
1、入门阶段
先看灵神的"基础代码精讲"视频,配合做对应的LeetCode题目。
2、进阶阶段
接着可以做卡尔哥的代码随想录的题单或者东哥(labuladong算法笔记)的题单,还是推荐按类型刷题,这个阶段一些难的题可以直接放,我的建议是:如果一道 Medium 难度的题目思考 5 分钟没有思路,Hard 难度的题目思考 10 分钟没有思路,就先放一放,之后再回过头来看。
3、冲刺阶段
- LeetCode Hot 100
- LeetCode 面试经典 150
- 剑指 Offer
- 灵神题单1800分以下的题目
另外,SQL题库可以刷:
- 经典SQL50
4、笔试/面试临近
如果最近要进行笔试/面试,这里再推荐一个宝藏:CodeTop。
这个整理了互联网公司面试手撕环节中各个题目的考察频率,还可以根据公司、部门和岗位进行筛选,非常推荐。我自己刷完了 codetop 前五页的题目,面试的手撕环节都比较顺利。
形成自己的刷题体系
其实按照我推荐的方法练习下来,你会发现最后刷 LeetCode 官方题单的时候,很多题目之前都已经做过了。但刷题确实是一个反复强化的过程,第一次可能碰巧做对了,但过一段时间再回顾可能又会忘记。正如我在上一篇笔记《0基础转码|怎么背八股斩获大厂实习offer》中提到的建议一样:建立自己的知识体系至关重要。这里分享一下我记录算法笔记的过程:
我使用的是 Notion,可以创建类似这样的题目模板:(听说飞书也有类似的功能,但我最开始使用的是 Notion,并且已经记录了很长时间,所以这里就以 Notion 为例)。
我自己每做一道题目,都会记录这道题的难度、根据自己对这道题的掌握程度填写各种信息,比如这道题属于哪种类型,LeetCode 链接,因为有些题目可能需要反复练习,还有 AC 次数等属性。最终呈现的效果大致如下:
Notion 比较方便的功能是还可以按照属性进行筛选。比如,我经常会按照重要程度和题单进行筛选,反复练习同一类型的题目:
- 题单我是根据灵神的题单进行分类整理的
自荐
之前看面经分享帖的时候,学到了已经上岸大厂的前辈的做法。在准备暑期实习时,我也效仿着根据以往的真实面经整理八股。从牛客、小破站等各个平台搜集了上千篇真实面经,自己整理得到了面试题,根据题目在面试题中出现的频率以及我自己、交流群、好朋友面试被问到的频率进行了分类整理,得到⭐🌟💡三种级别的。在此,给大家分享一下我自己面试被问到的题目,以及我根据以往面经整理得到的题目。各位uu可在专栏关筑一波:
https://www.nowcoder.com/creation/manager/columnDetail/Mq7Xxv
Top 博主都订阅了,比如“Java 抽象带篮子”(7000+ 粉丝),在这里感谢篮子哥的支持!
所有内容经过科学分类与巧妙标注,针对性强,让你的学习事半功倍:
- ⭐ 必须掌握(必看):时间紧迫时的救命稻草,优先攻克核心要点。(可参考神哥的高频题,但我整理出来的比神哥还会多一些,另外还包括以下内容)
- 🌟 尽量掌握(有时间就看):适合两周以上备考时间的同学稳步提升,冲击大厂的uu们建议看!
- 💡 了解即可(知识拓展):时间充裕时作为补充,拓宽视野,被问到的概率小,但如果能答出来就是加分项
- 🔥 面试真题:根据真实面经整理出来的面试题,有些可能难度很高,可根据自身水平酌情参考。
按照推荐观看顺序 “🔥⭐> 🔥🌟 > > 🔥💡” 有条不紊地学习,让每一分每一秒都用在刀刃上,自此一路畅行。
全面覆盖面试核心知识
面试真题涵盖技术领域的核心考点,从高频热点到冷门难点一网打尽。以下是部分模块概览:
Java基础&集合 :
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=4f5b4cac4b9f4dee8b4b213851c154c5
JVM篇:
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=c87d9ad65eb840728ae63774893bccf5
Java并发编程&JUC:
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=28c748189f6b471f9f4218791778f41c
MySQL:
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=55b03d6d16604319a24395f393d615be
Redis:
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=77bd828f85984c22858c3724eef78723
计网:
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=65e9951c2e754d7086d26b9b46aa4a1a
后续还将持续更新 操作系统、设计模式、场景题、智力题等丰富内容
独特解析:知其然,更知其所以然
我整理的八股面经绝非简单的问答堆砌。
每一道题目都配有深度剖析的思考过程,在你看题之前,便清晰呈现出题意图,让你迅速抓住题目核心,加深对题目的理解与记忆,做到 “知己知彼,百战不殆”。
Java基础&集合举例
MySQL
Redis
JVM
Java并发(JUC)
计算机网络
助力你举一反三,深度梳理知识点之间的内在逻辑联系,真正实现知识的融会贯通,做到知其然更知其所以然。
后续还会分享如何包装项目、leetcode 刷题模版与刷题技巧、各种学习经验以及真实面经等,从多个角度助力牛u提升技术能力和面试水平。
还是那句话:
1、简历上相关技术点对应的面试题一定要准备,因为写在简历上了,面试官就默认你会,答不上来的话就很减分
2、抓大放小,优先重点高频八股,根据自身情况进行准备。
#软件开发投递记录##软件开发笔面经##牛客创作赏金赛##java##笔试#在准备暑期实习时,从等各个平台搜集了上千篇真实面经,自己整理得到了面试题,根据题目在面试题中出现的频率以及我自己、交流群、好朋友面试被问到的频率进行了分类整理,所有内容经过科学分类与巧妙标注,针对性强: 得到⭐🌟💡三种级别的,其中⭐为最高频的题目(类似神哥总结的高频八股),只是我自己整理出来的这部分更多一些,🌟为中高频题目(冲击大厂的uu们建议看)、💡为低频题,可以作为补充,时间充裕再看!