# marion-notes
**Repository Path**: dingwen-gitee/marion-notes
## Basic Information
- **Project Name**: marion-notes
- **Description**: 架构师学习笔记,涵盖JAVA基础、MySQL、Spring、SpringBoot、SpringCloud、SpringCloudAlibaba、Redis、Kafka、设计模式、JVM、Zookeeper、Netty、大数据、数据结构与算法、操作系统、计算机网络、深度学习、推荐系统等。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://space.bilibili.com/269097482
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 134
- **Created**: 2022-07-31
- **Last Updated**: 2022-07-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 我的社交资料
- B站UP账号:[后端研发Marion](https://space.bilibili.com/269097482)
- 今日头条账号:[后端研发Marion](https://www.toutiao.com/c/user/token/MS4wLjABAAAAChrLQhHvIVE31-TLHrkth8_9uQLhosRHQmKC5jkat70/)
- CSDN账号:[后台研发Marion](https://blog.csdn.net/luomao2012)
- 微信公众号:【后端研发Marion】加微信进JAVA技术交流群
| 微信公众号 | 微信群(备注:加群) |
| :----------------------------------------------: | :-----------------------------------------------: |
|
|
|
## JAVA架构师笔记
- [01-JAVA基础](/01-JAVA基础)
- [02-MySQL](/03-MySQL)
- [03-Spring全家桶](/05-Spring框架)
- [04-Redis](/04-Redis])
- [05-Kafka](/07-Kafka)
- [06-设计模式](/06-设计模式)
- [07-JVM](/02-JVM)
- [08-Zookeeper](/08-Zookeeper)
- [09-Netty](/09-Netty)
- [10-大数据](/10-大数据)
- [11-操作系统](/11-操作系统)
- [12-数据结构与算法](/12-数据结构与算法)
- [13-计算机网络](/13-计算机网络)
- [14-JAVA高级面试题](/14-JAVA高级面试题)
- [15-深度学习](/15-深度学习)
- [16-精选文章](/16-精选文章)
- [17-技术年货](/17-技术年货)
- [18-Go语言](/18-Go语言)
- [19-JAVA工程师成神之路](/19-JAVA工程师成神之路)
# [【JAVA工程师成神之路】](https://hollischuang.gitee.io/tobetopjavaer/#/)
## 基础篇
### 面向对象
- 什么是面向对象
- 面向对象与面向过程
- 面向对象的三大基本特征
- 面向对象的五大基本原则
- 封装、继承、多态
- 什么是多态
- 方法重写与重载
- Java的继承与实现
- Java为什么不支持多继承
- Java的继承与组合
- 构造函数与默认构造函数
- 类变量、成员变量和局部变量
- 成员变量和方法作用域
- 平台无关性
- Java如何实现的平台无关性的
- JVM还支持哪些语言
- 值传递
- 值传递、引用传递
- 为什么说Java中只有值传递
### Java基础知识
- 基本数据类型
- 8种基本数据类型
- 整型中byte、short、int、long的取值范围
- 什么是浮点型?
- 什么是单精度和双精度?
- 为什么不能用浮点型表示金额?
- 自动拆装箱
- 自动拆装箱
- Integer的缓存机制
- 如何正确定义接口的返回值(boolean/Boolean)类型及命名(success/isSuccess)
- String
- 字符串的不可变性
- JDK 6和JDK 7中substring的原理及区别
- replaceFirst、replaceAll、replace区别
- String对“+”的重载
- 字符串拼接的几种方式和区别
- String.valueOf和Integer.toString的区别
- switch对String的支持
- 字符串池
- Class常量池
- 运行时常量池
- intern
- String有没有长度限制?
- Java中各种关键字
- transient
- instanceof
- volatile
- synchronized
- final
- static
- const
- 集合类
- Collection和Collections区别
- 常用集合类的使用
- Set和List区别?
- ArrayList和LinkedList和Vector的区别
- ArrayList使用了transient关键字进行存储优化,而Vector没有,为什么?
- SynchronizedList和Vector的区别
- Set如何保证元素不重复?
- HashMap、HashTable、ConcurrentHashMap区别
- Java 8中Map相关的红黑树的引用背景、原理等
- HashMap的容量、扩容
- HashMap中hash方法的原理
- 为什么HashMap的默认容量设置成16
- 为什么HashMap的默认负载因子设置成0.75
- 为什么建议设置HashMap的初始容量,设置多少合适
- Java 8中stream相关用法
- Apache集合处理工具类的使用
- 不同版本的JDK中HashMap的实现的区别以及原因
- Arrays.asList获得的List使用时需要注意什么
- Collection如何迭代
- Enumeration和Iterator区别
- fail-fast 和 fail-safe
- 如何在遍历的同时删除ArrayList中的元素
- CopyOnWriteArrayList
- ConcurrentSkipListMap
- 枚举
- 枚举的用法
- 枚举的实现
- 枚举与单例
- Enum类
- Java枚举如何比较
- switch对枚举的支持
- 枚举的序列化如何实现
- 枚举的线程安全性问题
- 为什么不建议在对外接口中使用枚举
- IO
- 字符流、字节流
- 输入流、输出流
- 字节流和字符流之间的相互转换
- 同步、异步
- 阻塞、非阻塞
- Linux 5种IO模型
- BIO、NIO和AIO的区别、三种IO的用法与原理
- netty
- 反射
- 反射
- 反射有什么作用
- Class类
- 反射与工厂模式实现Spring IOC
- java.lang.reflect.*
- 动态代理
- 静态代理
- 动态代理
- 动态代理和反射的关系
- 动态代理的几种实现方式
- AOP
- 序列化
- 什么是序列化与反序列化
- Java如何实现序列化与反序列化
- Serializable 和 Externalizable 有何不同
- 为什么序列化
- serialVersionUID
- 为什么serialVersionUID不能随便改
- transient
- 序列化底层原理
- 序列化如何破坏单例模式
- protobuf
- Apache-Commons-Collections的反序列化漏洞
- fastjson的反序列化漏洞
- 注解
- 元注解
- 自定义注解
- Java中常用注解使用
- 注解与反射的结合
- 如何自定义一个注解?
- Spring常用注解
- 泛型
- 什么是泛型
- 类型擦除
- 泛型带来的问题
- 泛型中K T V E ? object等的含义
- 泛型各种用法
- 限定通配符和非限定通配符
- 上下界限定符extends 和 super
- List