学习路线

几个方面

算法面试

操作系统与同步概念

系统设计

ODD设计

某些手撕题

杨辉三角求数字位置,118,119题相关

循环有序数组的查找,33题相关

求二叉树的最近公共祖先,236题相关

求阶乘后的0,172题相关

实现一个增删改查功能的LinkedList,707题相关

矩阵置零

二叉树的层序遍历

中文转数字,数字转中文

链表的两数相加,2题相关

反转链表,206题相关

合并两有序链表,21题相关

括号匹配,20题相关

队列实现栈,栈实现队列,225,232题相关

判断IP地址是否在集合内,字符串匹配

中缀表达式的计算,224题相关

划分字母区间,763题相关

leetcode腾讯精选50道

学习计划

第一周

学习语言基础

怎么读写文件

怎么从控制台读取输入

怎么分割字符串

怎么分配二维数组和使用

第二,三周

学习数据结构和算法

复杂度分析

数组

队列

链表

图(深搜和宽搜)

哈希表

排序

查找

第四,五周

学习简单的数据结构和算法

数组常见:

怎么从数组删除偶数

怎么合并两个排序好数组

求数组中第一个不重复数字

找到数组中第二大数字

链表常见

链表长度

怎么在链表中查找

怎么翻转链表

怎么找链表最中间值

队列和栈常见

栈中元素排序

构造一个栈,能在O(1)时间找到最小值

如何用数组实现栈和队列

树的常见

二叉搜索树最小值

二叉树的高度

BST的第K大数

图的常见

实现宽搜

实现深搜

检测图中是否有环

字母树常见

字母树中单词个数

找到字母树中所有单词

堆的常见

一个列表里K个最小的数

找到数组中K个最大的数

第六,七,八周

分析复杂题目:

学会计算答案的时间和空间复杂度,面试时要清晰阐述答案的时空复杂度

题目推荐:

  1. Implement Binary Search
  2. Find the Intersection point of two linked lists
  3. Reverse words in a sentence
  4. check if two binary trees are identical
  5. Clone a directed graph
  6. Find solution to a Boggle game
  7. Determine if there are any three integers in an array that sum equal to the given value
  8. 实现二分搜索
  9. 找到两个链表汇入点
  10. 翻转一个句子的单词
  11. 判断两二叉树相同
  12. 复制两个有向图
  13. 实现Boggle游戏
  14. 3Sum

第九,十周

学习系统设计部分,考虑实际问题,诸如:

  1. 如何解决服务器的负载均衡问题
  2. 如何共享数据库
  3. 如何保存大文件
  4. 如何架构网络,解决冗余和达到最大吞吐量

可以搜索学习的方向:

设计Instagram

设计脸书的Newsfeed

设计Uber

第十一周

了解线程,锁,同步等概念

第十二周

学习ODD方面知识

设计ATM机

设计电梯

设计停车场

JAVA问题集合


本博客所有文章除特别声明外,大部分为学习心得,欢迎与博主联系讨论