一、算法面试题指南
算法面试一直是程序员大厂面试中的必备环节。接下来,我将从学习思路、学习工具、训练方法、模拟实战这四个角度来分析算法面试经验。
1、思路篇——博观而约取,厚积而薄发
1. 时间复杂度,空间复杂度
时间复杂度是衡量算法执行效率的重要指标,空间复杂度是衡量算法消耗空间的重要指标。
根据算法种类的不同,时间复杂度可以达到常数级,线性级,指数级不等,能否使用最高效的算法,或者说最优的时间复杂度完成编程开发,是衡量软件工程师素质的重要指标。
2. 数据结构
程序=数据结构+算法。作为软件工程师,需要对常见的数据结构了如指掌,它们包括:
一维数据结构:
- 基础:数组 array (string),链表 linked list
- 高级:栈 stack,队列 queue,双端队列 deque,集合 set,映射 map
二维数据结构:
- 基础:树 tree,图 graph
- 高级:二叉搜索树 binary search tree (red-black tree, AVL),堆 heap,并查集 disjoint set,字典树 Trie
3. 算法思想
除了各种数据结构,软件工