
Java面试题
小黑爱上排骨
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程和进程的区别?(简单介绍)
一、线程的基本概念 线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。好处 :(1)易于调度。 (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。 (3)开销少。创建线程比创建进程要快,所需开原创 2020-07-19 23:33:05 · 4790 阅读 · 0 评论 -
ArrayList 和 Vector 的区别是什么?
首先两个类都实现了List接口。他们都是有序不唯一的集合,说白了就是存储元素的位置是有序的(每一个元素都以一个对应的索引),相当于一个动态数组ArrayList和Vector的区别,主要包括两个方面同步性:Vector是线程安全的,也就是说它的方法直线是线程同步的,而ArrayList是线程不安全的,它的方法之间是线程不同步的如果只有一个线程去访问集合那么使用ArrayList,他不考虑线程安全的问题,所以效率会高一些如果是多个线程去访问集合,那么使用Vector数据增长性:ArrayLis原创 2020-07-19 16:59:12 · 11228 阅读 · 0 评论 -
String 类的常用方法都有那些?
下面列举了20个常用方法。1、和长度有关:返回类型方法名作用intlength()得到一个字符串的字符个数2、和数组有关:返回类型方法名作用byte[]getByte()将一个字符串转换成字节数组char[]toCharArray()将一个字符串转换成字符数组Stringsplit(String)将一个字符串按照指定内容劈开3、和判断有关:返回类型方法名作用booleanequals()判断原创 2020-07-19 08:43:11 · 11679 阅读 · 0 评论 -
如何将字符串反转?
1.StringBuilder的reverse()方法,最简单public static String reverse4(String s) { return new StringBuffer(s).reverse().toString();}2.使用字符串数组,实现从尾部开始逐个逆序放入字符串public static String reverse3(String s) { char[] array = s.toCharArray(); String reverse = "";原创 2020-07-19 08:39:07 · 10944 阅读 · 0 评论 -
两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
结论:两个对象equals相等,hashcode必须相等,反之则不一定。两个对象**==相等**,hashcode一定相等,反之不一定成立。hashCode 的常规协定:1.在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。2.两个对象的equals()相等,那么对这两个对象中的每个对象调用 hashCode 方原创 2020-07-19 08:01:53 · 5735 阅读 · 0 评论 -
final 在 java 中有什么作用?
final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。特征:凡是引用final关键字的地方皆不可修改!(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。相信大家都具备基本的常识: 被final修饰的变量是不能够被改变的. 但是这里的"不能够被改变"对于不同的数据类型是有不同的含义的.当final修饰的是一个基本数据类型数据时, 这个数据的值在初始化后将不能被改变; 当final修饰的是一个引原创 2020-07-19 07:50:20 · 5809 阅读 · 0 评论 -
JDK和JRE有什么区别
JDK(Java Development Kit):是Java的开发运行环境,在程序员的电脑上当然要安装JDKJRE(Java Runtime Environment):是Java运行环境,如果你不需要开发只需要运行Java程序,那么你可以安装JRE。JDK包括JRE,JRE中包括虚拟机JVMJRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员原创 2020-07-18 22:23:52 · 5292 阅读 · 0 评论 -
对Java中 “动态绑定“ 的理解
对动态绑定的理解简单来讲其实就是对方法调用的理解。 可能好多学习编程的人想:方法的调用我还不会吗?希望这篇博客能够给大家提供帮助,博客来源于Java核心技术(卷Ⅰ)弄清楚如何在对象上应用方法调用非常重要。下面假设要调用 x.f(args,) 隐式参数 x 声明为类 C 的一个对象。下面是调用过程的详细描述:编译器査看对象的声明类型和方法名。假设调用 x.f(param), 且隐式参数 x 声明为 C类的对象。需要注意的是: 有可能存在多个名字为 f, 但参数类型不一样的方法。例如,可能存在方法 .原创 2020-07-17 23:45:28 · 5405 阅读 · 0 评论 -
git:非常简单的解决git冲突
我们在开发一个项目的时候肯定会是几个人共同开发,我们必然会用到git,当然肯定会提交的时候遇到冲突。下面我就来解决一下冲突。只用简单的几条git命令。假设分支名为dev一、git pull origin dev我们在提交之前先拉取一下,养成良好的习惯。#dev是分支名,origin是指向远程提交git pull origin dev二、git status在拉取成功之后我们要查看一下状态git status如果有未提交的文件需要git add .git add . #.转载 2020-07-15 23:06:46 · 5847 阅读 · 0 评论 -
rabbitmq 的使用场景有哪些?
①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。②. 多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。基于消息队列的耦合,不需要发送方和接收方同时在线。在企业应用集成(EAI)中,文件传输,共享数据库,消息队列,远程过程调用都可以作为集成的方法。③. 应用内的同步变异步,比如订单处理,就可以由前端应用将订单信息放到队列,后端应用从队列里依原创 2020-07-11 23:53:19 · 7677 阅读 · 0 评论 -
什么是zookeeper,功能,部署模式
zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。zookeeper 都有哪些功能?集群管理:监控节点存活状态、运行请求等。主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zookeeper 可以协助完成这个过程。分布式锁:zookeeper原创 2020-07-11 23:51:58 · 5708 阅读 · 0 评论 -
说一下乐观锁和悲观锁?
乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。数据库的乐观锁需要自己实现,在表里面添加一个 version 字段,每次修改成功值加 1,这样每次修改的时候先对比一下,自己拥有的 version 和数据库现在的 version 是否一致,如果不一致就不修改,这样就实现了乐观锁。...原创 2020-07-11 23:49:47 · 6142 阅读 · 0 评论 -
TCP&UDP区别以及三次握手四次挥手
在介绍双亲委派模型之前先说下类加载器。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立在 JVM 中的唯一性,每一个类加载器,都有一个独立的类名称空间。类加载器就是根据指定全限定名称将 class 文件加载到 JVM 内存,然后再转化为 class 对象。类加载器分类:启动类加载器(Bootstrap ClassLoader),是虚拟机自身的一部分,用来加载Java_HOME/lib/目录中的,或者被 -Xbootclasspath 参数所指定的路径中并且被虚拟机识别的类库;其他类加载器:原创 2020-07-11 23:48:05 · 5757 阅读 · 0 评论 -
spring mvc 运行流程?
流程描述:用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;DispatcherServlet 根据获得的Handler,选择一个合适的Handle转载 2020-07-11 23:46:29 · 5517 阅读 · 0 评论 -
Spring IOC & AOP
AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码原创 2020-07-11 23:44:15 · 5590 阅读 · 0 评论 -
什么是MVC框架?
是为了解决传统MVC模式(Jsp + Servlet + JavaBean)的一些问题而出现的框架。传统MVC模式问题1、所有的Servlet和Servlet映射都要配置在web.xml中,如果项目太大,web.xml就太庞大,并且不能实现模块化管理。2、Servlet的主要功能就是接受参数、调用逻辑、跳转页面,比如像其他字符编码、文件上传等功能也要写在Servlet中,不能让Servlet主要功能而需要做处理一下特例。3、接受参数比较麻烦(String name = request.getPara原创 2020-07-11 09:36:46 · 7555 阅读 · 0 评论 -
jQuery的页面加载完毕事件?
很多时候我们需要获取元素,但是必须等到该元素被加载完成后才能获取。我们可以把js代码放到该元素的后面,但是这样就会造成js在我们的body中存在不好管理。所有页面加载完毕后所有的元素当然已经加载完毕。一般获取元素做操作都要在页面加载完毕后操作。第一种:$(document).ready(function(){ … });$(document)把原生的document这个dom对象转换为jQuery对象,转换完成后才能调用ready方法ready(fn),表示的是页面结构被加载完毕后执行传入函数fn第原创 2020-07-10 23:41:18 · 7551 阅读 · 0 评论 -
Spring中的两大核心都是什么?
spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架(相对于重量级的EJB),主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用。1、IOC(Inversion of Control )或DI(Dependency Injection)IOC控制权反转原来:我的Service需要调用DAO,Service就需要创建DAOSpring:Spring发现你Service依赖于dao,就给你注入.核心原理:就是配原创 2020-07-10 22:21:17 · 9305 阅读 · 1 评论 -
什么是框架?
框架(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性。IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。1)框架本身一般不完整到可以解决特定问题,但是可以帮助您快速解决特定问题;没有框架所有的工作都从零开始做,有了框架,为我们提供了一定的功能,我们就可以在框架的基础上开发,极大的解放了生产力。不同的框架,是为了解决不同领域的问题。一定要为了解决问题才去学原创 2020-07-10 20:09:34 · 5651 阅读 · 0 评论 -
bootstrap是什么?
BootStrap是一个移动设备优先的UI框架。我们可以不用写任何css,js代码就能实现比较漂亮的有交互性的页面。我们程序员对页面的编写是有硬伤的,所有要自己写页面的话就要使用类似于bootstrap这样的UI框架。平时用得很多的:1、模态框2、表单,表单项3、布局4、删格系统...原创 2020-07-10 20:08:34 · 5412 阅读 · 0 评论 -
简单说一下html5?你对现在的那些新技术有了解?
Html5是最新版本的html,是在原来html4的基础上增强了一些标签。Html增加一些像画板、声音、视频、web存储等高级功能。缺点:html5有一个不好的地方,那就是html5太强调语义了,导致开发中都不知道要选择那个标签。在做页面布局是,无论头部、主题、导航等模块都使用div来表示,但是html5的规范,需要使用不同的标签来表示。(header footer等)你对现在的那些新技术有了解Html5 css3等...原创 2020-07-10 20:05:48 · 1155 阅读 · 0 评论 -
Jquery的Ajax和原生Js实现Ajax有什么关系?
jQuery中的Ajax也是通过原生的js封装的。封装完成后让我们使用起来更加便利,不用考虑底层实现或兼容性等处理。如果采用原生js实现Ajax是非常麻烦的,并且每次都是一样的。如果我们不使用jQuery我们也要封装Ajax对象的方法和属性。有像jQuery这些已经封装完成,并经过很多企业实际的框架,比较可靠并且开源。我们就不需要封装,直接使用成熟的框架(jQuery)即可....原创 2020-07-10 20:02:00 · 1127 阅读 · 0 评论 -
jQuery的常用选择器?
ID选择器 通过ID获取一个元素Class选择器 通过类(css)获取元素标签选择器 通过标签获取元素通用选择器(*) 获取所以的元素div.myCls 获取有myCls这个类的div层次选择器儿子选择器 > 获取下面的子元素后代选择器 空格 获取下面后代,包括儿子、孙子等后代属性选择器Tag[attrName=’test’] 获取有属性名为xxxx并且属性的值为test的所有xxx标签 吃饭 睡觉Input[name=’hobby’],表示获取属性名为name并且nam原创 2020-07-10 11:51:26 · 971 阅读 · 0 评论 -
js和jQuery的关系?
jQuery是一个js的框架,封装了js的属性和方法,让用户用起来更加便利,并且增强了js的功能使用原生的js是要处理很多兼容性的问题(注册事件等),由jQuery封装了底层,就不用处理兼容性问题原生的js的DOM和事件绑定和Ajax等操作非常麻烦,jQuery封装以后操作就非常方便了。...原创 2020-07-10 11:08:34 · 1078 阅读 · 0 评论 -
简单介绍一下Ajax?
什么是Ajax: 异步的JavaScript和xml作用:通过AJAX与服务器进行数据交换,Ajax可以使网页实现布局更新。这意味着可以在不重新加载整个网页的情况下对网页的某部分进行更新。实现Ajax的方法:XmlHttpRequest对象,使用这个对象可以异步向服务器发送请求,获取获取响应,完成局部更新。Open send responseText/responseXML 局部响应.使用场景:登陆失败时不跳转页面,注册时提示用户名是否存在,二级联动等等使用场景...原创 2020-07-10 08:33:11 · 1011 阅读 · 0 评论 -
简单说一下html,css,javascript在网页开发中的定位?
HTML 超文本标记语言 定义网页的结构CSS 层叠样式表,用来美化页面JavaScript主要用来验证表单,做动态交互(其中ajax)原创 2020-07-10 00:08:37 · 1358 阅读 · 0 评论 -
mysql数据库的默认的最大连接数?
100为什么需要最大连接数?特定服务器上面的数据库只能支持一定数目同时连接,这时候我们一般都会设置最大连接数(最多同时服务多少连接)。在数据库安装时都会有一个默认的最大连接数为100....原创 2020-07-09 14:24:25 · 1749 阅读 · 0 评论 -
介绍一下关系数据库三范式?
范式就是规范,就是关系型数据库在设计表时,要遵循的三个规范。要想满足第二范式必须先满足第一范式,要满足第三范式必须先满足第二范式。第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。列数据的不可分割我的理解:列不可分。二范式(2NF):要求数据库表中的每个行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。(主键)我的理解:不能部分依赖第三范式(3NF):要求一个数据库表中不包原创 2020-07-09 08:22:22 · 736 阅读 · 0 评论 -
对线程并发库的了解
JDK5中增加了Doug Lea的并发库,这一引进给Java线程的管理和使用提供了强大的便利性。 java.util.current包中提供了对线程优化、管理的各项操作,使得线程的使用变得的心应手。该包提供了线程的运行,线程池的创建,线程生命周期的控制.Java通过Executors提供四个静态方法创建四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长原创 2020-07-09 08:10:56 · 544 阅读 · 0 评论 -
常见的数据库有哪些?
数据库分为:关系型数据库和非关系型数据库两种关系型数据库:SQLite、Oracle、Mysql特性:1、关系型数据库,是指采用了关系模型来组织数据的数据库;2、关系型数据库的最大特点就是事务的一致性;3、简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。优点:1、容易理解:关系模型相对网状、层次等其他模型来说更容易理解;2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;3、易于维护:丰富的完整性大大减低了数据冗余和数据原创 2020-07-09 08:08:25 · 11735 阅读 · 0 评论 -
说一下session和cookie的区别?你在项目中都有哪些地方使用了?
Session和cookie都是会话(Seesion)跟踪技术。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。但是Session的实现依赖于Cookie,sessionId(session的唯一标识需要存放在客户端).cookie 和session 的区别:1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用sessio原创 2020-07-08 23:47:09 · 842 阅读 · 0 评论 -
JSP和Servlet有哪些相同点和不同点?
JSP是Servlet技术的扩展,所有的jsp文件都会被翻译为一个继承HttpServlet的类。也就是jsp最终也是一个Servlet.这个Servlet对外提供服务。Servlet和JSP最主要的不同点在于JSP侧重于视图,Servlet主要用于控制逻辑。Servlet如果要实现html的功能,必须使用Writer输出对应的html,比较麻烦。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件,做界面展示比较方便而嵌入逻辑比较复杂。...原创 2020-07-08 23:44:48 · 585 阅读 · 0 评论 -
Servlet API中forward() 与redirect()的区别?
主要区别如下:1、forward是服务器端的转向而redirect是客户端的跳转。2、使用forward浏览器的地址不会发生改变。而redirect会发生改变。3、Forward是一次请求中完成。而redirect是重新发起请求。4、Forward是在服务器端完成,而不用客户端重新发起请求,效率较高。...原创 2020-07-08 23:40:16 · 1684 阅读 · 0 评论 -
简单说一下servlet的生命周期
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达加载Servlet的class ---->实例化servlet ---->调用Servlet的init完成初始化 ---->响应请求(Servlet的service方法)----> Servlet容器关闭时(Servlet的destory方法)Servlet启动时,开始加载servlet生原创 2020-07-08 21:20:24 · 688 阅读 · 0 评论 -
说一下你对servlet的理解?或者servlet是什么?
Servlet(Server Applet) ,全称Java Servlet, 是用Java编写的服务器端程序。这些Sevlet都要实现Servlet这个接口。主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。HttpServlet 重写doGet和doPost方法或者你也可以重写service方法完成对get和post请求的响应...原创 2020-07-08 15:05:44 · 471 阅读 · 0 评论 -
http的get和post请求的区别?
GET和POST请求 都是HTTP的请求方式,用户通过不同的HTTP的请求方式完成对资源(url)的不同操作。GET、POST、PUT、DELETE就对应着对这个资源的增删改查四个操作。具体来讲,GET一般用于获取和查询资源信息。而POST一般用来更新资源信息。1.GET请求提交的数据会在地址栏显示出来,而POST请求不会在地址栏显示出来GET请求提交:会附在url之后(就是把数据放置在HTTP协议头中),通过?来分割URL和传输数据,多个参数用&连接POST请求提交:把提交原创 2020-07-08 14:39:46 · 225 阅读 · 0 评论 -
什么是设计模式?常用的设计模式有哪些?
设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的、可以解决特定问题的设计方法。单例(饱汉模式、饥汉模式)1、构造方法私有化,让出了自己类中能创建外其他地方都不能创建2、在自己的类中创建一个单实例(饱汉模式是一出来就创建创建单实例,而饥汉模式需要的时候才创建)3、提供一个方法获取该实例对象(创建时需要进行方法同步)工厂模式:Spring IOC就是使用了工厂模式.对象的创建交给一个工厂去创建。代理模式:Spring AOP就是使用的动态代理。...原创 2020-07-07 19:08:09 · 508 阅读 · 0 评论 -
spring的4种事务特性,5种隔离级别,7种传播行为
1、限定线程的个数,不会导致由于线程过多而使系统运行缓慢或崩溃2、线程池不需要每次都去创建或销毁,节约了资源、3、线程池不需要每次都去创建,响应时间更快。连接池也是一样原创 2020-07-07 17:41:30 · 232 阅读 · 0 评论 -
线程的几种实现方式?启动方式?区分方式?
实现方式:通过继承Thread类实现一个线程通过实现Runnable接口实现一个线程继承的扩展性不强,Java总是支持单继承,如果一个类继承Thread就不能继承其他的类怎么启动:public class MainTest { public static void main(String[] args) { Thread thread = new Thread(new MyThread()); thread.start(); }}p.原创 2020-07-07 16:58:11 · 432 阅读 · 0 评论 -
Java中实现一个拷贝文件的工具类使用字节流还是字符流?
我们拷贝的文件不确定是只包含字符流,有可以能有字节流(图片、声音、图像等),为考虑到通用性,要使用字节流。原创 2020-07-07 16:20:56 · 248 阅读 · 0 评论