Python - 金三银四心路历程 之 数据结构与算法 & 刷题

目录

一.引言

二.心路历程

三.刷题经历

四.刷题历程

五.总结


一.引言

<夜深人静写算法> 是 23 年 12 月底博主打算跳槽时开始做刷题准备做的专栏,前后准备了大约一个月,刷题完毕后简单准备了项目和简历后就开始加入找工作大军了,最后收获了几家大厂的 offer,趁着今天闲下来一点,记录一下过去这段痛苦又收货满满的历程。

Tips:

本篇博客无广告植入、无课程售卖,纯个人心得分享记录。

二.心路历程

- 校招

博主校招实习转正后进入了西二旗马连洼十字路口四家单位之一,推荐算法工程师一做就是 3年 +,后面也是因为想要换个平台,顺便到一个新的环境继续拼搏一下 [说的比较冠冕堂皇 (#^.^#)],所以决定开始刷题准备面试。

- 碰壁

最早有这个想法是 23 年的年初,当时懒得刷题,裸面了两家大厂,结果也不用说都是无情一面挂。除了简历上的一些比较熟悉的项目之外,很多知识点回答的都不好,加上裸面没有刷题,code 题基本都没太写出来。又赶上年中还有一切其他的事情,所以跳槽的事情一推就到了 23 年底,打算赶一波金三银四。

- 奋发

由于校招是实习转正,社招又是裸面没有刷题,且自己是数学转 CS,所以一直没有系统的学习过数据结构,也没有系统性的刷过 leetcode。23 年底再次萌生跳槽念头后,决定从头好好的把数据结构和 Leetcode 经典题目刷一遍,所以就有了后面的 <夜深人静写算法> 专栏以及今年金三银四的多家大厂 offer。

三.刷题经历

- 说干就干

上面是第一天学习完 Array 并且把对应 Leetcode 题目刷完后记录的博客,下面是最后一天把字符串常用的递归、动态规划算法学习总结完记录的博客,前后大概经历了 30 天。

- 学习状态

由于是在职学习,所以只能利用下班回家的时间,这段时间大概是 8 左右到家,到家后马不停蹄开始学习,大概学习的步骤是先去破站看对应数据结构的讲解,了解数据结构的基本特点与形式:

视频看完后把关键的特性总结下来后面就是直接去 Leetcode 刷对应的题目了:

刷题的时候会先看题,有思路就尝试本地 pycharm 写一下,写一会搞不出来或者看题没有思路就直接去题解找高赞的题解,因为每天晚上的时间比较有限,如果一个题目纠结太久很拖进度。每一道题除了做出来之后,也会尽可能的把思路进行复盘同时保证时空复杂度不会太离谱。这里复盘很重要,有一些常规的写法或者惯用的思路一定要刻在脑子里,例如树的遍历 、看到动态规划就想状态转移方程之类的。

- 心得体会

由于之前没有系统学习过数据结构,所以这一个月的刷题都是在学习了基本对应数据结构后才开始的,例如学完 List、Queue 再刷相关列表链表的题目。这里先把基础搞好我觉得很关键,对于整个数据结构的掌握,以及后续时间复杂度空间复杂度的计算都很有帮助。

另外就是刷题过程中遇到不会的没有思路的,上题解,上题解还不行,那就放弃祈祷 🙏🏻 面试不会遇到这个题目,但是前提是基础的写法和题目你要会,例如二叉树最基本的 DFS、BFS 你得会写,至于一些困难的 Hard 或者实在复杂的题目什么 3D 接雨水、手写红黑树啥的直接 Pass 掉,面试官要是给你出这个大概率这次面试也 886 了。

最后就是面试开始后的心态,不要太卑微也不要太紧张,就默念这个世界是个草台班子勉励自己,同时每场面试都要积极复盘,哪个问题问得好自己没打上来,项目哪个细节还没有打磨好,都要不断精进,面试才能越来越顺利。

四.刷题历程

这里按照数据结构与算法的学习历程对博客进行一下整理,基本上是由简入繁,从最基本的数组、链表开始,到后面的 Map、Set,再到后面的树、动态规划等等。

|-------|------------------------------------------------------------------------------------------------------------------------------------------|-----------|
| Index | 链接 | 简介 |
| 1 | 深夜数据结构与算法之 ArrayList | 数组、链表 |
| 2 | 深夜数据结构与算法之 Stack & Queue_python | 栈、队列 |
| 3 | 深夜数据结构与算法之 Map & Set | 字典、集合 |
| 4 | 深夜数据结构与算法之 Tree | 树 |
| 5 | 深夜数据结构与算法之 Graph | 图 |
| 6 | 深夜数据结构与算法之 Divide Conquer & Backtrack | 分治与回溯 |
| 7 | 深夜数据结构与算法之 Recursion | 递归 |
| 8 | 深夜数据结构与算法之 Heap & Binary Heap | 堆 |
| 9 | 深夜数据结构与算法之 BFS & DFS | 广度优先、深度优先 |
| 10 | 深夜数据结构与算法之 Greedy | 贪心算法 |
| 11 | 深夜数据结构与算法之 Binary Search | 二分查找 |
| 12 | 数据结构与算法之 排列与组合_组合 | 排列、组合 |
| 13 | 深夜数据结构与算法之 DP | 动态规划 |
| 14 | 深夜数据结构与算法之 DP 进阶 | 动态规划-进阶 |
| 15 | 深夜数据结构与算法之 Prune | 剪枝优化 |
| 16 | 深夜数据结构与算法之 Two-Ended BFS | 双端 BFS |
| 17 | 深夜数据结构与算法之 Heuristic Search | 启发式搜索 |
| 18 | 深夜数据结构与算法之 BloomFilter | 布隆过滤器 |
| 19 | 深夜数据结构与算法之 AVL 树 & 红黑树 | AVL 树、红黑树 |
| 20 | 深夜数据结构与算法之 位运算 | 位运算 |
| 21 | 深夜数据结构与算法之 LRUCache | LRU 缓存 |
| 22 | 深夜数据结构与算法之 Sort | 排序算法 |
| 23 | 深夜数据结构与算法之 DP 串讲 | 动态规划总结 |
| 24 | 深夜数据结构与算法之 股票问题大全 | 股票问题总结 |
| 25 | 深夜数据结构与算法之 高级字符串 | 高级字符串算法 |
| 26 | 深夜数据结构与算法之 字符串常规操作 | 字符串常规操作 |

五.总结

年前一个月边工作边每天刷题,由于除了刷题还要写博客整理,所以经常整到 12 点甚至更晚,也是让人回忆起之前考研的充实生活。年后回来就是准备简历,陆续的投简历面试,最终收获了不错的结果。感谢这段时间的经历,也感谢周边家人和朋友的鼓励 ~ 浅浅记录一下,也希望大家的刷题学习之路顺顺利利!

相关推荐
Dontla2 分钟前
vscode怎么设置anaconda python解释器(anaconda解释器、vscode解释器)
ide·vscode·python
qq_5290252941 分钟前
Torch.gather
python·深度学习·机器学习
数据小爬虫@41 分钟前
如何高效利用Python爬虫按关键字搜索苏宁商品
开发语言·爬虫·python
XiaoLeisj1 小时前
【递归,搜索与回溯算法 & 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(二)
数据结构·算法·leetcode·决策树·深度优先·剪枝
Cachel wood1 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
終不似少年遊*1 小时前
pyecharts
python·信息可视化·数据分析·学习笔记·pyecharts·使用技巧
Python之栈1 小时前
【无标题】
数据库·python·mysql
袁袁袁袁满2 小时前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
Lenyiin2 小时前
01.02、判定是否互为字符重排
算法·leetcode
老大白菜2 小时前
Python 爬虫技术指南
python