![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java面试突击
文章平均质量分 95
帮助大家从容面对面试,弥补平时工作中因没有时间而遗忘的八股文。 提供面经突击内容,作为面试突击或补齐多年Java基本功必备。
df007df
帮助大家从容面对面试,弥补平时工作中因没有时间而遗忘的八股文。
提供面经突击内容,作为面试突击或补齐多年Java基本功必备。
展开
-
最透彻HTTPS
HTTPS 的出发点是解决HTTP明文传输时信息被篡改和监听的问题。为了兼顾性能和安全性,使用了非对称加密+对称加密的方案。为了保证公钥传输中不被篡改,又使用了非对称加密的数字签名功能,借助CA机构和系统根证书的机制保证了HTTPS证书的公信力。原创 2023-11-28 17:25:39 · 894 阅读 · 0 评论 -
【Java面试突击-9】Java并发编程(AQS)
CLH锁其实就是一种是基于逻辑队列非线程饥饿的一种自旋公平锁,由于是 Craig、Landin 和 Hagersten三位大佬的发明,因此命名为CLH锁。AQS是JUC的核心,而CLH锁又是AQS的基础,说核心也不为过,因为AQS就是用了变种的CLH锁。如果要学好Java并发编程,那么必定要学好JUC;学好JUC,必定要先学好AQS;学好AQS,那么必定先学好CLH。先看CLH锁实现代码,然后通过一步一图来详解CLH锁。CLH锁的初始化逻辑1,定义了一个节点,里面有一个属性,表示线程线程是否获得锁,默认原创 2022-06-28 00:55:16 · 128 阅读 · 0 评论 -
【Java面试突击-8】Java并发编程(线程安全)
多个线程不管以何种方式访问某个类,并且在主调代码中不需要进行同步,都能表现正确的行为。线程安全有以下四种实现方式:不可变(Immutable)的对象一定是线程安全的,不需要再采取任何的线程安全保障措施。只要一个不可变的对象被正确地构建出来,永远也不会看到它在多个线程之中处于不一致的状态。多线程环境下,应当尽量使对象成为不可变,来满足线程安全。不可变的类型:对于集合类型,可以使用 Collections.unmodifiableXXX() 方法来获取一个不可变的集合。互斥同步synchronized 和原创 2022-06-19 21:08:13 · 98 阅读 · 0 评论 -
【Java面试突击-7】Java并发编程(线程池)
线程池提供了一种限制和管理资源(包括执行一个任务)的方式。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。使用线程池的好处:Executor 框架是 Java5 之后引进的,在 Java 5 之后,通过 Executor 来启动线程比使用 Thread 的 start 方法更好,除了更易管理,效率更好(用线程池实现,节约开销。Executor 框架不仅包括了线程池的管理,还提供了线程工厂、队列以及拒绝策略等,Executor 框架让并发编程变得更加简单。执行任务需要实现的 接口 或接口。 接口或原创 2022-06-07 23:03:13 · 126 阅读 · 0 评论 -
【Java面试突击-6】Java并发编程(上)
进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间原创 2022-06-07 18:53:25 · 133 阅读 · 0 评论 -
【Java面试突击-5】Java虚拟机(下)
Java 堆是垃圾收集器管理的主要区域,因此也被称作 GC 堆(Garbage Collected Heap)。从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆还可以细分为:新生代和老年代;新生代再细分为:Eden、Survivor1、Survivor2 空间。进一步划分的目的是更好地回收内存,或者更快地分配内存。堆空间的基本结构:上图所示的 Eden 区、From Survivor0(“From”) 区、To Survivor1(“To”) 区都属于新生代,Old Memo原创 2022-06-04 00:18:42 · 193 阅读 · 0 评论 -
【Java面试突击-5】Java虚拟机(上)
Java 就是使用提出了一套强大的内存管理机制,才让开发不用像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作。让开发只用关系逻辑而不用关系内存分配和使用的问题。Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK 1.8 和之前的版本略有不同,见下对比图。JDK 1.8 之前:JDK 1.8:看图分为几块内容:Java 虚拟机规范对于运行时数据区域的规定是相当宽松的。以堆为例:堆可以是连续空间,也可以不连续。堆的原创 2022-06-01 00:39:00 · 156 阅读 · 0 评论 -
【Java面试突击-4】Java容器(中)
MapHashMap 和 Hashtable 的区别线程是否安全: HashMap 是非线程安全的,Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!);效率: 因为线程安全的问题,HashMap 要比 Hashtable 效率高一点。另外,Hashtable 已被淘汰,不要在代码中使用它;对 Null key 和 Null value 的支持: Has原创 2022-05-31 14:44:40 · 151 阅读 · 0 评论 -
【Java面试突击-4】Java容器(上)
概述容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。对于Collection 接口,下面又有三个主要的子接口:List、Set 和 Queue。CollectionListArrayList:基于动态数组实现,支持随机访问。增加和删除(arraycopy实现)元素慢。Vector:和 ArrayList 类似,但它是线程安全的。底层是通过数组与synchronized实现的。是线程安全的。现在弃用。Lin原创 2022-05-30 13:56:40 · 401 阅读 · 0 评论 -
【Java面试突击-3】Java基础(下)
Linux 5种IO模型基本概念同步异步阻塞非阻塞小结五种I/O模型同步阻塞 I/O同步非阻塞 I/OI/O 多路复用信号驱动 I/O异步 I/O5个I/O模型的比较:select、poll、epollselectpollepoll总结水平触发(LT),边缘触发(ET)epoll 结构实现...原创 2022-05-24 16:33:03 · 128 阅读 · 0 评论 -
【Java面试突击-2】Java基础(中)
注解标准注释元注释自定义注释自定义注解实例Java中常用注释Spring常用注解注解的使用反射反射的作用反射的基本用法1,获取Class对象2,判断是否为某个类的实例3,创建实例4,获取类方法5,获取类的成员变量(字段)信息6,调用方法反射的缺点泛型什么是泛型如何实现泛型的类型擦除Java编译器处理泛型的过程泛型使用方式1,泛型类2,泛型接口3,泛型方法泛型带来的问题1,当泛型遇到重载2,当泛型遇到catch:3,当泛型内包含静态变量代理静态代原创 2022-05-20 15:18:45 · 521 阅读 · 0 评论 -
【Java面试突击-1】Java基础(上)
基本类型基本类型和包装类型自动装箱与自动拆箱自动装箱与自动拆箱的实现原理哪些场景会自动装箱和拆箱1,初始化和赋值2,函数参数与返回值3,基本数据放入集合中4,包装类型与基本类型进行比较5,三目运算符的使用自动装拆箱的缓存机制自动装箱与拆箱带来的问题字符串字符串的不可变性怎么做到不可变的?String设计为不可变的好处字符串拼接字符串拼接方式使用“+”拼接字符串使用concat使用StringBuffer使用StringBuilder使用StringUtils.jo原创 2022-05-19 02:15:28 · 655 阅读 · 0 评论