资源详情
第一部分:九章算法基础班
(一)
第1章
本节大纲
”破解“算法面试 “Hack” the Algorithm Interview
算法面试究竟考什么 史上最全的算法面试考点大全 2013-2018 面试难度变化 如何在最有效率的准备算法面试 如何在不押题的情况下更有信息的去面试 第2章
本节大纲
二分与LogN算法 Binary Search & LogN Algorithm
二分法三重境界 二分位置之满足条件的第一次 – Binary Search on Index – OOXX 二分位置之保留一半 – Binar Search on Index – Half half 二分答案 – Binary Search on Result 学习Binary Search的通用模板,不再死循环 讲解Search in Rotated Sorted Array等10道高频二分搜索题 第3章
本节大纲
为面试而生的双指针算法 Two Pointers Algorithm
Two Sum 问题及他的各种扩展 Two Sum & Follow-ups
其他高频的双指针问题
第4章
本节大纲
宽度优先搜索和拓扑排序 BFS & Topological Sorting
二叉树上的宽搜 BFS in Binary Tree 二叉树的序列化问题 Binary Tree Serialization 图上的宽搜 BFS in Graph 拓扑排序 Topological Sorting 棋盘上的宽搜 BFS in Chessboard 第5章
本节大纲
基于树的深度优先搜索 Tree-based DFS
二叉树的深度优先遍历 Binary Tree DFS TrA危ersal 先序/中序/后序 Preorder / inorder / postorder 二叉树中的分治算法 Divide & Conquer DFS模板 Introduce DFS Template 二叉树高 频面试问题 递归三要素 遍历算法与分治算法对比 TrA危erse vs Divide Conquer 第6章
本节大纲
基于组合的深度优先搜索 Combination-based DFS
组合类深搜 Combination DFS 排列类深搜 Permutation DFS 图上的深搜 Graph DFS 非递归的深搜实现方法 Non-Recursion
第7章
本节大纲
基于排列、图的深度优先搜索 Permutation / Graph based DFS
第8章
本节大纲
数据结构 – 栈,队列,哈希表与堆 Stack, Queue, Hash & Heap
哈希表 Hash 常用的哈希库的区别 Hash Set vs Hash Map vs Hash Table 哈希表的实现原理 Basic Hash Knowledge 哈希函数 Hash Function 冲突的解决方法 Collision 开散列 Open Hashing 闭散列 Closed Hashing 哈希扩容 Rehashing 哈希表高频面试题 High Frequently Asked Hash Questions 堆 堆的基本原理 Basic Heap Knowledge 优先队列与堆的联系和区别 Priority Queue vs Heap 堆的高频面试题 High Frequently Asked Heap Questions 堆的代替品:TreeMap 第9章
本节大纲
数据结构 – 区间、数组、矩阵与树状数组 Interval, Array, Matrix & Binary Indexed Tree
数组 Array 子数组及相关面试题 Subarray & Related Questions 其他高频数组问题 High Frequent Asked Array Questions TBD 第二部分:九章算法强化班
第1章
本节大纲
FLAG算法面试难度提高?如何准备?【免费试听】
各类IT企业的面试算法难度及风格 如何解决中等难度以上的算法题 如何解决follow up问题 两个指针-前向型指针 – Two Pointer Problem Minimum Size Subarray Sum Longest Substring Without Repeating Characters Longest Substring With at Most k Distinct Characters Minimum Window Substring 第K大问题 – Kth Largest Problem 第k大元素的三层递进面试考察. 如何通过一道题区分3类面试者 剖析面试官面试的思路 第2章
本节大纲
数据结构(上)之并查集与字典树
并查集 – Union Find 并查集的基本原理 并查集的相关运用 并查集的拓展(带路径压缩) 并查集的运用 Trie 树 – Trie Tree Trie 的基本结构 Trie 树的相关运用 Trie 和 DFS 结合考察 第3章
本节大纲
数据结构 Data Structure (下)
堆的深入理解和运用 – Heap 堆重要拓展: Median 问题拓展 Sliding Windows问题总结 栈 – Stack 栈在表达式上面的运用 单调栈的使用方法 双端队列 – Deque 第4章
本节大纲
二分法 和 扫描线
扫描线 – Sweep Line 扫描线入门 扫描线和堆结合拓展 二分法的运用 – Binary Search 普通二分拓展 Find Peak 按值二分详细解析 Binary Search On Value 第5章
本节大纲
动态规划(上) – 滚动数组与记忆化搜索
Dynamic Programming 匹配类动态规划 划分类动态规划 动态规划的空间优化 第6章
本节大纲
动态规划(下) – 区间,匹配与背包
记忆化搜索拓展 – DynamicProgramming Memoization 区间动态规划 记忆化搜索(区间动态规划、博弈类动态规划) 背包类动态规划 – BackPack Problem BackPack I/II K sum Minimum Adjustment Cost 第7章
本节大纲
如何解决 follow up 问题
Iterator 一类题目分析和模板解析 Flatten Nested List Iterator Nested List Weight Sum I / II Binary Tree Iterator Flatten 2d Array Iterator delete 二维数组 Wiggle Sort I / II Quick Select/ Quick Sort (二)
第1章
本节大纲
FLAG算法面试难度提高?如何准备?【免费试听】
各类IT企业的面试算法难度及风格 如何解决中等难度以上的算法题 如何解决follow up问题 两个指针-前向型指针 – Two Pointer Problem Minimum Size Subarray Sum Longest Substring Without Repeating Characters Longest Substring With at Most k Distinct Characters Minimum Window Substring 第K大问题 – Kth Largest Problem 第k大元素的三层递进面试考察. 如何通过一道题区分3类面试者 剖析面试官面试的思路 第2章
本节大纲
数据结构(上)之并查集与字典树
并查集 – Union Find 并查集的基本原理 并查集的相关运用 并查集的拓展(带路径压缩) 并查集的运用 Trie 树 – Trie Tree Trie 的基本结构 Trie 树的相关运用 Trie 和 DFS 结合考察 第3章
本节大纲
数据结构 Data Structure (下)
堆的深入理解和运用 – Heap 堆重要拓展: Median 问题拓展 Sliding Windows问题总结 栈 – Stack 栈在表达式上面的运用 单调栈的使用方法 双端队列 – Deque 第4章
本节大纲
二分法 和 扫描线
扫描线 – Sweep Line 扫描线入门 扫描线和堆结合拓展 二分法的运用 – Binary Search 普通二分拓展 Find Peak 按值二分详细解析 Binary Search On Value 第5章
本节大纲
动态规划(上) – 滚动数组与记忆化搜索
Dynamic Programming 匹配类动态规划 划分类动态规划 动态规划的空间优化 第6章
本节大纲
动态规划(下) – 区间,匹配与背包
记忆化搜索拓展 – Dynamic Programming Memoization 区间动态规划 记忆化搜索(区间动态规划、博弈类动态规划) 背包类动态规划 – BackPack Problem BackPack I/II K sum Minimum Adjustment Cost 第7章
本节大纲
如何解决 follow up 问题
Iterator 一类题目分析和模板解析 Flatten Nested List Iterator Nested List Weight Sum I / II Binary Tree Iterator Flatten 2d Array Iterator delete 二维数组 Wiggle Sort I / II Quick Select/ Quick Sort 第三部分:九章算法JA危a入门与基础算法班
第1章
本节大纲
零基础转CS,如何准备?【免费试听】
转专业找CS工作怎么办? 零基础如何在最短时间内拿到offer? 如何写好简历? IT技术面试内容有哪些? Ja .vA语言怎么入门? 第2章
本节大纲
数组与循环 UniCode, Array &; Loops
JA危a语言基础 I 1) IDE介绍:IntelliJ
2) int变量及其范围
3) char变量,什么是Unicode
4) boolean变量的与或非运算
5) 如何写好if语句
6) for循环和while循环
实战面试真题 1) character to integer
2) 数组的最大值
3) 打印矩阵
第3章
本节大纲
字符串,函数与类 String, Function & Class
JA危a语言基础 II 1) 字符串 String
2) 函数 Function
3) 类和对象 Class & Object
4) 什么是面向对象 Object Oriented
实战面试真题 1) convert lower case to upper case
2) 判断回文字符串
第4章
本节大纲
引用与链表 Reference and Linked List
OO基础,reference和链表 1) 什么是reference
2) 链表及其CRUD操作
实战面试真题 1) find node in linked list
第5章
本节大纲
栈与队列 Stack & Queue
栈和队列 1) 什么是数据结构
2) 栈及其实现
3) 队列及其实现
4) 集合类数据结构总结
5) 算法的时间和空间复杂度
实战面试真题1) 括号匹配
2) 栈的两种实现方式
3) 队列的实现
第6章
本节大纲
树和递归 Tree & Recursion
树和递归 1) 最火的数据结构:树
2) 什么是递归
3) 树的三种遍历方式
4) 递归算法的时间空间复杂度分析
实战面试真题 1) 求树的高度
2) 求所有叶子结点的和
3) 求所有根到叶子的路径
4) 翻转二叉树
第7章
本节大纲
二叉查找树与哈希表 BST & Hash Table
BST 和 hash table 1) 什么是BST (Binary Search Tree)
2) BST的两种插入方式
3) 什么是hash table
4) 什么是hash code
5) BST和hash table的应用价值
实战面试真题 1) validate BST
第8章
本节大纲
排序 Quick Sort & Merge Sort
排序 1) 插入排序
2) 选择排序
3) 归并排序
4) 快速排序
5) Comparator的使用
实战面试真题 1) sort colors
2) 重排数组构成最大数
第四部分:九章算法系统设计班
第1章
本节大纲
走进系统设计与新鲜事系统 Introduction to System Design & News Feed System【免费试听】
什么是系统设计 What is System Design 系统设计中常见的问题是什么 How we ask System Design in Interview 怎样回答系统设计问题 How to answer System Design Question 系统设计的 4S 分析法 4S inSystem Design 系统设计的知识点构成 Basic Knowledge of System Design 设计推特 Design a Twitter 第2章
本节大纲
从用户系统中理解数据库与缓存 Design User System – Database & Memcache
通过设计用户系统了解:
用户系统的特点是什么? 什么是会话 Session? 什么是数据库,什么是缓存,他们之间如何配合? 什么是 Cache Through 什么是 Cache Aside NoSQL 与 SQL 数据库的优劣比较与选取标准 如何进行数据库分片 Sharding 第3章
本节大纲
一致忄生哈希算法 & 设计短网址系统 Consistent Hashing & Design Tiny Url
实战真题 1) What happend if you visit www.google.com?
关键词:Web, Consistent Hashing, Memcached, Tiny url. 第4章
本节大纲
以GFS为例探索分布式文件系统 Distributed File System
以 GFS 为例系统学习 Google File System,了解如下内容:
Master SlA危e 的设计模式 怎么处理分布式系统中的failure 和recovery 的问题. 如何做replica, check sum 检查 了解consistent hash和sharding的实际应用
第5章
本节大纲
爬虫系统与搜索建议系统 Web Crawler & Google Suggestion
通过对爬虫系统设计 (Web Crawler) 与 搜索建议系统设计 (Google Suggestion) 了解如下内容:
多线程 生产者消费者模型 爬虫系统的演化:单线程,多线程,分布式 Trie 结构的原理及应用 如何在系统设计中使用 Trie 第6章
本节大纲
以Big Table为例探索分布式数据库 Distributed Database
通过设计分布式数据库系统Bigtable了解如下内容:
Big Table 的原理与实现 了解NoSQL Database如何进行读写操作的,以及相应的优化 了解如何建立index 学习Bloom Filter的实现原理
第7章
本节大纲
基于地理位置信息的系统设计 Location Based Service
系统学习LBS相关系统设计的核心要点:
地理位置信息存储与查询常用算法之 Geohash 如何设计 Yelp 如何设计 Uber 如何设计 Facebook Nearby 第8章
本节大纲
分布式计算系统 – Map Reduce 的原理与应用
学习Map Reduce 的应用与原理
了解如何多台机器并行解决算法问题 掌握Map和Reduce的原理 通过三个题目掌握MapReduce算法实现: WordCount InvertedIndex Anagram
第9章
本节大纲
聊天系统与访问限制系统 Message System & Rate Limiter
聊天系统中的 Pull vs Push 讲解一种特殊的Service – Realtime Service 用户在线状态的获取与查询 Online Status 访问限制系统及其设计原理 Rate Limiter
第五部分:九章算法面试班
第1章
本节大纲
Google/Facebook 大公司高频题风格解析 Interview Style of Google/Facebook etc.
高频题是啥? 为什么自己刷高频题面试还是挂? Google/Facebook等大公司高频题各有什么特点? 通过四道题目举例详解Google/Facebook/Linkedin/Amazon各公司面试特点 剖析各大It企业面试算法类型分布情况 第2章r> 本节大纲
基础算法和数据结构高频题 I basic algorithms && data structure high frequency problems I
Corner Case应对技巧 常见Corner Case类型 数组类问题详细解析 前缀和数组 数组滚动 字符串处理技巧 String Serialization 栈与队列的运用 System Longest File Path Read Characters From File – multiple calls 第3章
本节大纲
基础算法和数据结构高频题 II basic algorithms && data structure high frequency problems II
下面这些算法你能够bug free的写出来么? 用Hash 做字符/字符串统计 Sliding window 类题 时间复杂度分析技巧 “只访问一遍”型 综合运用类问题 根据时间复杂度要求设计数据结构 如何找到算法中的冗余 如何优化时间复杂度 第4章
本节大纲
树与分治算法. Tree & Divide and Conquer
二分搜索和二叉搜索树(BST)有什么关系? 怎样快速实现在二叉树的上的DFS? 如何理解分治型DFS 分治型DFS如何形象的记忆 分治型DFS与记忆化搜索、DP之间是什么关系 20分钟学会最小生成树算法 MST 第5章
本节大纲
搜索类题目如何高效实现 how to implement search problem effectively
BFS有哪些应用? 如何形象的思考BFS 万金油的DFS 如何理解枚举型DFS 怎样写DFS的程序比较舒服? Add Operators DFS中的剪枝 什么时候要剪枝? 怎样剪枝? Word Squares 详细讲解搜索类问题代码的技巧
第6章
本节大纲
数学、计算几何、位运算常见问题详解.high frequency problem of math computational graphic bit operation
详解矩阵问题 Sparse Matrix Multiplication Rotate Image 数位分离 & 进制转换 Pow(x, n) 高精度运算 Add Strings Add Binary Add Two Numbers Multiply Strings 计算几何运用 Max Point On a Line 位运算
第六部分:九章算法Android项目实战班
第1章
本节大纲
Android 开发基础 – Android Basic【免费试听】
为什么学习 Android? Android Studio 简介 Android 代码框架和程序构建 Android UI 入门
第2章
本节大纲
Android UI 初步 – MiniLinkedin I
Android 常用控件 Android UI 布局 Android View Hierarchy 全面理解图片 I18n in Android
第3章
本节大纲
从 UI 到数据 – MiniLinkedin II
动态列表 Activity之间的data flow 数据的持久化
第4章
本节大纲
Android UI 进阶 – ListView
Android UI 控件的明星: ListView 全面理解 Adapter ListView 的最优使用方法 Android UI thread
第5章
本节大纲
Android UI 进阶 II – UI Organizing
理解 RecyclerView Fragment 简介 Android Activity/Fragment lifecycle Android UI organizing
第6章
本节大纲
网络和多线程编程
理解 HTTP 理解 C/S模型 网络编程 多线程编程和AsyncTask
第7章
本节大纲
RecyclerView 进阶
RecyclerView with multiple view types 无限加载列表 RecyclerView 的网络图片加载
第8章
本节大纲
综合实战项目 – Dribbble客户端I
第9章
本节大纲
综合实战项目 – Dribbble客户端 II
第七部分:九章算法动态规划专题班
第1章
本节大纲
动态规划入门 Introduction to Dynamic Programming
什么是动态规划 动态规划和递归的区别 动态规划的解题要领:四个组成部分以及两个意识 动态规划三大类 求最值/计数/可行忄生 常见动态规划类型总结 课程FAQ 第2章
本节大纲
动态规划初探 坐标型动态规划 位操作型动态规划 A Peek into Dynamic Programming Dynamic Programming on Coordinates Bit operation
动态规划初探与例题讲解 坐标型动态规划的特点和解题要领 坐标型动态规划的状态 一维动态规划:序列 二维动态规划:网格 动态规划的空间优化:滚动数组 Rolling Array 位操作型动态规划 第3章
本节大纲
序列型动态规划 Dynamic Programming on Sequences
序列型动态规划的特点以及与坐标型的区别 状态中的信息存储 最长序列型动态规划 第4章
本节大纲
划分型,博弈型和背包型动态规划 Dynamic Programming on Partitioning, Game Theory, and Backpack
划分型动态规划的特点 划分型动态规划的状态 博弈型动态规划 背包型动态规划 可行忄生 计数 单个和无限多物品 空间优化 第5章
本节大纲
背包动态规划和区间型动态规划 Dynamic Programming on Knapsack and Intervals
背包动态规划(续) 最大价值 区间型动态规划 记忆化搜索实现动态规划的方法及利弊 第6章
本节大纲
双序列动态规划 Dynamic Programming on Double Sequence
双序列动态规划的特点 空间优化 第7章
本节大纲
动态规划难题专场 Special Class on Hard Problems in Dynamic Programming
所有类型动态规划中的高频难题 解题技巧以及实现方法 课程总结
下载地址
链接: https://pan.baidu.com/s/1Wb_y2xnPHBondL51a3HOlQ 提取码: hdci