![](https://img-blog.csdnimg.cn/20191228175359283.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试题
文章平均质量分 91
面试了20多家总结出来的面试题
偏偏爱吃梨
这个作者很懒,什么都没留下…
展开
-
Java中类加载器
前言类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。所有的类都由类加载器加载,加载的作用就是将 .class文件加载到内存。类加载过程我们不在这里详细说了,有需要的小伙伴可以去看下这篇文章哦:《Java中类的一生是如何度过的?》 1. 常用的类加载器JVM 中内置了三个重要的类加载器(ClassLoader),除了 BootStrapClassLoader 其他类加载器均由 Ja原创 2021-03-29 21:37:13 · 600 阅读 · 0 评论 -
Java中类的一生是如何度过的?
1. 类的生命周期一个类的完整生命周期如下:2. 类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步: 加载 --> 连接 --> 初始化 。连接过程又分为三步:验证 --> 准备 --> 解析 。2.1. 加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流。将字节流所代表的静态存储结构转换方法为方法区的运行时数据结构。在内存原创 2021-03-28 20:50:31 · 427 阅读 · 5 评论 -
爆肝整理-JVM垃圾回收
文章目录前言1. JVM 内存分配与回收的神秘面纱1.1. 对象优先在 eden 区分派1.2. 大对象直接进入老年代1.3. 长期存活的对象将进入老年代1.4. 主要进行 GC 的区域2. 如何判断对象已经死亡?2.1. 引用计数法2.2. 可达性分析算法2.3. 再谈引用2.4. 不可达的对象并非 “非死不可”2.5. 如何判断一个常量是废弃常量?2.6. 如何判断一个类是无用的类3. 垃圾收集算法3.1. 标记-清除算法3.2. 标记-复制算法3.3. 标记-整理算法3.4. 分代收集算法4. 垃圾收原创 2021-03-28 16:59:57 · 190 阅读 · 0 评论 -
爆肝整理-Java内存区域
文章目录1. 概述2. 运行时数据区域2.1. 程序计数器2.2. Java 虚拟机栈2.3. 本地方法栈2.4. 堆2.5. 方法区2.5.1. 方法区和永久代的关系2.5.2. 常用参数2.5.3. 为什么要将永久代(PermGen)替换为元空间(Metaspace)呢?2.6. 运行时常量池2.7. 直接内存3. HotSpot 虚拟机对象探秘3.1.对象的创建3.2. 对象的内存布局3.3. 对象的访问定位4. 重点补充内容4.1. String 类和常量池4.2 String s1 = new S原创 2021-03-25 21:44:07 · 248 阅读 · 0 评论 -
Java多线程进阶面试-Atomic 原子类
1.介绍一下 Atomic 原子类Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子 / 原子操作特征的类。并发包 java.util.concurrent 的原子类都存放在 java.util.concurrent.atomic 下,如下图所示:2. JUC 包中的原子类是哪4原创 2021-03-25 10:40:10 · 811 阅读 · 1 评论 -
Java多线程进阶面试-ThreadLocal
1. ThreadLocal 简介通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想要实现每一个线程都有自己的专属本地变量该如何解决呢? JDK 中提供的 ThreadLocal 类正是为了解决这样的问题。 ThreadLocal 类主要解决的是让每个线程绑定自己的值,可以将 ThreadLocal 类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。如果你创建了一个 ThreadLocal 变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是 ThreadLoc原创 2021-03-24 22:00:42 · 262 阅读 · 0 评论 -
Java多线程进阶面试-volatile 关键字
我们要先从 CPU缓存模型 说起。1. CPU缓存模型为什么要弄一个CPU 高速缓存呢?类似我们开发网站后台系统使用的缓存(比如redis)是为了解决程序处理速度和访问常规关系数据库速度不对等的问题。CPU缓存 则是为了解决CPU 处理速度和内存处理速度不对等问题。我们甚至可以把 内存看作外存的高速缓存 ,程序运行的时候,我们把外存的数据复制到内存,由于内存的处理速度远远高于外存,这样提高了处理速度。总结: CPU Cache 缓存的是内存数据用于解决CPU处理速度和内存不匹配的问题,内存缓存的原创 2021-03-24 21:13:26 · 178 阅读 · 0 评论 -
Java多线程进阶面试-synchronized关键字
文章目录1. 说一说对synchronized的了解2. 说一下如何使用synchronized 关键字的3. 代码讲解,双重校验锁实现对象实例(保证线程安全)4. 构造方法可以使用synchronized关键字修饰吗?5. 讲一下synchronized 关键字的底层原理5.1. synchronized 同步代码块的情况5.2. synchronized 修饰方法的情况5.3. 总结6. 谈谈 synchronized 和 ReentrantLock 的区别6.1. 两者都是可重入锁6.2.synchr原创 2021-03-24 19:28:25 · 559 阅读 · 4 评论 -
面试必问——MySql的联合索引以及索引失效情况
导语面试的时候总会遇到面试官问MySql索引的问题,而且一般都会问到关于索引失效的情况,哪种查询会使用索引,哪种查询不会走索引。本人之前面试也会遇到这样的问题,但是总感觉不够全面,今天我就把关于MySql的相关索引使用场景总结一下。基础概念索引: 索引是对表中的一列或者多列的数据进行排序的物理结构。联合索引: 两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。测试前准备MySql数据库版本5.7.29 MySQL Community Server (GPL)建表语句CREATE原创 2020-05-15 16:15:58 · 3044 阅读 · 0 评论 -
Java面试——SpringMvc 相关
Java面试——SpringMvc 相关SpringMVC工作流程:用户发送请求至前端控制器DispatcherServletDispatcherServlet收到请求调用HandlerMapping,解析请求对应的Handler。通过HandlerMapping得到HandlerAdapter,调用真正的处理器处理请求,和相应业务逻辑。调用handle()方法返回ModelAndV...原创 2019-10-19 19:20:31 · 211 阅读 · 0 评论 -
Java面试——MyBatis 相关
Java面试——MyBatis 相关MyBatis原理1,MyBatis 是一个被广泛应用的持久化框架。先创建会话工厂,然后从会话工厂中打开会话2,通过 class 类型和配置生成 Mapper 接口的代理实现,最后使用 Mapper 进行持久化操作。3,SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession 和 Mapper 几个方面...原创 2019-10-19 19:14:58 · 311 阅读 · 0 评论 -
Java面试——Redis 相关
Java面试——Redis 相关1,redis的介绍:redis是一个非关系型数据库,NoSqlredis是一个内存型数据库,把数据存储在内存上,自动持久化。redis支持集群环境,可以管理集群环境下的sessionredis通过key-value的形式存储数据库。2,redis的常用的存储数据类型:string,hash,set,zset,list3,redis的缓存...原创 2019-10-19 19:05:04 · 448 阅读 · 0 评论 -
Java面试——Spring 相关
Java面试——Spring 相关1,Spring的介绍:IOC和AOP:IOC:控制反转,把创建对象的权力交给Spring容器来管理。底层依赖的是DI,也就是依赖注入。依赖注入有分为:设值注入(也就是set注入),构造注入,和自动注入。AOP: 面向切面编程。AOP主要可以应用在事务,日志,安全等方面。AOP代理,默认使用标准的JDK动态代理,如果业务对象没有实现接口,则默认使...原创 2019-10-19 18:54:53 · 242 阅读 · 0 评论 -
Java面试——Spring Cloud 相关
Java面试——Spring Cloud 相关1,什么是微服务?以前的模式是所有的代码都在同一个工程中,部署在同一个服务器中,同一个项目中的不同模块、不同功能相互抢夺资源。微服务将工程根据不同的业务规则拆分成微服务,微服务部署在不同的机器上,服务之间项目调用。Java的微服务的框架有dubbo,springcloud。2,SpringCloud 介绍:Spring cloud...原创 2019-10-19 18:44:38 · 288 阅读 · 0 评论 -
Java面试——SpringBoot相关
Java面试——SpringBoot相关1,什么是SpringBoot?Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。2,spring boot的优点?独立运行,简化配置,自动配置,无代码的生成和xml配置,应用监控,上手容易3,spring ...原创 2019-10-19 18:35:42 · 283 阅读 · 0 评论 -
Java面试——mysql数据库相关
Java面试——mysql数据库相关1,数据库隔离级别:隔离级别隔离级别的值导致的问题Read-Uncommited导致脏读Read-Commited1避免脏读,允许不可重复读和幻读Repeatable-Read2避免脏读、不可重复读,允许幻读Serializable3串行化读,事务只能一个一个执行,避免了脏读、不可重复读、幻读,执行效率...原创 2019-10-19 18:30:25 · 193 阅读 · 0 评论 -
Java面试题——多线程
Java面试题——多线程1,什么是线程池?线程池是多线程的一种处理方式,处理过程中将任务提交给线程池,任务执行交给线程池管理。如果每个请求都创建一个线程,那么服务器资源很快会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个线程。2,为什么用线程池?创建销毁线程花销很大,时间可能超过处理业务时间。频繁创建销毁消耗系统资源时间,可以减少这个步...原创 2019-10-19 18:12:10 · 324 阅读 · 0 评论