互联网大厂刷题攻略 |
您所在的位置:网站首页 › 五大推荐系统算法有哪些 › 互联网大厂刷题攻略 |
1. 本文目的
本文面向电子信息/互联网行业中诸如后端算法等岗位的找工作小白:从0开始,如何刷算法题? 剑指offer作为系统刷题的入门还是很合适的,后续还会针对进阶的刷题写相应的专栏。 2. 刷题地址 2.1 LeetcodeLeetcode官方指定剑指offer刷题网址 Leetcode的剑指对应的是官方最新的第二版,题量也比牛客的多,适合作为刷题首选。 2.2 牛客网nowcoder牛客网剑指offer刷题网址 牛客网的题库没有更新,不过没有大碍,适合复习时候换个编程环境刷题,而且很多网上面试都是在牛客网上,可以在这里多练习适应网面的编程环境。 3.准备工作对于需要刷剑指offer的同学来说,往往还处于实战入门的阶段,可能有一定的理论基础,但是又不像竞赛大佬那样阅题无数,手到擒来。所以,刷剑指offer过程中要把建立自己的”阅题“体系放在首位,不要计较一道题是否AC(通过),多总结,多重复,多思考才是王道。主要的准备工作主要有两点: 1、一门编程语言,C++,Java,Python,Go,JavaScript等等都可以。这里需要注意两点,一是尽量选择自己平时开发所用的主力语言,二是一旦确定尽量不要更换。算法学习重在理解算法实现的思路,理论上任何计算机语言都可以作为算法的实现语言。但是针对我们找工作面对的笔试面试算法题而言,选你应聘那个岗位所需的主力语言自然是最佳。 2、必备的数据结构基础和算法知识。这方面的学习资料有如下推荐的: (1)视频课程 C++向: 国内清华邓俊辉老师在学堂在线上的课,分基础和高级,课程链接戳这里:数据结构基础,数据结构高级。课程采用动画示例,讲解干净利落,配套有教材(可以评论留言索取电子版),还有OJ习题供课后练习,而且已经形成学习社区,万人验证,不怕有坑。课程主页戳这里:课程主页。 Java向: 我推荐慕课网上一门口碑课玩转算法系列–玩转数据结构 更适合0算法基础入门到进阶(java版) 这位老师的其他进阶课也相当棒。 Python向: Python没有多关注,不过B站上有很多资源,可以搜索一下看看评论。万门大学上有一门数据结构与算法进阶班的课讲得可以,有需要的同学可以去搜索看一下。 (2)专栏资料 提到专栏,这是最近几年火起来的付费服务的一种形式。在数据结构与算法领域最火的应该要数GeekTime上的数据结构与算法之美了吧。我也学习过该专栏,不评价价格,内容确实不错,相比于书本,更贴近实战,而且有动图演示过程,更抽象具体。不过课程也有不足地方,有些内容,比如KMP算法个人感觉讲得不够好,不得不承认,很多时候文字的表现力确实没有视频+语音+演示来的透彻。 (3)书籍资料 首推 “数据结构与算法分析” Mark Allen Weiss,这本书有C语言,C++,Python描述。java选手还可以选择"算法"第四版。——至于"算法导论",适合大佬选手和有相当多时间的同学一点点啃。我也建议可以作为刷题选手进阶必读书籍。当然,对于实在零基础的同学也可以选择"啊哈!算法","算法图解"这类入门级书籍阅读。 4. 如何刷题对于有面试笔试刷题需要的同学来说,个人建议前边的准备工作加速完成,毕竟实践出真知,在准备基础中建立一个认识和熟悉的框架,接下来就是刷题来巩固并且提高速度。关于刷题,我以leetcode刷题为例来讲讲自己的经验: 刷题六步法 对于一道题来说我们可以按照以下的步骤来做: 第一步先读清题目,知道输入是什么输出是什么,最好按照给出的样例,把这个过程在脑中或者纸上模拟一遍; 第二步对于初学者来说,八成不会做,没思路,之前学的什么递归啊,堆栈啊,队列啊,DFS/BFS啊,这都哪儿跟哪儿啊?挨不着边儿!别急,先用最笨的暴力方法做,就是i,j,k多层循环嵌套不停for啊,大不了我多遍历几遍,这个时候就不要考虑复杂度这种高级的问题了。能跑通一些样例就不错,这个过程呢,也别头铁一直耗着,十分钟还搞不出来就进行下一步; 第三步leetcode最宝贵的是有题解,这里先不讨论国际版,就说中文版,直接看题解,就是最好的学习,别信网上百度的答案,最好的就是题解!题解!题解!一般都会有官方题解,做的还很优秀。官方的看完有点不过瘾就找找下边一些大牛写的,往往有很多精彩的答案,但是最后先选择一个你觉得最合适的,时间空间复杂的好的,要么照着写要么用你自己的语言实现。先跑通AC了; 第四步你以为AC就完事儿了,并不是,把之前写的代码恢复原模版,自己不看题解再重新写一遍,不要照抄强背,要理解着写,其中用到的变量名不要求与前一遍一样,但是要按照正确的思路一遍遍实现。 第五步第二遍AC了以后,就可以试着自己写题解,把自己的思考过程写下来,加强记忆,效果更好,也方便复习。 第六步最后一步就是多次练习,个人建议,每晚结束学习之前,把当天刷过的题目翻出来,恢复模板,再写一遍。然后每周末,把这一周的重点题目,AC失败次数多的题目再写一遍。一道题要反复练习,才可以达到掌握的程度。 5. 刷哪些题在这里推荐的刷题顺序有两个: 1、分类分专题刷leetcode和牛客网上对题目都做了分类的划分,可以先把各个分类下的简单题过一遍,再刷中等题,详细的刷题步骤,我日后再补充。 2、剑指offer ——》leetcode Hot100 或者牛客网上的 程序员代码面试指南 那个题库然后就可以在leetcode或牛客网上以公司为分类按需刷题,这个的好处就是可以不断训练构建出一个系统的知识体系。但是在初期会因为基础不扎实,造成刷题慢的问题。不过最重要的是要坚持嘛。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |