从小白到 6 个 offer,我究竟是怎么刷题的?
最近自习室里又兴起了一阵刷题潮,大家相约刷题~
今天和大家系统分享下我去年转行时的一个刷题过程和方法,希望对你有所帮助。
首先介绍下我的编程基础,我学的是金融工程专业,硕士时学过 C++ 的课,这也是我的编程入门课(但我个人非常不推荐用 C++ 入门)。这门课的重点是 C++ 在金融领域的应用,比如给 Option 定价,基本不涉及算法和数据结构。
所以我是有一定编程基础的,但是对算法和数据结构是小白,也不懂空间复杂度和时间复杂度为何物。
另外说明一下我的时间,我是在工作后才开始刷题,所以是晚上和周末来刷,时间比较紧张,如果是学生的话在我的基础上要多刷一些哟。
下面上干货。
我把我的刷题过程分为 3 阶段。
第一阶段:打基础
时间是 3 个月,做了 128 道题,平均每天 1-2 题。
这一阶段刷题对我来说,是一个学习数据结构和算法的过程。
所以如果是科班的同学这一步就可以跳过了。
经常有同学问这个刷题顺序问题:
我认为在不同阶段是不一样的,那么第一阶段我是按照算法类型来刷,每个类型大概花 1-2 周的时间。
那到底先刷哪个类型呢?
刷 DP?
这不是劝退么?
这里对于小白来说,合理的学习曲线是非常重要的,否则一上来数据结构都不清楚去做难的算法题容易受打击。
那么怎样才是合理的学习曲线呢?
我说的不算,其他人的也只是他个人经验,而应该是看名校的口碑课程是怎么安排的,看教授为你制定的学习计划。
比如第一周,我们去刷排序算法。
那在这个具体的分类下,题目按什么顺序来做呢?
把题目按照频率从高到低的顺序来做,也就是出现频率高,常考的我们先做。
那对于每一道题应该怎么做呢?
首先我会先自己思考 5 分钟,那如果过了 5 分钟还没有任何思路,就不必强求了,看答案吧。
Leetcode 有一个讨论区,里面有非常多的大神给的解答,重点不是看他的代码,而是看他怎么想的,怎么分析的这个问题。
如果还没有理解,那我会去搜一下视频讲解。
这里推荐一个小哥,也是我唯一推荐的 Leetcode 视频讲解:
国内的小伙伴可能不太方便看这个,大家在留言区说下你推荐的视频讲解吧~
对于在北美求职的同学,这小哥的英文对面试也会非常有帮助。
这样就把一个刷题计划落实到了第一个分类、第一周、第一天该做什么。
但是做完题不是就万事大吉了,最重要的一步是需要吸收、内化成自己的。
我喜欢的是写“解题报告”:
<<< 左右滑动见更多 >>>
把这道题考查了哪些知识点,正确的思路是怎样的,别人是怎么想到的,代码是怎么写的,代码有什么小技巧,都记录下来。
这个是跟我当时一起刷题的小伙伴学的,并且我们互相讲题,这样效果更好。所以这里强烈建议大家组队刷题,互相监督提高。
那么周末的时候复习和总结,我一般会做:
重新做一遍本周做过的题目,不是背答案,而是自己再去想一遍; 再做几道新题; 看书,建立更系统的知识体系。
这里看书不是指把书从头看到尾,而是抓住重点章节,比如排序算法,那就参考 MIT 教授给你画的重点,只看《算法导论》的这些章节,这才是偷懒的正确打开方式啊。
不过,如果你的时间很充足,当然是系统的看书、上课更好了,会有更加平缓的学习曲线。
这样 3 个月后我把基本的算法类型都刷过了,数据结构也都深入理解了,刚开始做的题目也差不多都忘了,那么开始第二阶段。
第二阶段:拓展思路
这一阶段我花了 1 个半月的时间,复习了第一阶段的题目,并做了 100 道新题。
平时工作日的时候,我会去复习第一阶段的题目,并且用英文把它讲出来,毕竟我要参加英文面试,如果是国内面试的话中文就好了,然后你就会发现,自己是不会说话的,不信你录音听一听。 周末时,我会限定时间去做新题,模拟考试或者面试的感觉,在有时间压力下去思考,否则给充足的时间大家都能做出来。
这一阶段我是记录在 Excel 里:
第二阶段做的差不多的时候,就把 Linkedin 设置为 “open to market“,就会有猎头找我了,那一旦拿到面试,就到了第三阶段。
第三阶段:面试
这一阶段的重点是找到面试的状态和感觉,并且快速写出代码。
那么我的方法是
Mock interview 参加 Leetcode contest
这一阶段的刷题顺序我会按公司分类来刷,Leetcode 上有 company tag,如果是国内的小伙伴可以参考这个 Github: https://github.com/afatcoder/LeetcodeTop
,列举了国内几大互联网公司常考的面试题,那么就会更有针对性的准备面试。
这一阶段又陆陆续续做了 100 题,同时面完了所有的面试,就收工啦。
最后呢,再送个大家 3 个很好用的 Github 资料:
按国内公司分类: https://github.com/afatcoder/LeetcodeTop
按照算法类型分类: https://github.com/wisdompeak/LeetCode
Leetcode 1-919 题的解析: https://github.com/grandyang/leetcode
另外还有一份精选的刷题笔记也想送给大家,之前在视频号里推荐过了,还没有领的小伙伴在公众号后台回复「笔记」就有啦。
那以上就是我刷题经验的整个过程啦,如果还有任何问题欢迎留言或者私信告诉我,如果想加入自习室和大家一起刷题的也欢迎加我微信,备注:自习。
我是小齐,纽约程序媛,点击下方视频了解我的故事吧~
从小白到 6 个 offer,我究竟是怎么刷题的?的更多相关文章
- 湾区求职分享:三个月刷题拿到 Google offer,欢迎踊跃提问
本文仅以个人经历和个人观点作为参考.如能受益,不胜荣幸. 本文会不断的修正,更新.希望通过大家的互动最后能写出一份阅者受益的文章. 本文纯手打,会有错别字,欢迎指出,虚心接受及时更改. 小马过河,大牛 ...
- 剑指offer刷题
1.面试题43. 1-n整数中1出现的次数 输入一个整数 n ,求1-n这n个整数的十进制表示中1出现的次数. 例如,输入12,1-12这些整数中包含1 的数字有1.10.11和12,1一共出现了5次 ...
- 《剑指offer》刷题笔记
简介 此笔记为我在 leetcode 上的<剑指offer>专题刷题时的笔记整理. 在刷题时我尝试了 leetcode 上热门题解中的多种方法,这些不同方法的实现都列在了笔记中. leet ...
- 刷题-力扣-剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de ...
- 《剑指offer》刷题目录
<剑指offer>刷题目录 面试题03. 数组中重复的数字 面试题04. 二维数组中的查找 面试题05. 替换空格 面试题06. 从尾到头打印链表 面试题07. 重建二叉树 面试题09. ...
- 牛客网剑指offer刷题总结
二维数组中的查找: 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 两 ...
- 剑指offer ------ 刷题总结
面试题3 -- 搜索二维矩阵 写出一个高效的算法来搜索 m × n矩阵中的值. 这个矩阵具有以下特性: 1. 每行中的整数从左到右是排序的. 2. 每行的第一个数大于上一行的最后一个整数. publi ...
- 剑指offer(第2版)刷题 Python版汇总
剑指offer面试题内容 第2章 面试需要的基础知识 面试题1:赋值运算符函数 面试题2:实现Singleton模式 解答 面试题3:数组中重复的数字 解答 面试题4:二维数组中的查找 解答 面试题 ...
- 剑指offer刷题笔记
删除链表中重复的结点:较难 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4- ...
随机推荐
- Python-通过实例方法调用-统一接口的实现-getter methodcaller
某项目中,我们的代码使用的2个不同库中的图形类: Circle,Triangle 这两个类中都有一个获取面积的方法接口,但是接口的名字不一样 统一这些接口,不关心具体的接口,只要我调用统一的接口,对应 ...
- Layman 解决MUI 软键盘弹起挤压页面问题
问题:在使用mui和H5+进行移动端开发的时候,经常会遇见需要用户输入的情况 当input获取焦点弹起软键盘的时候,经常会遇见软键盘挤压页面.软键盘遮挡输入框等一系列问题: 原因:造成这种现象的原因是 ...
- Java知识系统回顾整理01基础07类和对象01引用
一.引用的定义 引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用. 二.引用和指向 new Hero(); 代表创建了一个Hero对象 但是也仅仅是创建了一个对象,没有办法 ...
- C++ 异常处理 catch(...)介绍
转载:https://blog.csdn.net/fcsfcsfcs/article/details/77717567 catch(-)能够捕获多种数据类型的异常对象,所以它提供给程序员一种对异常 对 ...
- LPCTSTR类型和字符串
转载: 1.https://blog.csdn.net/Joker_mw/article/details/79127790 2.https://blog.csdn.net/shelleyhuhu/ar ...
- JavaScript innerTHML和createElement效率对比
前言: 在DOM节点操作中,innerTHML和createElement都可以实现创建元素.它们实现的功能类似,但是效率却相差很大.本文分别统计用innerTHML字符串拼接方式.innerTHML ...
- Pock 把 Touch Bar 变成系统中的 Dock 栏
Pock 把 Touch Bar 变成系统中的 Dock 栏 Pock 是一款 macOS App,你可以通过它把 Touch Bar 变成系统中的 Dock 栏,直接用来切换和启动 App,尽享全屏 ...
- 宜宾1178.9873(薇)xiaojie:宜宾哪里有xiaomei
宜宾哪里有小姐服务大保健[微信:1178.9873倩儿小妹[宜宾叫小姐服务√o服务微信:1178.9873倩儿小妹[宜宾叫小姐服务][十微信:1178.9873倩儿小妹][宜宾叫小姐包夜服务][十微信 ...
- MeteoInfoLab脚本示例:MODIS Sinusoidal投影HDF数据
MODIS卫星很多陆面数据都是Sinusoidal投影,数据被分为一个个10*10度(赤道地区)的瓦片(http://modis-land.gsfc.nasa.gov/MODLAND_grid.htm ...
- 闭嘴,给你一个数!1分钟,学完C语言指针,不扎手只扎心的针!
序言 指针是C语言学习者绕不过的一道坎,也是C语言学习者不得绕过的一道坎.辨别一个人C语言学的好赖就看他对指针的理解怎么样.指针内容也是工作面试经常问到的问题.本文将带你重新认识那个绊倒你的指针,以解 ...