面试-技术篇

基础

由于基本部分知识点过多,主要分两部走:
第一步:收集面试题:包含但不仅限于:脑中未解决的问题、作为面试官问的问题、网上找的面经。
第二步:收集重点题目并列出问题清单深入研究

知识点清单

在针对知识点学习时,我使用了日清法,每天完成一个知识点。
知识点清单:

  • 线程和进程
  • 用户态和核心态
  • C指针
  • fork
  • DDD
  • mysql-幻读 *
  • mysql-死锁
  • 秒杀系统(kafaka-分区机制)
  • lru
  • 零拷贝
  • 分页
  • map-reduce 架构
  • flink once
  • 系统的描述
  • redis-zset源码
  • HashMap
  • Spring源码
  • dubbo源码
  • netty源码
  • ES
  • G1
  • redis源码
  • kafka学习

GitHub - MisterBooo/LeetCodeAnimation

费曼学习法

进行知识点总结时,注意带着问题查找,要杜绝一知半解,如果不能用自已的话很通俗的讲出来,说明掌握的不彻底。为了检测理解程度,我使用了费曼学习法:
费曼学习法

1.找一个问题
2.试图了解它,并能讲给别人
3.有问题接着了解

一定要带着问题去阅读,我这举个例子,如果下面三个问题不能很清楚的回答,说明了解的不彻底。

双亲委派 - :为何使用双亲委派,为何又打破?
ThreadLocal - :为何使用弱引用,不用又如何?
Spring bean实例化 - :为何用三层缓存解决循环依赖,而不是二层?
[[快照读/当前读/幻读/mvcc]] mysql-幻读解决了吗?

算法

算法部分主要是刷题,题目来源主要有两部分,一是参考其它面经里的常考题,保证这些题目在被问到时能够胸有成竹;二是刷leeCodem,保证自已在写代码时有一个好的手感,我实际在以前从没刷过算法题,leetCode也是今年才开始刷题,总共刷了30+。

常考题

  1. 排序(快排) *
  2. 单链表翻转(递归或者循环) *
  3. 单链表倒数第K个节点
  4. 二分查找(以及变形) *
  5. 多个栈实现一个队列、两个队列实现一个栈 *
  6. 实现一个O(1)查找最大值的栈 *
  7. 头尾连接的链表实现队列
  8. 如何判断一个单链表是否有环 *
  9. LRU (双向链表实现)*
  10. 二叉树,求每层最大节点数
  11. 给一个单链表,去除奇数位置的节点。
  12. 倒置算法 输入abc_123_456 输出cba_321_654 *
  13. 子串包含问题(KMP 算法)写代码实现
  14. 动态规划(零钱兑换、爬楼梯以及变形问题、斐波那契数列)

leetcode

刷题leecode时只刷了常考题,这位网友整理的很有参考意义
GitHub - yuanguangxin/LeetCode: LeetCode刷题记录
https://github.com/labuladong/fucking-algorithm

引用

https://github.com/yuanguangxin/LeetCode/blob/master/Rocket.md
GitHub - yuanguangxin/LeetCode: LeetCode刷题记录

你可能感兴趣的:(面试-技术篇)