算法面试通关-简介《一》

为什么要掌握算法与数据结构

  1. 编程的内功修炼
  2. 去国内一流互联网公司的必要条件
  3. 硅谷互联网公司面试更是要求当场写算法题目
  4. 算法和数据结构是有趣且实用的

电话面试1
电话面试2

如何有效学习和训练算法和数据结构

精通一个领域

  • Chunk it up(切碎知识点)
  • Deliberate practicing(刻意练习)
    • 刻意练习
    • 练习缺陷、不舒服、弱点地方
    • 不爽、枯燥
  • Feedback(获得反馈)
    • 即时反馈
    • 主动型反馈(自己去找)
      • 高手代码(GitHub, LeetCode, etc.)
      • 第一视角直播
    • 被动式反馈(高手给你指点)
      • code review
      • 教练看你打,给你反馈

--Data Structure--
Array
Stack/Queue
PriorityQueue
LinkedList
Queue/Priority queue
Stack
Tree/Binary Search Tree
HashTable
Disjoin Set
Trie
BloomFilter
LRU Cache

--Algorithm--
Greedy
Recursion/Backtrace
Traversal
Breadth-first/Depth-first search
Didvide and Conquer
Dynamic ProgrammingBinary Search
Graph

--System Design--
SYstem architecture overview
Design+scalability+flexibility
Typical system design questions

算法面试通关-简介《一》_第1张图片

复杂度

O(1): 常数复杂度
O(logn): 对数复杂度
O(n): 线性时间复杂度
O(n^2): N平方复杂度
O(n^3): N立方复杂度
O(2^n): 指数复杂度
O(n!): 阶乘复杂度

切题四件套

  • Clarification
  • Possible solutions
    • compare(time/space)
    • optional(加强)
  • Coding(多写)
  • Test cases

LeetCode

  • 做题
  • 时间复杂度
  • XCode

Feedback

  • Solutions from LeetCode
  • Discussion Panel in LeetCode

Master Theorem

你可能感兴趣的:(算法面试通关-简介《一》)