
JAVA面试
Rock_wj
海内存知己,天涯若比邻。
展开
-
JVM-内存模型
运行时数据区域程序计数器:线程私有;记录指令执行的位置;这里不会出现OutOfMemoryError虚拟机栈:线程私有;生命周期和线程一致;存储局部变量表、操作数栈、动态链接、方法出口等信息。(局部变量表:存放了编译期可知的各种基本类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference 类型)和 returnAddr...转载 2019-12-25 03:04:23 · 161 阅读 · 0 评论 -
RabbitMQ的六种工作模式
RabbitMQ的六种工作模式一.基于erlang语言: 是一种支持高并发的语言RabbitMQ的六种工作模式:1.1 simple简单模式消息产生着§将消息放入队列消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一...转载 2019-12-16 03:28:56 · 244 阅读 · 0 评论 -
过滤器和拦截器的区别
过滤器和拦截器的区别:①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被...转载 2019-12-15 03:38:31 · 1063 阅读 · 0 评论 -
值传递和引用传递的区别
#值传递: 只要是基本类型传递 都是值传递#引用传递:针对于基本类型进行封装,对封装进行传递,是引用传递#代码:值传递(int类型) public class Test { public static void main(String[] args) { int int1 = 10; int int2 = int1; System....转载 2019-12-05 23:01:01 · 165 阅读 · 0 评论 -
JVM
1、说一下jvm的主要组成部分?及其作用?类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地接口(Native Interface)组件的作用:首先通过类加载器(ClassLoader)会把Java代码转换成子节码,运行时数据区(Runtime Data Area)再把子节码加载到内存中,而子节码文件只...转载 2019-12-05 22:27:43 · 187 阅读 · 0 评论 -
Redis
1、redis 是什么?都有哪些使用场景?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 使用场景:数据高并发的读写海量数据的读写对扩展性要求高的数据2、redis 有哪些功能?数据缓存功能分布式锁的功能支持数据持久化支持事务支持消息队列3、redis 和 memecach...转载 2019-12-05 21:49:56 · 154 阅读 · 0 评论 -
MySql
1、数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项第二范式:要求实体的属性完全依赖于主关键字,所谓完全依赖是指不能存在仅依赖主关键字一部分的属性第三范式:任何非主属性不依赖于其它非主属性2、一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?表类型如果是 MyISAM ...转载 2019-12-05 21:36:31 · 212 阅读 · 0 评论 -
Kafka/Zookeeper
Kafka1、kafka 可以脱离 zookeeper 单独使用吗?为什么?kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。2、kafka 有几种数据保留的策略?kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。3、kafka 同时设置了 7 天和 10G 清除数据,到第五天的时...转载 2019-12-05 21:00:33 · 594 阅读 · 0 评论 -
RabbitMQ
1、rabbitmq的使用场景有哪些?(1)跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。(2)多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数的调用,因此更适合作为多个应用之间的松耦合的接口。基于消息队列 的耦合,不需要发送方和接收方同时在线。在企业应用集成(EAI)中,文件传...转载 2019-12-05 19:58:53 · 201 阅读 · 0 评论 -
Mybatis
1、mybatis 中 #{}和 ${}的区别是什么?#{}是预编译处理,KaTeX parse error: Expected ‘EOF’, got ‘#’ at position 21: …串替换; Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值;使用#{}可以有效的防止SQL注入,提高系统安全性。2、mybatis 有几种分页方式?数组分页...转载 2019-12-05 19:10:11 · 167 阅读 · 0 评论 -
Hibernate
1、为什么要使用 hibernate?对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据...转载 2019-12-05 18:21:28 · 170 阅读 · 0 评论 -
Spring Boot / Spring Cloud
1、什么是springboot?在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是一种思想,在操作方面是指在spring配置文件中创建,依赖注入即为由spring容器为应用程序的某个对象提供资源,比如 引用对象、常量数据等。SpringBoot是一个框...转载 2019-12-05 15:18:02 · 189 阅读 · 0 评论 -
Java面试(Spring专题一)
1、简单工厂和抽象工厂有什么区别?简单工厂模式: 这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。它由三种角色组成:工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品。如例子中的Driver类。抽象产品角色:它一般是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现...转载 2019-12-05 14:52:53 · 310 阅读 · 0 评论 -
Java你熟悉的设计模式
1、说一下你熟悉的设计模式?单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取他们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来很容易,直接看demo:懒汉式(线程不安全)public clas...转载 2019-12-05 11:27:43 · 2498 阅读 · 0 评论 -
Java面试(网络)
1、http 响应码 301 和 302 代表的是什么?有什么区别? 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移。区别:301 redirect: 301 代表永久性转移(Permanently Moved)。302 redirect: 302 代表暂时性转移(Temporarily Moved )。2、forward 和 redirect 的区别?...转载 2019-12-05 00:20:00 · 257 阅读 · 0 评论 -
Java异常
1、throw 和 throws 的区别? throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。2、final、finally、finalize 有什么区别?final可以修饰类、变量、方法、修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量...转载 2019-12-04 22:53:06 · 136 阅读 · 0 评论 -
JavaWeb基础(一)
1、jsp 和 servlet 有什么区别?(1)jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)(2)jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对...转载 2019-12-04 00:29:59 · 147 阅读 · 0 评论 -
java面试(对象拷贝)
1、为什么要使用克隆? 想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆了,Java语言中克隆针对的是类的实例。2、如何实现对象克隆?有两种方式:实现Cloneable接口并重写Object类中的clone()方法;实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆,代码如下:import java.io.ByteA...转载 2019-12-04 00:08:24 · 203 阅读 · 0 评论 -
java面试(反射)
1、什么是反射? 反射主要指程序可以访问、检测和修改它本身状态的一种能力Java反射:在java运行时环境中,对于任何一个类,能否知道这个类有哪些属性和方法?对于任何一个对象,能否调用它的任意一个方法Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法2、...转载 2019-12-03 19:22:10 · 448 阅读 · 0 评论 -
java面试(多线程)
1、并行和并发有什么区别?并行是指两个或多个事件同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。并行是在不同实体上的多个事件;并发是在同个实体上的多个事件。在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群。所有并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。2、线程和进程的区别? 守护线程(即d...转载 2019-12-03 18:22:23 · 148 阅读 · 0 评论 -
java面试(集合)
1、java容器有哪些? 常用容器的图录: 2、Collection和Collections有什么区别?java.util.Collection是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在JAVA类库中有很多具体实现。Collection接口的意义是为各种具体的集合提供了最大化的统一的操作方式,其直接继承的接口有L...转载 2019-12-03 13:19:37 · 238 阅读 · 0 评论 -
java基础面试(一)
1、JDK和JRE有什么区别?JDK:Java Development Kit简称,java开发工具包,提供了java的开发环境和运行环境。JRE:Java Runtime Environment的简称,java运行环境,为java的运行提供了所需的环境。2、 两个对象的hashCode()相同,则equals()也一定为true,对吗? 不对,两个对象的hashCode(...转载 2019-12-03 01:05:15 · 118 阅读 · 0 评论