知识体系梳理

** 分布式

1、分布式架构、CAP理论、BASE

2、zookeeper

3、RPC框架(如Dubbo、Spring Cloud)

4、消息队列(Kafka),各种消息队列的优劣,(同步与异步消息处理)

  • 发布消息通常有两种模式:队列模式(queuing)和发布-订阅模式(publish-subscribe),kafka通过consumer group来实现,不同group为发布-订阅模式,group内部消费者之间为队列模式

5、Redis的同步与扩容机制、Redis保持唯一性地机制、zset、缓存清理策略(定期+惰性)、内存淘汰策略

 

一、Java虚拟机

1、内存架构

2、类加载机制(特别的,双亲委派模式及其反例)

3、内存模型,volatile实现原理

4、CMS、G1垃圾回收步骤

5、驱动时内存的分配

6、垃圾收集器:parallel scavenge + serial old      parallel new + CMS

7、内存溢出的出现的原因及解决思路(线程池-threadlocal、数据量大,文件或连接未正常关闭)

8、栈溢出的出现的原因及解决思路

9、cpu飙升的场景(响应慢导致请求堆积、死循环、gc)

 

 

二、Java基础

1、函数式编程

2、线程池

3、HashMap数据结构(数组 + 链表 + 红黑树)

4、CocurrencyHashMap数据结构

5、ThreadLocal,对于线程池来说,如何释放变量

6、乐观锁与悲观锁(sychronized、cas)

7、Error与Exception的区别

8、AIO、NIO、BIO

9、stream.parrel方法,注意后续链路方法的并发问题

10、notify/await,条件不满足时while循环中须先notify,后await

11、stream.flatmap及使用场景

12、spring

  • bean生命周期
  • bean循环引用
  • springboot启动方式

 

 

三、数据库

1、事务隔离级别、mysql隔离级别的实现方式(MVCC)

2、索引结构(聚集索引、B+树)、B与B+树的区别、索引的用处与坏处

3、数据库调优(explain,至少range、要求ref)

4、分库分表(sharding-jdbc、mycat)

5、分布式事务

6、count(*)、count(1)的区别,优化方式(由于mvcc,须遍历,可使用mysql事务存储)

7、join的执行过程(驱动表,join_buffer)

8、事务(嵌套事务)

 

四、设计模式

1、各种设计模式及其应用场景

2、单例模式的破坏

3、项目中用到哪些设计模式(策略模式、单例、责任链、建造者模式、模板方法)

 

五、算法与数据结构

1、二分查找法

2、冒泡排序 & 快速排序

3、LFU & LRU

4、一致性哈希算法

5、负载均衡策略

6、佩奇爬楼梯,10个阶梯,一次爬1/2步,枚举方案数(递归,树形结构)

7、六个数字,求三个数字和为0的组合数(转为two sum问题)

9、常见的加密算法(对称加密 : DES3DESAES , 非对称算法: RSADSA ,散列算法 : SHA-1MD5 )

10、Raft算法

 

六、操作系统

1、断页

 

七、场景

1、二维码登录的实现方式

2、https交互流程

3、秒杀

4、大文件的上传

5、线程池的大小如何设置?(cpu密集型:核数*2+1,io密集型:核数*(1 + io占比/cpu占比)) 

  -> 数据库连接池大小如何选择?(核数*2 + 有效磁盘数)

       -> 高并发系统如何设计?(提高单节点吞吐量 + 排队)

 

八、管理

1、代码review

2、devops,好处,对开发人员的

3、项目周期与需求的平衡

 

九、架构

1、领域模型

2、设计思路与方法论(用例图,泳道图)

 

posted @ 2018-09-21 19:03  Matt_Cheng  阅读(341)  评论(0编辑  收藏  举报