
Java面试
高频面试题
-乾坤-
一名普通的研发工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java面试——基本数据类型int 和其包装类型 Integer的区别
Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换,对应如下:原始类型:boolean,char,byte,short,int,long,float,double包装类型:Boolean,Character,Byte,Short,Integer,Lon原创 2021-12-07 10:38:05 · 318 阅读 · 1 评论 -
Java面试——Spring——Spring MVC 运行流程
一、MVC : Model View Controller二、执行流程官方流程:1:发送请求到DispatchServlet(中央控制器)2:DispatcherServlet(中央控制器)调用HandlerMapping(处理器映射器)根据请求url找到需要执行的Handler(处理器)3:DispatcherServlet(中央控制器)通过HandlerAdapter(处理器适配器)调用处理器核心控制器捕获请求uri4:执行处理器,返回ModelAndView给中央控制器5:中央控制器原创 2020-09-16 15:36:02 · 281 阅读 · 1 评论 -
Java面试——Spring——Spring 有哪些主要模块?
Spring框架的七大模块1.Spring Core:Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。2.Spring Context:构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些像JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑原创 2020-09-16 14:28:43 · 506 阅读 · 1 评论 -
Java面试——Spring——为什么要使用Spring
Spring提供了丰富的企业级功能,降低了开发的复杂性。Spring让人们避免重复的造轮子Spring对很多异构的技术提供了统一的编程模型轻量:非入侵性的、所依赖的东西少、资源占用少、部署简单,不同功能选择不同的 jar 组合容器:工厂模式实现对 JavaBean 进行管理松耦合:通过注解即可完成 bean 的依赖注入AOP:通过 注解即可加入面向切面编程的能力,完成切面功能,如:日志,事务…的统一处理,更好的复用代码方便集成:通过配置和简单的对象注入即可集成其他框架,如 Mybatis、H原创 2020-09-15 16:57:08 · 252 阅读 · 0 评论 -
Java面试——设计模式——说一说你熟悉的设计模式?
常见的我们熟悉的设计模式有单例模式、工厂模式等,Spring框架中有这两种设计模式的经典使用。一、Spring框架中的单例模式:Spring框架中默认将bean设置为单例的,可以极大地提高系统的性能1、单例bean与原型bean的区别单例bean:在处理多次请求的时候在Spring 容器里只实例化出一个bean,后续的请求都公用这个对象,这个对象会保存在一个map(缓存)里面。当有请求来的时候会先从缓存(map)里查看有没有,有的话直接使用这个对象,没有的话才实例化一个新的对象。原型bean:原创 2020-09-15 16:02:53 · 2720 阅读 · 1 评论 -
Java面试——基础——网络——OSI与TCP/IP
一、OSI七层模型OSI过于繁琐和复杂,OSI是一种理论下的模型二、TCP/IP四层模型TCP/IP四层模型已经被广泛应用,称为网络互联实施上的标准。三、数据传输过程1、DATA数据由用户发给应用层2、应用层加应用头标记(AH)发送给下一层:传输层3、传输层加传输头标记(TH)发送给下一层:网络层4、网络层加网络层标记(IH)发送给下一层:数据链路层5、数据链路层加帧头(FH)和帧尾(FT)标记发送给下一层:物理层6、物理层数据以bit流的形式传递到下个应用的物理层7、下个应用会将原创 2020-09-09 17:53:31 · 240 阅读 · 0 评论 -
Java面试——基础——web——如何避免 sql 注入?
一、SQL注入产生的原因SQL注入产生的原因,和栈溢出、XSS等很多其他的攻击方法类似,就是未经检查或者未经充分检查的用户输入数据,意外变成了代码被执行。针对于SQL注入,则是用户提交的数据,被数据库系统编译而产生了开发者预期之外的动作。也就是,SQL注入是用户输入的数据,在拼接SQL语句的过程中,超越了数据本身,成为了SQL语句查询逻辑的一部分,然后这样被拼接出来的SQL语句被数据库执行,产生了开发者预期之外的动作。所以从根本上防止上述类型攻击的手段,还是避免数据变成代码被执行,时刻分清代码和数据的界原创 2020-09-08 17:17:13 · 305 阅读 · 0 评论 -
Java面试——基础——web——session的工作原理
一、创建Session当用户访问一个服务器,如果服务器启用Session,服务器就要为该用户创建一个SESSION。 在创建这个SESSION的时候,服务器首先检查这个用户发来的请求里是否包含了一个SESSION ID,如果包含了一个SESSION ID则说明之前该用户已经登陆过并为此用户创建过SESSION,那服务器就按照这个SESSION ID把这个SESSION在服务器的内存中查找出来。 如果客户端请求里不包含有SESSION ID,则为该客户端创建一个SESSION并生成一个与此SESS.原创 2020-09-08 16:47:25 · 212 阅读 · 0 评论 -
Java面试——基础——容器——如何创建一个集合不能被修改的集合?
一、Collections. unmodifiableCollection(Collection c) 方法创建的集合。 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collection<Integer> readOnlyList = Collections.unmodifiableCollection(list);原创 2020-09-08 14:57:33 · 509 阅读 · 0 评论 -
Java面试——基础——容器——Java 容器都有哪些?
原文:http://blog.youkuaiyun.com/ns_code/article/details/35564663 java集合框架整体类图如下: 从上图中可以看出,集合类主要分为两大类:Collection和Map。 Collection是List、Set等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为两大部分:List和Set。 1.List:原创 2017-12-11 10:56:23 · 362 阅读 · 0 评论 -
Java面试——基础——IO——BIO、NIO、AIO 有什么区别?
在此之前,先弄清几个概念:1.同步:使用同步IO时,Java自己处理IO读写。2.异步:使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS,完成后OS通知Java处理(回调)。3.阻塞:使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。4.非阻塞:使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器通知可读写时在进行读写,不断循环直到读写完成。一、BIO:同步并阻塞,服务器的实现模式是一个连接一个线程,这样的模式很明显的一个缺陷原创 2020-09-08 13:20:55 · 430 阅读 · 0 评论 -
Java面试——基础——io——Java 中 IO 流分为几种?
一、Java 中 IO 流分为几种Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个),Java中其他多种多样变化的流均是由它们派生出来的.字节流:InputStream,OutputStream。字符流: Reader,Writer。二、字符流和字节流的区别字符流和字节流是根据处理数据的类型的不同来区分的。字节流按照8位传输,字节流是最基本的,所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文原创 2020-09-08 11:00:04 · 1460 阅读 · 0 评论 -
Java面试——基础——字符串——String str=“i“与 String str=new String(“i“)一样吗?
关于此篇问题的讨论众说纷纭,我也是在准备面试题,没时间去分析编译源码验证,大家有不同意见欢迎留言讨论。一、直接赋值:String str=“abc”;1、JVM首先会去字符串常量池中查找是否存在"abc"这个对象2、如果不存在,则在字符串池中创建"abc"这个对象,然后将池中"这个对象的引用地址返回给字符串常量str,这样str会指向池中这个字符串对象;3、如果存在,则不创建任何对象,直接将池中这个对象的引用地址返回,赋给字符串常量str。二、使用new关键字创建:String str= new原创 2020-09-08 10:14:00 · 1506 阅读 · 0 评论 -
Java面试——基础——字符串——Java中操作字符串都有哪些类?它们之间有什么区别?
String类是不可变的 StringBuffer(线程安全、慢)和StringBuilder(非线程安全、快)是可变的 1.创建String对象的两种方式 (1)直接赋值:String str=”abc”; 采用直接赋值的方式创建一个字符串时,JVM首先会去字符串常量池中查找是否存在”abc”这个对象,如果不存在,则在字符串池中创建”aaa”这个对象,然后将池中“这个对象的引用地址返回给原创 2017-12-09 17:23:40 · 201 阅读 · 0 评论 -
Java面试——基础——final 在 java 中有什么作用?
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)表示最终的、不可变的。1、修饰类当用final修饰一个类时,表明这个类不能被继承。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。2、修饰方法final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此原创 2020-09-07 16:26:14 · 157 阅读 · 0 评论 -
Java面试——基础——两个对象的 hashCode()相同,则 equals()也一定为 true?
一、hashCodehashCode:是Java的本地方法,通过对象的内存地址(不止内存地址)计算出一个整数值,少数情况下,内存地址不同,这个整数值也有可能是相同的。例:Aa和BB的hashCode值是相同的二、equalsequals:是Java的本地方法,默认比较的是两个对象的内存地址是否相同。三、结论:综上所述可知,Aa和BB的hashCode值是相同的,但是他们的内存地址并不相同。题外话:hashMap 判断一个对象是否相等,首先通过比较对象的hashcode值是否相同,若是原创 2020-09-07 16:03:23 · 4537 阅读 · 0 评论 -
Java面试——基础——== 和 equals 的区别是什么?
一、“==”==在JAVA中只是一个运算符号。==是判断两个变量或实例是不是指向同一个内存地址。== 如果比较的是基本数据类型,比较的是值,如果比较的是引用数据类型,那么比较的是对象的引用内存地址二、equalsequals在JAVA中是一个方法。equals是判断两个变量或实例所指向的内存空间的值是不是相同。通常用做引用数据类型的比较,如果对象没有重写equals方法,那么比较的是对象的引用地址的一个hash值,如果重写了equals方法,那么比较规则根据你重写的方法来,需要注意的是,原创 2020-09-07 15:14:08 · 223 阅读 · 0 评论 -
Java面试——基础——JDK 和 JRE 有什么区别?
一、JRE(Java Runtime Environment)顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。二、JDK(Java Development Kit)顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jcons原创 2020-09-07 14:38:41 · 128 阅读 · 0 评论 -
面试题-JAVA静态绑定和动态绑定
面试题:一个Java程序的执行要经过编译和运行这两个步骤,同时Java又是面向对象的编程语言。当子类和父类存在同一个方法,子类重写了父类的方法,程序在运行时调用方法是调用父类的方法还是子类的重写方法呢?涉及的知识点:1、程序绑定的概念:通俗的讲绑定就是指你调用的方法是绑定在哪个类上的。例如:父类 Father 有 方法 run();子类 Son 也有方法 run();那么...原创 2020-02-21 12:17:05 · 495 阅读 · 0 评论 -
Java 高级
最近,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架。我相信其它公司招初级开发时,应该也照着这个标准来面的。我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。但现实情况是,大多数人可能面试前没准备...转载 2020-01-13 18:09:54 · 370 阅读 · 0 评论 -
spring servlet的拦截配置
1、拦截固定后缀的url、比如设置为.do 、.action, 例如:/user/add.action 此方法最简单,不会导致静态资源(jpg,js,css)被拦截。 2、拦截所有,设置为/,例如:/user/add /user/add.action 此方法可以实现REST风格的url,很多互联网类型的应用使用这种方式。但是此方法会导致静态文件(jpg,js,css)被拦截后不能正常...原创 2018-07-09 16:17:04 · 907 阅读 · 0 评论 -
Spring中的有状态(Stateful)和无状态(Stateless)
Spring中的有状态(Stateful)和无状态(Stateless)1.通过上面的分析,相信大家已经对有状态和无状态有了一定的理解。无状态的Bean适合用不变模式,技术就是单例模式,这样可以共享实例,提高性能。有状态的Bean,多线程环境下不安全,那么适合用Prototype原型模式。Prototype: 每次对bean的请求都会创建一个新的bean实例。2.默认情况下,从Spring原创 2018-02-01 12:35:57 · 2879 阅读 · 0 评论 -
某次面试题
1.va的math.round函数 首先这个函数是用来取最接近这个函数的整数的值 遇到0.5这类数字,向上取整,也就是取了比较大的值 2.java比较两个时间的先后 beginTime.compareTo(endTime)&lt;0时,开始时间小于结束时间 3.java基础数据集合类型 list 有序,可重复(有序指的是元素的添加顺序 arraylist 动态数组 用于查询 ...原创 2018-07-13 12:03:42 · 480 阅读 · 0 评论 -
Java数组面试题(二)
旋转数组: 例如:数组中元素为 123456,翻转后为561234 给定一个数组,长度为n,要求把后k个元素移动到前面,前n-k个元素移动到后面//先改进面试题一中的方法,将从头到尾翻转改为从i到j翻转public int[] changeArray2(int[] array, int i, int j) { int temp = 0; while ...原创 2018-02-11 15:19:50 · 529 阅读 · 0 评论 -
Java数组面试题-数组逆置(一)
1.给定整形数组,实现数组逆置public int[] changeArray(int[] array) { int i = 0;//定义数组的第一个元素 int j = array.length-1;//定义数组的最后一个元素 int temp = 0; while (i <= j) { tem...原创 2018-02-11 13:19:32 · 4025 阅读 · 1 评论 -
详解GROUP BY HAVING 语句
一、GROUP BYGROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列的结果集。语法如下:SELECT column1, column2, … column_n, aggregate_function (expression) FRO原创 2018-02-03 15:32:10 · 1139 阅读 · 0 评论 -
从JD到简历到面试到offer
1.JD(职位描述): 企业的要求: 职位要求,硬性要求(学历,年龄) 2.简历:简历是要根据JD来写的,不要海投,不要海投,不要海投 3.面试: 自我介绍,围绕着面试官需要的人才去介绍自己,学习经历,项目经历什么的。 刚开始不要谈福利待遇。 HR不会问没有用的问题,问的问题都是为了得到一个答案,你要学会聪明的回答问题,比如你的家在哪里,是为了看你家和公司的距离。 你要提什么问题,原创 2018-02-02 19:42:33 · 2826 阅读 · 0 评论 -
Java面试之ArrayList和LinkedList
1.ArrayList是基于数组,LinkedList基于链表实现。对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。 2.对于随机访问get和set,ArrayList觉原创 2018-02-01 20:30:40 · 144 阅读 · 0 评论 -
Java面试题之异常
1.可检查异常,编译器出现的异常,必须通过try/catch或者throw进行处理,否则编译不会通过 2.非检查异常,运行时异常,运行时出现的异常,建议不要处理 3.error 很严重的错误一般是由JVM或者系统引起的原创 2018-02-01 20:20:49 · 204 阅读 · 0 评论 -
巧记Java四种访问权限修饰符
public:表示访问权限不限;protected:表示能被其子类和在相同包中的类访问;默认:在相同包中被其它类访问,但包外的子类不能直接继承(包内的子类可以访问);private:只能在类内部访问。原创 2018-02-01 18:39:58 · 398 阅读 · 0 评论 -
接口和抽象类的区别
1.接口和抽象类有什么区别?接口和抽象类的区别在于使用的动机: 使用抽象类一般是Basexxx,目的是实现代码的复用,使用接口则是为了多态的实现,一个打印功能的接口,在彩色打印机和黑白打印机上的功能是不同的。 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。 抽象类表示的是,这个对象是什么。 接口表示的是,这个对象能做什么。 比如,男人,女人,这两个类(如果是类的原创 2017-12-18 18:26:54 · 161 阅读 · 0 评论 -
mysql面试题及其解题思路(一)
首先创建数据库表:1.员工信息表CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT NULL,`h原创 2018-02-03 15:27:26 · 773 阅读 · 0 评论 -
Java数组面试题(三)
1.一个升序的数组,求其中的两个数的和为s的一对数,并且输出他们,若有多对,则全部输出 方法一:两重for循环,时间复杂度是n^2,没有用上升序这个条件public void moveArray(int[] array, int s) { int n = array.length - 1; for (int i = 0; i < n; i++) {...原创 2018-02-11 16:51:23 · 775 阅读 · 0 评论 -
需要学会的Java 业务
1.CRUD(增加删除修改查询 2.文件上传/下载 采用apache的开源工具common-fileupload来实现文件的上传和下载excel下载JSON格式转换数据加密技术通信技术数组 集合的操作字符串的操作...原创 2018-07-05 17:26:15 · 877 阅读 · 0 评论 -
Java 中的修饰符
访问控制修饰符: public :公共的,所有类 private:私有的 只能本类 protected:保护的,同一个包中的,别的包中有继承关系的可以访问 default:默认的,同一个包中的 非访问控制修饰符: abstract: final:final修饰的类不能被继承,不能有自己的子类 final修饰的方法不能被重写 final修饰的变量需...原创 2018-07-04 11:45:19 · 128 阅读 · 0 评论 -
面向对象和面向过程的区别
1.面向过程的语言: 只需要将一件事的过程用程序化的语言描述出来就可以了,第一部怎莫做,第二部怎莫做,没有可扩展性 2.面向对象的语言,描述的并不是过程,是哪一个对象可以做这件事,调用这个对象的方法实现这个过程,后期需要扩展完全可以在这个搞对象中添加功能,具有良好的扩展性...原创 2018-07-04 10:58:17 · 2747 阅读 · 0 评论 -
Java应聘须知
一、专业技能熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的JavaAPI,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。熟悉基于JSP和Servlet的JavaWeb开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模...原创 2018-04-24 17:44:37 · 337 阅读 · 0 评论 -
mysql面试题及其解题思路
1.针对如下表actor结构创建索引: CREATE TABLE IF NOT EXISTS actor ( actor_id smallint(5) NOT NULL PRIMARY KEY, first_name varchar(45) NOT NULL, last_name varchar(45) NOT NULL, last_update timestamp NOT NULL DE原创 2018-02-06 14:50:10 · 419 阅读 · 0 评论 -
Java面试题之字符串(一)
同分异构体 化学式:C2H6O 两个字符串顺序不同,最终的字母个数相同如 abc和cba 写一个判断两个字符串是否为同分异构体 思路:判断两个字符串中每个字母的个数是否相同 字符串的charAt()方法 str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符. 字符型,字符是可以相加减的 ‘a’的值是97pub...原创 2018-02-11 21:28:13 · 378 阅读 · 0 评论 -
Java数组面试题(四)
1删除数组中的重复元素 思路: 数组问题大多可以采用指针和临时变量来解决 先建一个临时变量 temp 再建一个临时指针 n 指向数组的第一个元素 将数组的第一个值赋给temp 看数组的第二个值是否和temp相等 若相等则继续 若不等 数组指针n++ arr[n]=这个值 同时temp=这个值public int[] delete(int arr[]) { int ...原创 2018-02-11 19:05:27 · 1265 阅读 · 1 评论