自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

早起的虫子jj

java面试总结

  • 博客(24)
  • 收藏
  • 关注

原创 java定时任务

java定时任务原理

2022-08-06 19:46:51 194 1

原创 线程池的关闭

1.线程中断当我们调用线程的interrupt方法,它有两个作用:如果此线程处于阻塞状态(比如调用了wait方法,io等待),则会立马退出阻塞,并抛出InterruptedException异常,线程就可以通过捕获InterruptedException来做一定的处理,然后让线程退出。如果此线程正处于运行之中,则线程不受任何影响,继续运行,仅仅是线程的中断标记被设置为true。所以线程要在适当的位置通过调用isInterrupted方法来查看自己是否被中断,并做退出操作。注:如果线

2021-10-21 10:46:02 4210

原创 java面试之plus

1.观察者模式和发布订阅模式1.区别前者:观察者订阅主题,主题也维护观察者的记录,而后者:发布者和订阅者不需要彼此了解,而是在消息队列或代理的帮助下通信,实现松耦合。前者主要以同步方式实现,即某个事件发生时,由Subject调用所有Observers的对应方法,后者则主要使用消息队列异步实现。2.延迟消费2.1 redis zset实现将延迟的消息任务通过 hash 算法路由至不同的 Redis Key 上,这样做有两大好处:a. 避免了当一个 KEY 在存储了较多的延时消息后,入

2021-09-09 22:25:23 170

原创 Java面试之Mysql

1.mysql事务是怎么实现的?2.mysql幻读怎么解决?3.innodb和myisam区别?4.索引原理?5.聚簇索引6.怎么解决幻读问题7.mvcc8.读多写少用啥锁,写多读少呢9.你知道的索引,区别,分别什么时候用,针对B+索引和hash索引10. 最左前缀则?11. 男女字段可以建立索引吗?status呢?12. B树和B+树的区别?减少IO次数?11.数据库死锁是怎么产生的?12.mysql回表问题13.innodb页结构14.mysql中的log(undolog)

2021-09-09 22:24:48 341

原创 java面试之常见场景题

首先将整个文件分成许多份,比如说m份,划分的依据就是使得每一份的大小都能放到内存里。然后我们用快速排序或者堆排序等方法对每一份数据进行一个内部排序,变成有序子串。取这m份数据的最小元素,进行排序,输出排序后最小的元素到结果中,同时从该元素所在子串中读入一个元素,直到所有数据都被输出到结果中为止。优化2:在一次分割结束后,可以把与Key相等的元素聚在一起,继续下次分割时,不用再对与key相等元素分割。优化1:当待排序序列的长度分割到一定大小后,使用插入排序。优化3:优化递归操作。

2021-09-03 10:00:00 11315 1

原创 java面试之消息队列

1.消息队列的好处解耦耦合的状态表示当你实现某个功能的时候,是直接接入当前接口,而利用消息队列,可以将相应的消息发送到消息队列,这样的话,如果接口出了问题,将不会影响到当前的功能。削峰高流量的时候,使用消息队列作为中间件可以将流量的高峰保存在消息队列中,从而防止了系统的高请求,减轻服务器的请求处理压力。异步异步处理替代了之前的同步处理,异步处理不需要让流程走完就返回结果,可以将消息发送到消息队列中,然后返回结果,剩下让其他业务处理接口从消息队列中拉取消费处理即可。2.模型Consume

2021-08-29 19:00:18 166

原创 详解Java代理

详解Java代理由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。1.静态代理在源码阶段我们手动的写个代理类将目标类给包装起来举个例子:如果要买火车票的话,需要去火车站买票,坐车到火车站,排队等一系列的操作,显然比较麻烦

2021-08-25 23:57:33 118

原创 Java面试之Mybatis

1.工作原理(1)SqlSessionFactoryBuilder().build(inputStream):这行代码解析mybatis.xml文件,解析mapper节点。mapper也就是我们定义的如UserMapper.xml这种文件,将其解析成一个mapperStatement中,然后存放在Configraution这个对象中,这个对象又是sqlSessionFactory中的一个属性。(2)sqlSessionFactory.openSession():开启一个会话,用来执行sql。(3)s.

2021-08-15 20:40:35 125

原创 Java面试之Redis

Redis知识点总结一、如何保证缓存数据库双写一致性?参考:https://blog.csdn.net/hukaijun/article/details/81010475?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162191277916780265499764%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_

2021-08-08 23:11:14 241

原创 Java面试之高并发

Java并发编程面试知识点总结1.进程和线程的区别?2.进程间通信?3.多线程的实现方式?4.java锁的种类?公平锁/非公平锁;可重入锁;互斥锁/读写锁;乐观锁/悲观锁;5.线程的同步方式?6.volatile和synchronized关键字的原理7.ConcourrentHashMap怎么保证线程安全8.怎么保证线程安全?首先应该避免全局变量,采用局部变量。如果非要使用的话,可以采用final类型,或者使用ThreadLocal;对于单个变量共享的话,可以采用volatile关键字

2021-08-08 09:58:17 1363

原创 Java面试之Linux指令

ls、cd、touch 创建普通文件、rm 删除、mkdir 新建目录、mv 移动、cp 拷贝、chmod 修改权限rm -rf /bbb 强制删除/目录下的bbb目录。如果bbb目录中还有子目录,也会被强制删除,不会提示;touch testFile 创建文件list mkdir cd cp mv rm等等查看日志:tail(从尾查看) -n(行数) -f(实时动态) 文件名 也可以通过管道命令结合grep来进行日志的过滤级别。head从前向后看,和tail相反grep under

2021-07-19 23:23:29 210

原创 Java面试之操作系统

1.进程和线程1.1 区别线程是操作系统进行资源分配和调度的一个基本单位。进程中可以包含多个线程。多个线程共享进程的堆和方法区资源,但每个线程又有属于自己的本地方法栈、虚拟机栈、程序计数器线程是进程一个实体,是 cpu 调度和分派的基本单位,是比进程更小的可以独立运行的基本单位。线程间可能存在相互影响,执行开销较小,不利于资源的管理和保护,线程间是共享进程中的资源的1.2 应用场景多线程模型适用于 I/O 密集型场景,因为 I/O 密集型场景因为 I/O 阻塞导致频繁切换,线程只占用栈,程序计

2021-07-13 23:53:21 268

原创 Java面试之基础知识

1.equals()和hashCode()的关系?equals() 的作用是用来判断两个对象是否相等。hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。不会创建“类对应的散列表”p1和p2相等的情况下,hashCode()也不一定相等。会创建“类对应的散列表”**如果两个对象相等,那么它们的hashCode()值一定相同。**这里的相等是指,通过equals()比较两个对象时返回true。如果两个对

2021-06-15 23:17:49 883

原创 Java面试之HashMap

1.什么时候用链表?什么时候用红黑树?对于插入,默认情况下是使用链表节点。当同一个索引位置的节点在新增后达到9个(阈值8):如果此时数组长度大于等于64,则会触发链表节点转红黑树节点;而如果数组长度小于64,则不会触发链表转红黑树,而是会进行扩容,因为此时的数据量还比较小。对于移除,当同一个索引位置的节点在移除后达到 6 个,并且该索引位置的节点为红黑树节点,会触发红黑树节点转链表节点。2.为什么链表转红黑树的阈值是8?我们平时在进行方案设计时,必须考虑的两个很重要的因素是:时间和空间。对于

2021-06-09 14:58:23 482 1

原创 Java面试之计算机网络

1.说一下http协议:背景,互联网上需要传输视频、文字、图片等信息。应用层协议。请求结构、响应结构。http1.0、http1.1、http2.0,最后在到https.1.1 http1.0和1.1的区别?1)长连接。HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。2)节约带宽。HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持**断点续传**功能。HTT

2021-06-06 19:46:40 1288

原创 Java之设计模式详解

1.单例模式保证在内存中只有一个实例不管调多少次getInstance(),拿到的都只有一个实例。他是线程安全的,因为JVM保证每个类只会被加载到内存中一次

2021-06-06 18:38:57 285

原创 计算机网络学习

一、计算机网络概述1.五层协议应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。传输层:为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。网络层:为主机提供数据传输服务。而传输层协议

2021-06-03 10:56:48 323

原创 Java面试之JVM

1.谈谈双亲委派是啥?有啥好的?向上委托给父类加载,父类加载不了再自己加载**避免重复加载,防止Java核心api被篡改**使得 Java 类随着它的类加载器一起具有一种带有优先级的层次关系,从而使得基础类得到统一。 例如 java.lang.Object存放在 rt.jar 中,如果编写另外一个 java.lang.Object 并放到 ClassPath中,程序可以编译通过。由于双亲委派模型的存在,所以在 rt.jar 中的 Object 比在 ClassPath 中的 Object优先级更

2021-06-02 09:43:39 190

原创 Java之锁

1.共享锁又称为读锁,可以查看但无法修改和删除的一种数据锁。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。共享锁的事务只能读数据,不能修改数据。 共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据。资源共享.2.排它锁又称为写锁、独占锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A3.互斥锁在编程中,引入了对象互斥锁的概念,来保

2021-05-31 18:24:23 94

原创 SpringBoot启动流程及原理

1.总览上图为SpringBoot启动结构图,我们发现启动流程主要分为三个部分,第一部分进行SpringApplication的初始化模块,配置一些基本的环境变量、资源、构造器、监听器,第二部分实现了应用具体的启动方案,包括启动流程的监听模块、加载配置环境模块、及核心的创建上下文环境模块,第三部分是自动化配置模块,该模块作为springboot自动配置核心2.常用注解解释任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IoC容器,方法名将默认成该bean定义的id.

2021-05-31 16:47:17 6726

原创 Synchronized和Lock的区别

Synchronized和Lock的区别这两者都是解决Java并发常见的一种方法,确保在同一时刻只能有一个线程访问某个方法或者代码块,但为什么有了Synchronized之后,还需要Lock呢?一、Synchronizedsychronized是java的内置锁,基于底层的操作系统实现,要了解底层的实现,需要明白以下知识。1.Java对象头synchronized用到的锁基于对象的对象头,对象在内存中的布局分为三块区域:对象头、实例数据、对齐填充。对象头中有着指向Moniter的指针,通过这个指针

2021-05-31 11:21:01 1001

原创 Java面试之String

1.String声明为final,不能被继承2.java8之前String底层为char,java9之后用byte[]加编码标记,根据编码方式来决定用一个字节还是小个字节来存,节约了一些空间3.String可以比较大小,是因为实现了comparable4.String代表不可变性的字符变量当对已经存在的String进行,修改,拼接,替代的时候,原有的字符串都不会发生改变,都会生成新的字符串面试题:5.字符串常量池中是不会存储相同的字符串的,底层是一个固定大小的HashTable6.Stri

2021-05-30 23:02:34 87

原创 Java面试之Spring

Spring面试题1.循环依赖的问题怎么解决?必须三级缓存吗?参考:Spring 循环依赖2.bean对象的生命周期?3.IOC是啥?解释下流程?DI呢?4.AOP的原理?5.Spring框架的优势?​ 1、Spring通过DI、AOP和消除样板式代码来简化企业级Java开发​ 2、Spring框架之外还存在一个构建在核心框架之上的庞大生态圈,它将Spring扩展到不同的领域,如Web服务、REST、移动开发以及NoSQL​ 3、低侵入式设计,代码的污染极低​ 4、独立于各种应用服

2021-05-27 16:28:06 402

原创 Leetcode刷题记录

Leetcode刷题记录一、数组序号题目笔记学习状态101 两数之和hash遍历 O(N) O(1)ok2J 56 数组中数字出现次数采用状态机来做,异或的思想,加起来对3求余数,为00 01 10,先计算低位,在计算高位,one=one异或num与two,two=two^num&one 最后返回oneok311 盛水最多的容器双指针 指向左右两边,每次移动最小的 相等移动左边ok414 最长公共前缀(1) 横向扫描,依次比较 时间

2021-05-24 23:19:09 413

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除