总结
相比秦老师这个称呼,我更喜欢 秦大哥 这个称呼;
因为大哥真的做到了大哥的意思,不仅从技术方面传授,也传授了一些这些年来,老师职场的感悟,以及一些做人的道理;
秦大哥的口头禅是,“兄弟们 …” 其实就是指秦大哥带过的团队的成员,想想在秦大哥手下当差应该是挺舒服的,因为有一个好的 带头大哥;
**
说说这四个月吧,从20年10月初开营到现在2月初,扎扎实实的4个月,学到了很多技术方面的知识,老师传授了一份学习Java的图谱,让我在以后的技术发展道路上,按照图谱润色就好;有时间一直是看秦老师的直播的,喜欢直播的互动,但是有时候因为加班的原因,赶不上直播,也会在第一时间看完录播,整体的需要往返巩固N遍(重复学习老师的视频,处理工作当中的具体业务。),才能把这个Java图谱巩固踏实。一件事情的结束,是另外一个事情的开始吧,在这个训练营找到了一帮志同道合的人,在秦大哥的带领下,希望大家伙技术上都上升一个台阶。而我就不一样了,只希望年后找一份Java相关(当前是PHP开发)的开发工作,然后在岗位上学习巩固,预祝自己和大家伙在新的开始能够找到一份满意的工作。
感恩遇见,遇见秦大哥,遇见负责人的“催催”教研老师 ..
JVM
不积硅步,无以至千里 不积细流,不已成江河 山不辞土,故能成其高 海不辞水,故能成其深 博观而约取,厚积而薄发
用这一段来形容Java体系的JVM、GC这一类底层原理性质的东西,再合适不过了,其实现在很多技术人,挺浮躁的(包括我),任何事情只需要达到效果,不太关注背后的原理。
这种方式看似产出上去了,但是有一个致命的问题,就是但凡系统出现问题,不知道从何下手,不知道从哪里开始分析问题。如常见的OOM,可能只是我们一个启动参数弄错了,而排查问题,却花费了时间,但是找不到发生问题的根本原因,在具体的生产环境当中,可以就是直接损失真金白银。
面试题:
- 什么是JVM?
- 请问JDK和JVM有什么区别?
- 你认识哪些JVM厂商?
- OracleJDK与OpenJDK有什么区别?
- 开发中使用哪个版本的JDK?生产环境呢?为什么这么选?
- 什么是Java字节码?
- 字节码文件中包含哪些内容?
- 什么是常量?
- 你怎么理解常量池?
- JVM的运行时数据区有哪些?
- 什么是堆内存?
- 堆内存包括哪些部分?
- 什么是非堆内存?
- 什么是内存溢出?
- 什么是内存泄漏?
- 两者有什么关系?
- 给定一个具体的类,清分析对象的内存占用
- 怎么计算出来的?
- 对象头中包含哪些部分?
- 常用的JVM启动参数有哪些?
- 设置堆内存XMX应该考虑哪些因素?
- 假设物理内存是8G,设置多大堆内存比较合适?
- -Xmx设置的值与JVM进程所占用的内存有什么关系?
- 怎样开启GC日志?
- 请指定使用G1垃圾收集器来启动Hello程序
- Java8默认使用的垃圾收集是什么?
- Java11的默认垃圾收集器是什么?
- 常见的垃圾收集器是什么?
- 什么是串行垃圾收集?
- 什么是并行垃圾收集?
- 什么是并发垃圾收集?
- 什么是增量垃圾收集?
- 什么是年轻代?
- 什么是GC停顿(GC pause)?
- GC停顿和STW停顿有什么区别?
如果CPU使用率飙升,你会怎么排查?
异步
- 事件驱动
- 基于 NIO
适用于:
- 服务端
- 客户端
- TCP/UDP
API网关
- 请求接入:作为所有的API接口服务请求的接入点
- 业务聚合:作为所有后端业务服务的聚合点
- 中介策略:实现安全、验证、路由、过滤、流控等策略
- 统一管理:对所有API服务和策略进行统一管理
并发编程
为什么会有多线程?本质原因是摩尔定律失效,多核+分布式时代的来临
线程池的原理与应用
面试题:
- 线程和进程的区别是什么?
- 为什么会有池化的思想出现?
- synchronized 方式的问题?
Spring和ORM等框架
Java能有今日的生态成就,有统一的框架Spring(脚手架Spring boot也算在其中)功不可没,而在操作ORM(实体关系映射,代码与数据库的结合点)也有趋于统一的MyBatis,让开发人员能在统一的标准语法之下进行开发,从代码风格到对代码的理解,都有一套不成为的体系;
面试题:
- 什么是框架
- 你理解的Spring框架是什么呢?
- 为什么要约定大于配置?优势在于,开箱即用
-
MySQL数据库和SQL
通过性能作为连接点来深入讲解数据库。
通常我们说的性能,一方面性能是业务编程语言方面(业务逻辑,编码bug,设计不合理)和数据库方面(慢查询,数据库表设计不合理)排查。
MySQL是我们常用的关系型数据库,而sql语言是为了方便我们查询储存在关系型数据库里边查询语言。面试题:
什么是关系数据库?
- 关系型数据库的设计范式
- MySQL数据库什么时候单独使用一个字段储存值,为什么不能都序列化储存到数据库字段里边
- 了解NoSQL吗?
- 一条SQL的执行顺序是什么样子的?
- MySQL索引原理
-
分库分表
随着业务量的变大,分库分表是常见的解决问题的方式。但是我们平常怎么样来分库和分表呢,拆分之后,又怎么样来查询数据呢?
面试题
在工作中,用过分库分表吗?
- 为什么要分库分表?
- 为什么要读写分离?
- 分库分表之后,事物应该怎么样控制?
- 搭建过主从复制吗?主从复制的原理是什么?
- 主从复制有什么局限性?
高可用,高可用的定义是什么?你觉得数据库的高可用需要考虑哪些方面?
RPC和微服务
rpc的简单粗暴的概念是:是为了实现像调用本地方法一样的调用远程服务的一种技术;基于这个概念出发,讲解了为什么我们需要rpc,常用的rpc框架有一些什么,rpc的基本原理与框架
设计接口规范
- 代理
- 序列化
- 网络传输
- 查找实现的对象或者类
分布式服务就不得不提我们的Dobbo