![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试必备(背)
爱学习的老吴
学无止境
展开
-
关于面试官问的object的常用方法和SQL优化--问题总结
1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。2.getClass方法final方法,获得运行时类型。3.toString方法该方法用得比较多,一般子类都有覆盖。4.finalize方法该方法用于释放资源。因为无法确定该方法什么原创 2020-06-17 13:36:48 · 236 阅读 · 0 评论 -
关于面试官问的死锁和线程之间通信----问题总结
1.死锁问题产生?解决方法?死锁,指的是多个线程在运行过程中因争夺资源而造成的一种僵局,当线程处于这种僵持状态时,若无外力作用,他们都将无法再向前推进。举例:此时有一个线程A,按照先锁a再获得锁b的顺序获得锁,而在此时同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。产生死锁的原因:1. 竞争资源产生死锁中的竞争资源之一指的是竞争不可剥夺资源和临时资源2.进程间推进顺序非法若P1保持了资源R1,P2保持了资源R2,系统处于不安全状态,因为这两个线程再向前推进,便可能发生死锁例如,当P1运原创 2020-06-17 13:18:16 · 278 阅读 · 0 评论 -
Java序列化和反序列化为什么要实现Serializable接口
序列化序列化和反序列化是什么?实现序列化和反序列化为什么要实现Serializable接口?实现Serializable接口就算了, 为什么还要显示指定serialVersionUID的值?序列化和反序列化是什么?序列化:把对象转换为字节序列的过程称为对象的序列化.反序列化:把字节序列恢复为对象的过程称为对象的反序列化.实现序列化和反序列化为什么要实现Serializable接口?当我们只在本地JVM里运行下Java实例, 这个时候是不需要什么序列化和反序列化的, 但当我们需要将内存中的对象持久化原创 2020-05-18 13:14:00 · 546 阅读 · 0 评论 -
震惊!!!原来HashMap的底层实现原理竟然是。。。?
HashMap在jdk1.7之前的底层用的是数组+链表的形式;在1.8之后的底层用的是数组+链表+红黑树的形式。下面,我们来一步一步分析。HashMap map = new HashMap()在实例化后,底层创建了长度是16的一维数组Entry[] table.…可能已经执行过多次put…map.put(key1,value1);1.首先调用key1所在类的hashCode()计算key1哈希值,此哈希值经过某种算法计算以后,得到在Entry数组中的存放位置。(由于哈希值比较大,不能作为数组原创 2020-05-09 15:45:41 · 1389 阅读 · 0 评论 -
spring 中的事务
Spring中七种事务传播行为1.PROPAGATION_REQUIRED – 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。2.PROPAGATION_SUPPORTS – 支持当前事务,如果当前没有事务,就以非事务方式执行。3.PROPAGATION_MANDATORY – 支持当前事务,如果当前没有事务,就抛出异常。4.PROPAGATION_REQUIRES_NEW – 新建事务,如果当前存在事务,把当前事务挂起。5.PROPAGATION_NOT_SUPPORTED原创 2020-05-09 10:25:59 · 266 阅读 · 0 评论 -
啥是那个MQ----RabbitMQ和AcitveMQ
1. RabbitMQ:RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系 统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦, 消息的发送者无需知道消息使用者的存在,反之亦然.RabbitMQ 本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适...原创 2020-05-07 11:02:44 · 427 阅读 · 0 评论 -
啥是那个Mybatis--Mybatis框架介绍
1.mybatis用来干什么2.mybatis是什么原创 2020-05-07 10:55:04 · 299 阅读 · 0 评论 -
啥是那个spring----spring框架介绍(三)
11.介绍一下Spring AOP里面的几个名词切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。在SpringAOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或...原创 2020-05-07 10:03:59 · 197 阅读 · 0 评论 -
啥是那个spring----spring框架介绍(二)
7.谈谈spring的事务管理spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象.声明式使用TransactionProxyFactoryBean:PROPAGATION_RE...原创 2020-05-07 09:54:24 · 136 阅读 · 0 评论 -
啥是那个spring----spring框架介绍(一)
1.谈谈你对Spring的理解概念:Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。Spring也是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。特点:① Spring实现了工厂模式...原创 2020-05-07 09:45:40 · 195 阅读 · 0 评论 -
面试---SpringMVC的执行流程是什么?请简单阐述一下。
1、用户发送请求至前端控制器DispatcherServlet2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、DispatcherServlet调用HandlerAdapter处理器适配器5、HandlerAdapter...原创 2020-05-06 11:47:52 · 277 阅读 · 0 评论 -
解决多线程安全问题的几种方式?
(1)同步代码块:在代码块声明上 加上synchronizedsynchronized (锁对象) {可能会产生线程安全问题的代码}同步代码块中的锁对象可以是任意的对象;但多个线程时,要使用同一个锁对象才能够保证线程安全。(2)同步方法:在方法声明上加上synchronizedpublic synchronized void method(){可能会产生线程安全问题的代码}同...原创 2020-05-06 11:38:21 · 1248 阅读 · 1 评论 -
面试官,你继续问啊!!!---通配符的区别
List<? extends T>和List<? super T>之间有什么区别,并给出使用场景?两者同为Java泛型的通配符,其中的extends 和 super 两个关键字分别可以解释为 一父多子、一子一父。区别:List<? extends T>描述了通配符上界,即参数化的类型必须是T类型或它的子类。List<? super T>描述了...原创 2020-05-06 11:20:43 · 245 阅读 · 0 评论 -
面试官,你继续问啊!!!---如何能使 JVM的堆、栈发生内存溢出,并给出实例代码?
堆中主要存储的是对象,所以一直不断的创建对象则会导致堆中的内存溢出。栈中主要存储的每个方法执行时创建的栈帧,所以方法的递归调用会导致栈内存溢出。下列给出两种内存溢出的实例代码: /** 堆内存溢出 */ public class HeapOutOfMemory { public static void main(String[] args) { List list ...原创 2020-04-30 17:03:31 · 252 阅读 · 0 评论 -
ArrayList和LinkedList的底层实现原理
1.ArrayListArrayList 通过数组实现,一旦我们实例化 ArrayList 无参数构造函数默认为数组初始化长度为 10②,add 方法底层实现如果增加的元素个数超过了 10 个,那么 ArrayList 底层会新生成一个数组,长度为原数组的 1.5 倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。是一旦...原创 2020-04-29 13:58:29 · 2764 阅读 · 0 评论 -
面试官,别再问我了---线程和synchronized
1.start()和run()方法区别?start()方法开启线程,无需等待run方法体代码执行完毕而直接执行下面的代码.run()方法是线程体,包含了要执行的这个线程的内容,run()方法运行结束,此线程随即终止.如果直接调用run方法,程序中依然只有主线程这一个线程.2.synchronized与lock的区别?synchronized是java的关键字,在jvm层面上,lock是一个...原创 2020-04-29 13:21:26 · 219 阅读 · 0 评论 -
面试官,别再问我了---stringbuffer和stringbuild区别
stringbuffer和stringbuild区别1、StringBuffer 与 StringBuilder 是长度可变得。2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备...原创 2020-04-13 15:44:24 · 260 阅读 · 0 评论 -
面试官,别再问我了---Session和Cookie
session原理:1、session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大2、浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器3、浏览器在第二次访问服务器的时候携带Cookie信息JSESSIONID=ID的值,如果该JSE...转载 2020-04-26 09:30:11 · 136 阅读 · 0 评论 -
面试官,别再问我了---抽象类和接口的区别
1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为publi...原创 2020-04-29 13:13:35 · 155 阅读 · 0 评论