????????hello! 最近长达4个月的时间在准备面试大厂,这段时间无疑是最痛苦的,但也是收获颇丰!关于数据结构与算法,很久之前就开了这个分栏,一直没补上,经过这段时间的沉淀,想借此机会跟“老衲”深究一下关于数据结构和算法这块内容!
针对这方面,我准备通过三方面来入手(都是准备通过c/c++语言来实现)
- 数据结构
- 计算机系统
- 算法
为什么要从这三方面入手呢?
我认为这三方面缺一不可,并且都是息息相关的。
- 首先,谈到数据结构,数据是什么?数据为什么会有结构?有什么结构?
- 其次,知道数据之后,有没有纳闷过一件事:程序是什么?代码又是什么?
- 然后,知道程序是可执行的机器语言之后,又会纳闷:计算机是如何把我们写的代码给跑出结果,更可气的是还给显示到终端上了?
其次学习算法不能心急,初期学习算法有以下几个痛点:
- 编程能力不足。初期眼高手低,看着都会,写起来费劲
- 过于心急。不能无头脑,无归划的刷题,以免打击自信心
- 效率低下。初期直接上手看算法导论,会导致时间成本太高
- 缺乏策略
算法在面试大厂的时候,有着一票否决权的重要性。如果算法在面试过程中没有做出来,那么面试效果可想而知(挂)
对于常考的算法知识点:
- 排序:大部分需要手写,并分析时间空间复杂度以及稳定性分析
- 树:需要了解结构,遍历方式,前中后序遍历
- 图:深度优先搜索,广度优先搜索?
- 散列表:实现原理,扩容,效率
- 字符串:KMP,Manacher
- 数组、链表、二叉树、队列、栈的各种操作(性能,场景)
- 二分查找,动态规划
重要的是刷完题之后的积累!不求数量,但求质量,得多从优化代码思路和边界分析上去思考。通常每道题会有好几种解法,最好都记录下来!
|