头部大厂面试必备剑指offer刷题指南 v0.1

目录

  • 1.开篇明义
  • 2.在哪里刷题
    • 2.1 Leetcode
    • 2.2 牛客网nowcoder
  • 3.准备工作
        • 视频课程
        • 专栏资料
        • 书籍资料
  • 4.如何刷题
        • 刷题六步法
            • 第一步
            • 第二步
            • 第三步
            • 第四步
            • 第五步
            • 第六步
        • 刷哪些题
  • 补充说明

1.开篇明义

本专栏只做三件事:刷题!刷题!还是刷题!!!
剑指offer作为系统刷题的入门还是很合适的,后续还会针对进阶的刷题写相应的专栏。

2.在哪里刷题

不需要本地编辑器,这里推荐两个刷题必备的网址:

2.1 Leetcode

Leetcode官方指定剑指offer刷题网址
Leetcode的剑指对应的是官方最新的第二版,题量也比牛客的多,适合作为刷题首选。

2.2 牛客网nowcoder

牛客网剑指offer刷题网址
牛客网的题库没有更新,不过没有大碍,适合复习时候换个编程环境刷题,而且很多网上面试都是在牛客网上,可以在这里多练习适应网面的编程环境。

3.准备工作

对于需要刷剑指offer的同学来说,往往还处于实战入门的阶段,可能有一定的理论基础,但是又不像竞赛大佬那样阅题无数,手到擒来。所以,刷剑指offer过程中要把建立自己的”阅题“体系放在首位,不要计较一道题是否AC(通过),多总结,多重复,多思考才是王道。主要的准备工作主要有两点:

1、一门编程语言,C++,Java,Python,Go,JavaScript等等都可以。这里需要注意两点,一是尽量选择自己平时开发所用的主力语言,二是一旦确定尽量不要更换。算法学习重在理解算法实现的思路,理论上任何计算机语言都可以作为算法的实现语言。但是针对我们找工作面对的笔试面试算法题而言,选你应聘那个岗位所需的主力语言自然是最佳。
2、必备的数据结构基础和算法知识。这方面的学习资料有如下推荐的:

视频课程

C++向:国内清华邓俊辉老师在学堂在线上的课,分基础和高级,课程链接戳这里:数据结构基础,数据结构高级。课程采用动画示例,讲解干净利落,配套有教材(可以评论留言索取电子版),还有OJ习题供课后练习,而且已经形成学习社区,万人验证,不怕有坑。课程主页戳这里:课程主页。
头部大厂面试必备剑指offer刷题指南 v0.1_第1张图片
Java向:我推荐慕课网上一门口碑课玩转算法系列–玩转数据结构
更适合0算法基础入门到进阶(java版)
头部大厂面试必备剑指offer刷题指南 v0.1_第2张图片
这位老师的其他进阶课也相当棒。

Python向:Python没有多关注,不过B站上有很多资源,可以搜索一下看看评论。万门大学上有一门数据结构与算法进阶班的课讲得可以,有需要的同学可以去搜索看一下。

专栏资料

提到专栏,这是最近几年火起来的付费服务的一种形式。在数据结构与算法领域最火的应该要数GeekTime上的数据结构与算法之美了吧。我也学习过该专栏,不评价价格,内容确实不错,相比于书本,更贴近实战,而且有动图演示过程,更抽象具体。不过课程也有不足地方,有些内容,比如KMP算法个人感觉讲得不够好,不得不承认,很多时候文字的表现力确实没有视频+语音+演示来的透彻。

书籍资料

首推 “数据结构与算法分析” Mark Allen Weiss,这本书有C语言,C++,Python描述。
头部大厂面试必备剑指offer刷题指南 v0.1_第3张图片
java选手还可以选择"算法"第四版,我在另一个专栏也撰写这本书的学习笔记。
头部大厂面试必备剑指offer刷题指南 v0.1_第4张图片
至于"算法导论",适合大佬选手和有相当多时间的同学一点点啃。我也建议可以作为刷题选手进阶必读书籍。
当然,对于实在零基础的同学也可以选择"啊哈!算法","算法图解"这类入门级书籍阅读。

4.如何刷题

对于有面试笔试刷题需要的同学来说,个人建议前边的准备工作加速完成,毕竟实践出真知,在准备基础中建立一个认识和熟悉的框架,接下来就是刷题来巩固并且提高速度。关于刷题,我以leetcode刷题为例来讲讲自己的经验:

刷题六步法

对于一道题来说我们可以按照以下的步骤来做:

第一步

先读清题目,知道输入是什么输出是什么,最好按照给出的样例,把这个过程在脑中或者纸上模拟一遍;

第二步

对于初学者来说,八成不会做,没思路,之前学的什么递归啊,堆栈啊,队列啊,DFS/BFS啊,这都哪儿跟哪儿啊?挨不着边儿!别急,先用最笨的暴力方法做,就是i,j,k多层循环嵌套不停for啊,大不了我多遍历几遍,这个时候就不要考虑复杂度这种高级的问题了。能跑通一些样例就不错,这个过程呢,也别头铁一直耗着,十分钟还搞不出来就进行下一步;

第三步

leetcode最宝贵的是有题解,这里先不讨论国际版,就说中文版,直接看题解,就是最好的学习,别信网上百度的答案,最好的就是题解!题解!题解!一般都会有官方题解,做的还很优秀。官方的看完有点不过瘾就找找下边一些大牛写的,往往有很多精彩的答案,但是最后先选择一个你觉得最合适的,时间空间复杂的好的,要么照着写要么用你自己的语言实现。先跑通AC了;

第四步

你以为AC就完事儿了,并不是,把之前写的代码恢复原模版,自己不看题解再重新写一遍,不要照抄强背,要理解着写,其中用到的变量名不要求与前一遍一样,但是要按照正确的思路一遍遍实现。

第五步

第二遍AC了以后,就可以试着自己写题解,把自己的思考过程写下来,加强记忆,效果更好,也方便复习。

第六步

最后一步就是多次练习,个人建议,每晚结束学习之前,把当天刷过的题目翻出来,恢复模板,再写一遍。然后每周末,把这一周的重点题目,AC失败次数多的题目再写一遍。一道题要反复练习,才可以达到掌握的程度。

刷哪些题

在这里推荐的刷题顺序有两个:
1、分类分专题刷,leetcode和牛客网上对题目都做了分类的划分,可以先把各个分类下的简单题过一遍,再刷中等题,详细的刷题步骤,我日后再补充。
2、剑指offer ——》leetcode Hot100 或者牛客网上的 程序员代码面试指南 那个题库,然后就可以在leetcode或牛客网上以公司为分类按需刷题,这个的好处就是可以不断训练构建出一个系统的知识体系。但是在初期会因为基础不扎实,造成刷题慢的问题。不过最重要的是要坚持嘛。

补充说明

该文为刷题指南的非正式第一版,主要是为自己挖一个坑,日后好好填补。如果有需要相关资料的同学可以评论留言,我会尽所能满足。谢谢诸位!

你可能感兴趣的:(头部大厂面试必备剑指offer刷题指南 v0.1)