![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面试题
文章平均质量分 93
后端漫漫
学习就是摸透规律的过程,这个过程讲究精益求精。
展开
-
【Java Redis基本问题】记录面试题宝典中自己不熟悉的Redis问题
如果被标识的是主节点,它就会与其他的哨兵节点进行协商,当多数哨兵节点都认为主节点不可达时,它们便会选举出一个哨兵节点来完成自动故障转移的工作,同时还会将这个变化实时地通知给应用方。所以,说Redis是单线程的只是一种习惯的说法,事实上它的底层不是单线程的。但是,它的锁早已自动释放过了,它此时释放的可能是其他线程的锁。在主从复制的基础上,哨兵引入主节点的自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。原创 2023-03-21 21:30:29 · 329 阅读 · 0 评论 -
【Java MyBatis基本问题】记录面试题宝典中自己不熟悉的MyBatis问题
MyBatis的事务问题:CRUD需要提交事务!可以通过手动提交和自动提交完成:手动提交:sqlSession.commit();自动提交:sqlSessionFactory.openSession(true);属性名和字段名不一致:通过ReslutMap但是MyBatis-plus底层会去识别数据库字段,然后遇到下划线就会转化为下一个字母的大写,也就是驼峰命名转化。-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->原创 2023-03-16 22:40:03 · 87 阅读 · 0 评论 -
【Java Spring基本问题】记录面试题宝典中自己不熟悉的Spring问题
参考文章1. 定义Spring Bean的三种方式XML文件定义Spring BeanJavaConfig定义Spring Bean@Component注解定义SpringBean2. 装配Spring Bean的四种方式手动装配 + XML文件自动装配 + XML文件手动装配 + JavaConfig文件自动装配 + 注解。原创 2023-03-21 09:21:22 · 985 阅读 · 0 评论 -
【Java SpringBoot基本问题】记录面试题宝典中自己不熟悉的SpringBoot问题
举例来说,你打算把这个阅读列表应用程序做成一个Web应用程序。与其向项目的构建文件里添加一堆单独的库依赖,还不如声明这是一个Web应用程序来得简单。你只要添加Spring Boot的Web起步依赖就好了。Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。Maven引入的每个Jar都有META-IF/spring.factories,里面包含了不同版本的类。原创 2023-03-20 23:29:01 · 94 阅读 · 0 评论 -
【Java JVM基本问题】记录面试题宝典中自己不熟悉的JVM问题
上述3个处理过程里,执行插入式注解时又可能会产生新的符号,如果有新的符号产生,就必须转回到之前的解析、填充符号表的过程中重新处理这些新符号,从总体来看,三者之间的关系与交互顺序如图所示。执行类构造器 < clinit >() 方法的过程,< clinit >() 并不是程序员在Java代码中直接编写的方法,它是Javac编译器的自动生成物。缺点:内存使用率不高,只有原来的一半。大多数的Java应用不需要进行JVM优化,并且JVM优化是最后不得已的手段,也可以说是对服务器配置的最后一次“压榨”。原创 2023-03-20 20:28:40 · 256 阅读 · 0 评论 -
【Java I/O流 基本问题】记录面试题宝典中自己不熟悉的Java I/O流
当向buffer写入数据时,buffer会记录下写了多少数据,一旦要读取数据,需要通过flip()方法将Buffer从写模式切换到读模式,在读模式下可以读取之前写入到buffer的所有数据,一旦读完了所有的数据,就需要清空缓冲区,让它可以再次被写入。由于read.txt文件中内容为abcde,而错误数据d,是由于最后一次读取时,只读取一个字节e,数组中,上次读取的数据没有被完全替换【注意是替换,看下图】,所以要通过len ,获取有效的字节。创建缓冲流对象时,会创建一个内置的默认8kb的缓冲区数组。原创 2023-03-20 10:33:06 · 230 阅读 · 0 评论 -
【Java集合基本问题】记录面试题宝典中自己不熟悉的Java集合
LinkedHashMap需要维护元素的插入顺序,因此性能略低于HashMap的性能。但因为它以链表来维护内部顺序,所以在迭代访问Map里的全部元素时将有较好的性能。“数组+链表+红黑树”,当链表结点大于8会转为红黑树,当红黑树结点小于6会转为链表。HashMap在并发执行put操作时,可能会导致形成循环链表,从而引起死循环。ConcurrentHashMap:线程安全、性能中。Hashtable:线程安全、性能低。HashMap:线程不安全、性能高。1. Map数据结构。原创 2023-03-20 01:17:14 · 105 阅读 · 0 评论 -
【Java语法基本问题】记录面试题宝典中自己不熟悉的Java语法
比如,所有的引用类型的变量都继承于Object类,都可以当做Object类型的变量使用,但基本数据类型却不可以。因为Java设计者不知道程序员会将什么类型的数据放入集合中,Java引入了“参数化类型”的概念,即泛型(Generic)允许程序在创建集合时指定集合元素的类型。String对象的不可变性,导致每次修改值都要创建新的对象,性能肯定就很慢,没有的对象还要GC来清除,性能就更低了。显然,采用new的方式会多创建一个对象出来,会占用更多的内存,所以一般建议使用直接量的方式创建字符串。原创 2023-03-20 00:51:28 · 119 阅读 · 0 评论 -
【MySQL之MySQL底层分析篇】系统学习MySQL,从应用SQL语法到底层知识讲解,这将是你见过最完成的知识体系
事务在从数据库中取数据时,会将该数据的版本也取出来(v1),当事务对数据变动完毕想要将其更新到表中时,会将之前取出的版本v1与数据中最新的版本v2相对比,如果v1=v2,那么说明在数据变动期间,没有其他事务对数据进行修改,此时,就允许事务对表中的数据进行修改,并且修改时version会加1,以此来表明数据已被变动。同时把每个组最后一个行在页中的地址,按照主键从小到大的顺序记录到页中,这个区域叫做页目录,页目录的每一个位置称为一个槽,每个槽对应一个分组。当然,部分场景下,用户输入的参数会比较复杂。原创 2023-03-19 10:30:41 · 260 阅读 · 0 评论 -
面试必问:Java中String类型为什么是不可变的?
String对象为什么不能改变,顾名思义,就是String对象的值不能改变。我们先来看看String的值是如何存储的,再看看为什么不能改变存储的值。String对象的不可变性,导致每次修改值都要创建新的对象,性能肯定就很慢,没有的对象还要GC来清除,性能就更低了。StringBuilder对象也可以改变值,但是这家伙为了追求性能,连同步都不要了,所以是线程不安全的。面试的时候我们只是解释上面的原因其实不是那么尽善尽美,想要更好的去加薪去装逼,我们还需更进一步回答。我觉得你是多虑了,String a引用了。原创 2023-03-01 16:42:53 · 4399 阅读 · 2 评论 -
【MySQL之SQL语法篇】系统学习MySQL,从应用SQL语法到底层知识讲解,这将是你见过最完成的知识体系
创建# 创建数据库,判断不存在,再创建: create database if not exists 数据库名称;# 创建数据库,并指定字符集 create database 数据库名称 character set 字符集名;查询* 查询所有数据库的名称: show databases;* 查询某个数据库的字符集:查询某个数据库的创建语句 show create database 数据库名称;修改* 修改数据库的字符集 alter database 数据库名称 character set 字符集名称;原创 2023-02-28 14:50:40 · 536 阅读 · 0 评论 -
【Java Spring整体学习】整理Spring知识点
基本类型注册@Datasetter方法注入:property的name属性,填写的不是属性的名称,而是set方法去除set,然后将第一个字符小写后的结果--1. 普通注入--> < property name = " name " value = " 狂神说 " />原创 2023-02-27 16:55:38 · 1970 阅读 · 0 评论 -
死磕Spring系列,SpringBoot启动流程
【代码】死磕Spring系列,SpringBoot启动流程。原创 2023-02-24 23:22:35 · 558 阅读 · 0 评论 -
全面讲解什么是Java8新特性,内附大量实例,认真阅读,没有难点!
函数式接口:只包含一个抽象方法的接口,称为函数式接口,并且可以使用lambda表达式来创建该接口的对象,可以在任意函数式接口上使用@FunctionalInterface注解,来检测它是否是符合函数式接口。注:通过 default 关键字这个新特性,可以非常方便地对之前的接口做拓展,而此接口的实现类不必做任何改动,减少了耦合性。Java8以前的版本使用注解有一个限制是相同的注解在同一位置只能使用一次,不能使用多次。实际上,重复注解不是一个语言上的改变,只是编译器层面的改动,技术层面仍然是一样的。原创 2023-02-18 21:26:53 · 1431 阅读 · 0 评论 -
@注解讲解,并学会自己定义注解
在使用Spring Boot的时候,大量使用注解的语法去替代XML配置文件,十分好用。然而,在使用注解的时候只知道使用,却不知道原理。直到需要用到自定义注解的时候,才发现对注解原理一无所知,所以要学习一下。使用@interface关键字来自定义注解时,自动继承java.lang.annotation.Annotation接口(隐式继承),由编译程序自动完成其它细节。在定义注解时,不能显式继承其它的注解或接口。@interface关键字用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。原创 2023-02-18 20:50:15 · 372 阅读 · 0 评论 -
JAVA时间类及JAVA8新时间类
java.text.DateFormat时间格式转换1. 该类方法如下2. 示例3. SimpleDateFormat正确使用java.util.Calendar总结Java时间类Java8新时间类InstantClockLocalDateLocalTimeLocalDateTime时区篇首先介绍:LocalDateTime、OffsetDateTime 和 ZoneDateTime 之间的关系,且与 ZoneOffset(偏移量)和 ZoneId(时区)原创 2023-02-18 15:21:48 · 773 阅读 · 0 评论 -
动态规划,这将是你见过最详细的讲解
动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。以上定义来自维基百科,看定义感觉还是有点抽象。简单来说,动态规划其实就是,给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后呢,把子问题答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法。原创 2023-02-13 18:17:28 · 1645 阅读 · 0 评论 -
监听器、过滤器、拦截器,参考多篇文章整合而成,没有千篇一律的抽象回答!
Component //注意当前类必须受Spring容器控制 //定义拦截器类,实现HandlerInterceptor接口 public class MyInterceptor implements HandlerInterceptor {原创 2023-01-28 02:38:33 · 972 阅读 · 0 评论