2018.6.9-学习笔记

CAS

AQS

volatile关键字概念、作用是干什么的

计算机内部:进程、线程、协程有什么不同

操作系统底层怎么做CAS的,怎么不做CAS的

理解Memory barrier(内存屏障)怎么实现的

java并发框架Disruptor

zk和redis的封装

分布式调度系统ElasticJOB的应用

MQ<ActiveMQ/RabbitMQ/Kafka/RoketMQ>特点、原理、选型、概述

RabbitMQ集群搭建/镜像队列/HA proxy + Keepalived

RabbitMQ 基于Sping AMQP,模式、运维、调优、恢复、延迟队列

使用状态机的方式/基于事件驱动进行业务流转 Spring State Machie

服务治理策略/限流/熔断策略/重试策略/服务降级/强弱关系

数据同步策略/ElasticSearch/DATABUS/Redis/统计分析/多维度场景查询选择

需要掌握四点:

第一点,非常扎实的基础知识点

1 比如java基础集合框架的使用、HashMap、ArrayList、LinkedList底层实现

2 比如多线程,系统里面多线程的个数是如何设置的,为什么这样设置,一般线程池都是使用什么方式去创建的

3 比如网络编程,IO和NIO的区别,NIO的技术框架有哪些,他们的核心原理概念,在网络编程中,有两个基本模型Reactor和Proactor的实现方式和原理,以及区别。

HTTP是基于TCP/IP的,那么三次握手在操作系统中都执行了哪些操作?我们编写NIO框架,比如Netty、Mina的时候,需要注意哪些点?

4 比如JVM,整个全景模型、内存模型、新生代、老年代以及各种垃圾算法、垃圾收集器都是对或者关注哪些个方面的,在什么场景下如何去使用,Full GC 为什么会发生,一般Full GC产生的原因是什么,真正工作中如何去进行定位和排查?

5 算法和数据结构,对选择、冒泡、递归、堆栈、队列、线性表、链表等一些基本的东西 有一定的认知

第二点,各种主流应用框架技术广泛了解

1 Mysql 使用熟悉么,有关索引的一些问题,SQL优化怎么样,有什么技巧,建议。对Mysql数据库存储方面有哪些实际应用和亮点,在高并发下扛得住么?怎么看待分布式事物。业务里有用过分布式事物么?怎么解决?具体细节?对分库分表后的数据,如何做存储,后续如何多维度查询和统计分析?

2 缓存,比如Redis可以做哪些事?工作中Redis都用到什么场景?Redis做缓存的话如何与DB进行同步?有哪些数据同步框架?Redis集群中,如果在节点数据迁移的时候,对该节点里的数据操作会不会成功,如何保障成功,我们需要做哪些?

3 MQ,使用过哪些MQ?MQ主要是为了解决什么问题?工作中,因为解决这些问题而去使用MQ还是为了使用MQ而用MQ,这是两个不同的概念。封装过MQ的什么扩展功能?

4 Zookeeper是用来做什么的?Paxos算法是什么概念,CAP的理论基础,你了解的微服务框架中,哪些使用了CP,哪些使用了AP ? 为什么这么做取舍。

5 CAS、AQS、无锁计算框架,JDK底层的CAS是如何实现的?你用过哪些无锁框架?性能情况如何?对Hash算法有过了解么?什么是一致性hash?哪些框架在数据存储层面上面使用了Hash方式?

6 负载均衡层面,你了解过哪些负载均衡框架?什么是反向代理?如何做限流控制?

第三点,对互联网解决方案有足够的认知

1 了解什么是SRE?工作中对SRE做了哪些事情?

2 在微服务架构中,如何对服务进行治理和依赖,服务的依赖过程中,有哪些必要性?强弱依赖性?强以来都指的哪些?弱依赖指的是哪些?强依赖的服务在发送异常时如何做处理,弱依赖如何处理?降级手段有哪些?

3 我们经常会遇到服务超时或者下游服务压力过大的情况,如何去做流控,你使用了哪些方案?

4 面对高并发场景下,我们如何对系统进行架构设计,数据库 表结构、事物等又如何做处理?在这种场景下,作为开发,有哪些好的建议。从各个方面来具体谈一下

5 对MQ有哪些认知,你使用的MQ在实际场景下如何去保障消息不丢失和不重复的,对于一个或者多个服务调用的流程如何做设计,简单说说重点要做哪些点才能使核心链路,比如下订单这个业务不丢订单数据、不多(重复)订单数据?

6 如何进行线上排查问题,说一说排查问题的实际经历或经验。

第四点,精通一到两种主流框架核心原理

1 什么 是中间件,你了解过哪些中间件产品,其核心主要是为了解决哪些问题?比如我们线上有1000+Nginx服务器,运维同事都需要去手工修改配置,动态扩容,增减切换节点,我现在想开发一个Nginx管理平台,实现这些操作都自动化?如何去做?

2 在互联网行业中,核心链路之中某一个环节发生故障,我们一般都是采取降级策略,如何做到在线降级?如果要你开发这样一个中间件,该如何实现,简单说说思路和解决方案。

3 基础组件封装的目的是为了什么?你做过哪些基础组件的封装?

4 分布式锁为了解决什么问题,你使用过哪些框架的分布式锁,性能和瓶颈有没有一个具体的指标?你用过的分布式锁原理是什么?在网络发生闪断的时候,分布式锁会产生哪些问题,如何避免?

5 你阅读过哪些优秀开源框架的源码?你在做基础组件的过程中都使用过哪些设计模式,有什么好处?Java中最简单异步回调函数如何实现的,在java优化层面上,你在之前工作中都做过哪些优化,解决过哪些java层面的性能瓶颈?

原文地址:https://www.cnblogs.com/alter888/p/9160570.html