### 后端开发基础知识整理 本篇文档对后端开发中的关键知识点进行了全面而深入的梳理,涵盖了Java语言基础、JVM、操作系统、网络技术、数据库、缓存、多线程、Spring框架等方面的核心概念和技术要点。以下是针对文档标题、描述以及部分内容中提到的重要知识点的详细解读。 #### 1. Java语言基础 - **JVM、JRE、JDK的关系**: - **JVM (Java Virtual Machine)**:是Java虚拟机,负责执行字节码。 - **JRE (Java Runtime Environment)**:包含JVM和核心类库,用于运行Java程序。 - **JDK (Java Development Kit)**:包含了JRE以及编译、调试工具等,是完整的Java开发环境。 - **Java语言特点**:面向对象、平台无关性、自动垃圾回收、安全性高等。 - **Java与C++的区别**:主要在于Java具有更严格的面向对象特征、无指针、自动内存管理等。 - **Java数据类型**:包括基本类型如int、double等,以及引用类型如类、接口等。 - **访问修饰符区别**:public、protected、default、private分别表示不同级别的可见性。 - **Final、finally、finalize区别**: - `final`:用于声明不可变的变量或方法。 - `finally`:用于异常处理中的finally块,确保资源释放。 - `finalize`:过时的方法,用于对象被垃圾回收前的清理工作。 - **this、super区别**:`this`指当前对象的引用,`super`指向父类的对象。 - **static用法**:用于声明静态变量、静态方法等,不依赖于对象存在。 - **面向对象、面向过程区别**:面向对象强调数据封装和对象交互;面向过程侧重于步骤和函数。 - **面向对象的三大特性**:封装、继承、多态。 - **面向对象五大基本原则**:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则。 - **抽象类、接口**:抽象类可以有部分实现,接口只能定义方法签名。 - **成员变量、局部变量区别**:成员变量属于类的实例,局部变量存在于方法内部。 - **静态变量、实例变量区别**:静态变量所有对象共享,实例变量每个对象独立。 - **静态方法 实例方法区别**:静态方法不依赖于对象存在,实例方法通过对象调用。 - **静态内部类、成员内部类、局部内部类、匿名内部类**:不同类型的内部类,具有不同的作用域和生命周期。 - **equals方法**:用于比较对象内容的相等性。 - **BIO、NIO、AIO区别**: - **BIO**:阻塞IO,适用于连接数量少且固定的情况。 - **NIO**:非阻塞IO,支持多路复用。 - **AIO**:异步非阻塞IO,真正的异步IO,效率更高。 - **反射**:运行时动态获取类的信息并操作类对象的技术。 - **String类型的三个特性**:不可变性、池化机制、序列化友好。 - **String、StringBuffer、StringBuilder的区别**:String不可变,StringBuffer和StringBuilder可变,后者线程安全。 - **集合与数组的区别**:集合大小可变,类型为对象;数组大小固定,类型多样。 - **Map接口和Collection接口**:Map存储键值对,Collection存储单一元素的集合。 - **遍历一个List的不同方式**:foreach循环、迭代器Iterator、增强for循环等。 - **ArrayList、LinkedList、Vector的区别**:ArrayList基于数组实现,LinkedList基于双向链表,Vector线程安全但效率低。 - **ArrayList用于多线程**:非线程安全,需手动同步。 - **HashMap原理**:基于哈希表实现,提供高效的数据查找。 - **HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标**:为了减少哈希冲突。 - **HashMap、HashTable、ConcurrentHashMap**:HashTable线程安全但效率低,ConcurrentHashMap高并发场景更优。 - **Array、ArrayList转换**:可通过构造函数或方法转换。 - **Comparable、Comparator**:前者定义在类内部,后者外部定义比较逻辑。 - **Collection、Collections**:前者接口,后者工具类。 - **IO流**:用于处理输入输出。 - **NIO**:引入了通道和缓冲区等新概念。 - **AIO**:异步非阻塞IO模型。 - **Select、epoll区别**:Select受限于文件描述符数量,epoll无此限制且效率更高。 - **高并发解决方案**:使用NIO、AIO、线程池等技术提高并发能力。 - **Zero Copy**:减少数据复制次数,提高性能。 - **字节流、字符流区别与应用场景**:字节流处理原始二进制数据,字符流处理字符数据。 - **SynchronousQueue实现原理**:一个不存储元素的阻塞队列,适用于传递任务。 - **自定义类的应用场景**:当现有类无法满足需求时,可以自定义类来实现特定功能。 - **双亲委派模型**:类加载机制的一部分,确保类的唯一性。 - **异常处理**:通过try-catch-finally等语句处理异常情况。 - **获取用键盘输入常用的方法**:Scanner、BufferedReader等。 - **TreeMap原理**:基于红黑树实现的有序映射。 - **红黑树**:一种自平衡的二叉查找树。 - **注解**:用于给代码添加元数据。 - **泛型**:提供类型安全的容器。 - **序列化**:将对象的状态转化为字节流。 - **复制**:浅拷贝与深拷贝。 - **Java9的改进**:模块系统、JShell等新特性。 #### 2. JVM - **JVM的主要组成部分及其作用**:类加载器子系统、运行时数据区、执行引擎等。 - **JVM运行时数据区/内存模型**:包括方法区、堆、栈等。 - **堆栈的区别**:堆用于存储对象实例,栈用于存储局部变量和方法调用信息。 - **对象创建的五种方法**:new关键字、反射、克隆等。 - **new的过程**:内存分配、初始化、设置引用等步骤。 - **Java中的引用类型**:强引用、软引用、弱引用、虚引用。 - **如何判断对象是否可以被回收**:可达性分析算法。 - **垃圾回收算法**:标记-清除、复制、标记-整理等。 - **垃圾回收器**:Serial、ParNew、CMS等。 - **分代垃圾回收器的工作原理**:年轻代与老年代分别采用不同的垃圾回收策略。 - **内存分配策略**:对象优先在Eden区分配、大对象直接进入老年代等。 - **类加载机制**: - **类加载器分类**:启动类加载器、扩展类加载器、应用类加载器。 - **类装载过程**:加载、验证、准备、解析、初始化五个阶段。 - **JVM调优**:使用合适的垃圾回收器、调整堆大小等。 - **Minor GC、Major GC、Full GC**:分别表示年轻代、老年代、整个堆的垃圾回收。 - **类文件结构**:包括魔数、版本号、常量池等部分。 - **User user = new User()做了什么操作**:分配内存、初始化对象等。 - **内存泄漏及解决方法**:避免使用无用的引用、及时关闭资源等。 - **HotSpot逃逸分析**:确定对象是否可以在栈上分配。 - **Java中的常量池**:存储类中的常量信息。 - **-XX:+UseCompressedOops的作用**:压缩对象指针,节省内存空间。 - **内存溢出和内存泄漏的区别**:内存溢出是指内存分配失败,内存泄漏是指不再使用的对象占用内存未释放。 #### 3. 操作系统 - **程序执行的基本过程**:从加载到执行再到退出。 - **如何让程序跑得更快**:优化代码、利用缓存等。 - **缓存一致性问题**:多处理器环境下保持缓存数据的一致性。 - **伪共享问题**:多个处理器缓存同一数据块导致性能下降。 - **软中断**:由软件产生的中断信号。 - **分段分页问题与解决**:分段解决了程序逻辑地址与物理地址的映射,分页则解决了内存碎片问题。 - **并行与并发的区别**:并行指同时进行,而并发指交替执行。 - **进程控制过程**:创建、运行、阻塞、终止等状态变化。 - **进程上下文切换的场景**:时间片轮转、系统调用等。 - **线程与进程的区别**:线程共享进程资源,进程拥有独立地址空间。 - **线程的三种实现**:用户级线程、内核级线程、混合模型。 - **线程调度原则与调度算法**:先来先服务、时间片轮转等。 - **进程间通信的方法、应用场景、优缺点**:管道、信号量、消息队列等。 - **临界区、互斥、同步**:临界区指必须独占访问的资源区域,互斥和同步是实现手段。 - **信号量原理**:通过计数器来控制对共享资源的访问。 - **生产者消费者问题、哲学家就餐问题、读者写者问题**:经典的同步问题示例。 - **死锁的条件、排查、避免**:互斥条件、请求与保持条件、不剥夺条件、循环等待条件等。 - **互斥锁、自旋锁、读写锁、悲观锁、乐观锁**:不同的锁机制适应不同的并发场景。 - **缺页中断、页面置换算法**:缺页中断处理页面不在内存中的情况,页面置换算法决定淘汰哪个页面。 - **磁盘调度算法**:先来先服务、最短寻道时间优先、扫描算法等。 - **文件存储方法、空闲空间管理方法**:连续存储、链接存储、索引存储等。 - **软连接与硬连接**:软链接类似Windows下的快捷方式,硬链接指向文件本身。 - **缓冲与非缓冲I/O、直接与非直接I/O、阻塞与非阻塞I/O、同步与异步I/O**:不同的I/O操作模式,适应不同的应用场景。 - **DMA工作方式**:直接内存访问,绕过CPU进行数据传输。 - **TCP/IP网络模型**:应用层、传输层、网络层、数据链路层、物理层。 #### 4. 网络 - **HTTP状态码**:200成功、404未找到等。 - **HTTP/1.1、HTTP/2、HTTP/3**:协议的不同版本,从文本到二进制,性能逐渐提升。 - **HTTP、HTTPS区别**:HTTPS使用SSL/TLS加密传输。 - **SSL握手过程**:客户端发送Hello消息、服务器响应、客户端验证证书、密钥交换等步骤。 - **IP地址分类、缺点、改进**:A/B/C/D/E五类,IPv4地址短缺,IPv6增加地址空间。 - **IPv6与v4首部差异**:IPv6首部简化,增加了流标签字段。 - **ARP、DHCP、DNS、IGMP过程**:ARP地址解析协议,DHCP动态主机配置协议,DNS域名解析服务,IGMP互联网组管理协议。 - **ICMP**:用于网络诊断和控制报文。 - **键入网址后会发生什么**:DNS解析、建立TCP连接、发送HTTP请求、接收响应等。 - **TCP包头格式、定义、三次握手、为什么不是两次四次**:TCP头部包括源端口、目的端口、序列号等字段,三次握手保证双方就绪,两次四次不够可靠。 - **TCP、UDP区别、应用场景**:TCP面向连接,适用于文件传输;UDP无连接,适用于实时通信。 - **SYN攻击如何避免**:使用防火墙过滤异常流量、限制连接速率等。 - **TCP四次挥手、TIME_WAIT作用、保活机制**:四次挥手完成连接关闭,TIME_WAIT状态确保所有数据包被接收,保活定时器防止连接挂起。 以上是对后端开发基础知识的整理,涉及广泛的主题和技术点,旨在帮助开发者构建坚实的后端技术基础。
剩余235页未读,继续阅读
- 粉丝: 319
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件