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深夜数据结构与算法之 LRUCacheLRU 缓存
22深夜数据结构与算法之 Sort排序算法
23深夜数据结构与算法之 DP 串讲动态规划总结
24深夜数据结构与算法之 股票问题大全股票问题总结
25深夜数据结构与算法之 高级字符串高级字符串算法
26深夜数据结构与算法之 字符串常规操作字符串常规操作

五.总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/835268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】逻辑化讲清PCA主成分分析

碎碎念&#xff1a;小编去年数学建模比赛的时候真的理解不了主成分分析中的“主成分”的概念&#xff01;&#xff01;但是&#xff0c;时隔两年&#xff0c;在机器学习领域我又行了&#xff0c;终于搞明白了&#xff01;且看正文&#xff01;再分享一个今天听到的播客中非常触…

Web3 Tools - Base58

Base58编码 Base58编码是一种用于表示数字的非常见的编码方法。它通常用于加密货币领域&#xff0c;例如比特币和其他加密货币的地址表示。 什么是Base58编码&#xff1f; Base58编码是一种将数字转换为人类可读形式的编码方法。与常见的Base64编码不同&#xff0c;Base58编码…

Double 4 VR智能互动教学系统在轨道交通客运服务课堂上的应用

一、模拟真实场景&#xff0c;提高教学效果 Double 4 VR智能互动教学系统能够模拟真实的轨道交通客运场景&#xff0c;让学生身临其境地感受客运服务的全过程。通过虚拟现实技术&#xff0c;学生可以在系统内扮演不同的角色&#xff0c;如列车员、站务员、乘客等&#xff0c;亲…

JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测

JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测 目录 JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 基本介绍 Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预…

android 蓝牙技术 学习记录 二

android 蓝牙连接 关键类 BluetoothDevice--------------------蓝牙设备 BluetoothGattCallback--------------连接回调 BluetoothGatt----------------------gatt 1. public BluetoothGatt connectGatt(Context context, boolean autoConnect, BluetoothGattCallback call…

Ascent DMS AE电源说明书和设备连接调试教程

Ascent DMS AE电源说明书和设备连接调试教程

世上最全前端开发教程(HTMLCSS)

HTML介绍 HTML&#xff0c;全称为HyperText Markup Language&#xff0c;即超文本标记语言&#xff0c;是一种用来创建网页的标准标记语言。HTML使用一系列的标签&#xff08;Tags&#xff09;来定义网页的不同部分和它们的行为&#xff0c;比如段落、链接、图片等。 CSS介绍 …

《这就是ChatGPT》读书笔记

书名&#xff1a;这就是ChatGPT 作者&#xff1a;[美] 斯蒂芬沃尔弗拉姆&#xff08;Stephen Wolfram&#xff09; ChatGPT在做什么&#xff1f; ChatGPT可以生成类似于人类书写的文本&#xff0c;它基本任务是弄清楚如何针对它得到的任何文本产生“合理的延续”。当ChatGPT写…

如何对Java对象数组多个属性值进行汇总

1、问题 最近在做报表统计相关的任务&#xff0c;中间涉及到很多的地方&#xff0c;需要同时使用SQL进行数据汇总或者在内存进行数据汇总&#xff0c;在内存汇总的时候&#xff0c;遇到一个场景&#xff0c;就是对Java对象数组多个属性值进行汇总。 最后认为方法三使用反射进…

数据库基础语法二

一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo mysql -uroot -p #登陆数据库 create database zoo; #创建数据库zoo alter database zoo character set gbk collate gbk_…

Android 12.0 TvSettings系统设置wifi连接密码框点击Enter键失去焦点

1.前言 在12.0的系统box产品开发中,在TvSettings中,在wifi连接的时候,在用遥控器输入wifi密码框的时候,会发现在按遥控器Enter键的时候, 发现EditText焦点失去了,导致输入法消失了,为了解决这个问题就需要拦截Enter键保证正常输入wifi密码,接下来就来实现这个功能 如图…

实用的Chrome命令 帮你打开Chrome浏览器的隐藏功能

前言 Chrome作为主力浏览器&#xff0c;支持相当丰富的第三方扩展&#xff0c;其实浏览器本身也内置了大量实用的命令。许多实用的功能并没有直接显示在Chrome的菜单上。在这篇文章中&#xff0c;我们将介绍几个实用的chrome:// commands。 通过下面整理的 Chrome 命令&#x…

uboot Ethernet初始化

目录 initr_net eth_initialize eth_common_init phy_init genphy_init uclass_first_device_check eth_write_hwaddr initr_net

Liunx-Tcp Wrapper-访问控制工具

目录 主要功能 工作原理 配置示例 允许所有来自特定 IP 范围的访问 拒绝所有其他访问 允许特定服务来自特定域名的访问 拒绝特定 IP 地址的访问 注意事项 应用范围 查看某一个程序是否支持 TCP wrapper Telnet 用途 1. 远程登录 2. 网络诊断 3. 测试网络服务 安…

LVS(Linux Virtual Server)知识点详解

引言 LVS&#xff08;Linux Virtual Server&#xff09;是一种虚拟服务器技术&#xff0c;它主要用于实现多台服务器的负载均衡。 LVS的核心作用是通过负载均衡技术将客户端的请求分发到不同的服务器上进行处理&#xff0c;以此来提高整体的服务能力和资源的利用效率。在构建高…

什么是Unreal Engine游戏引擎?它有什么优势?

大家好&#xff0c;我是咕噜土豆&#xff0c;很高兴又和大家见面了。在游戏开发行业中&#xff0c;选择合适的游戏引擎是非常重要的。其中&#xff0c;Unreal Engine作为一款功能强大的游戏引擎&#xff0c;在业界非常受欢迎。今天我带大家简单的了解一下。 什么是Unreal Engi…

基于STM32移植lvgl(V8.2)(SPI接口的LCD)

目录 概述 1 认识LVGL 1.1 LVGL官网 1.2 LVGL库文件下载 2 认识SPI接口型LCD 2.1 PIN引脚定义 2.2 MCU IO与LCD PIN对应关系 3 实现LCD驱动 3.1 使用STM32Cube配置Project 3.2 STM32Cube生成工程 4 移植LVGL 4.1 准备移植文件 4.2 添加lvgl库文件到项目 4.2.1 src下…

【Pytorch】6.torch.nn.functional.conv2d的使用

阅读之前应该先了解基础的CNN网络的逻辑 conv2d的作用 是PyTorch中用于执行二维卷积操作的函数。它的作用是对输入数据进行二维卷积操作&#xff0c;通常用于图像处理和深度学习中的卷积神经网络&#xff08;CNN&#xff09;模型。 conv2d的使用 我们先查看一下官方文档 inpu…

云视频,也称为视频云服务,是一种基于云计算技术理念的视频流媒体服务

云视频&#xff0c;也称为视频云服务&#xff0c;是一种基于云计算技术理念的视频流媒体服务。它基于云计算商业模式&#xff0c;为视频网络平台服务提供强大的支持。在云平台上&#xff0c;所有的视频供应商、代理商、策划服务商、制作商、行业协会、管理机构、行业媒体和法律…

[Linux深度学习笔记5.10]

5.10学习笔记 计划任务: 一. 一次性计划任务安装yum -y install at启动systemctl start atd开机自启systemctl enable atd查看atq删除atrm创建at now 1minat>useraddctrl d二.周期性计划任务创建计划任务 : crontabe -e查看计划任务 : crontabe -l删除计划任务 : crontab…