
面试题
总结面试中一些常见的问题
每天进步一点点呀
工作日常技术学习、积累、总结
-
原创 Java后端面试题总结一
简介分享几道常见的Java后端基础面试题,以下部分内容来自网络,只是笔者学习的一些总结,方便后面翻阅查看。List 和 Set 的区别?List , Set 都是继承自 Collection 接口List 特点:元素有放入顺序,元素可重复 , Set 特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,元素虽然无放入顺序,但是元素在set中的位置是有该元素的 HashCode 决定的,其位置其实是固定的,加入Set 的 Object 必须定义 equals ()方法 ,另外list支持for循环,2020-10-12 20:51:06137
0
-
原创 Java集合相关面试题总结
一、简介Java集合类是我们日常编程中使用较多的一个,常见的有:ArrayList、LinkedList、HashMap、HashSet、ConcurrentHashMap、LinkedBlockQueue等等,集合类同时也是面试时必问的一项技能,所以我们有必要了解一些常见的面试题,本文将总结一部分比较常遇到的集合相关的面试题,希望可以帮助到大家。二、集合相关面试题【a】集合类继承图上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的2020-05-23 15:17:21203
0
-
原创 SpringBoot常见面试题总结二
一、简介前不久已经总结了一篇关于SpringBoot的面试题,文章地址:【https://blog.csdn.net/Weixiaohuai/article/details/105621247】,本文将继续总结一些常见的SpringBoot面试题。二、面试题【a】SpringBoot核心功能有哪些?1、独立运行Spring项目 Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。 2、内嵌serv...2020-05-19 20:53:35302
0
-
原创 SpringCloud常见面试题总结二
一、简介最近在忙项目,差不多半个月没有写博客,今天正逢周末,整理一些常见的SpringCloud面试题。二、面试题【a】SpringCloud 和Dubbo区别?区别 SpringCloud Dubbo 服务调用方式 Rest Api RPC 注册中心 可以是eureka,也可以是zookeeper zookeeper 网关 服务网关,dubbo本身没有实现,只能通过其他第三方技术整合 springcloud有Zuul路由网关,作.2020-05-16 21:11:49332
0
-
原创 Redis相关面试题总结
一、简介本文总结一些常见的Redis相关的面试题,方便在后面有需要的时候查看和复习。二、面试题【1】redis和memcached有什么区别?为什么高并发下有时单线程的redis比多线程的memcached效率要高?memcached可以缓存图片和视频,redis支持除了k/v键值对外更多的数据结构 redis可以使用虚拟内存,redis支持持久化和aof灾难恢复,redis通过...2020-04-23 21:06:40318
0
-
原创 Mybatis相关面试题总结
一、简介本文将总结一些关于持久化层框架Mybatis的面试题。二、面试题【1】什么是Mybatis?MyBatis是一个可以自定义SQL、动态SQL、存储过程和高级映射的持久层框架。【2】请谈谈Mybatis的缓存?MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认开启一级缓存;二级缓存存放在它的命名空间中,默认是不开启的,需要我们手动开启二级...2020-04-20 21:45:44390
0
-
原创 SpringMVC相关面试题总结
一、简介本文将总结一些现在非常流行的开源框架SpringMVC相关的面试题。二、面试题【1】什么是SpringMVC?SpringMvc是Spring的一个模块。基于MVC的一个框架,无需中间整合层来整合。【2】Spring MVC的优点?清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form...2020-04-19 22:19:45202
0
-
原创 Spring相关面试题总结
一、简介本文将总结一些现在非常流行的开源框架Spring相关的面试题。二、面试题【1】什么是Spring框架?Spring框架有哪些主要模块?Spring框架是一个轻量级的Java开发框架,为应用开发提供平台。包含模块:Spring AOP 面向切面编程 Spring ORM Hibernate|mybatis|JDO Spring Core 提供bean工厂 IOC...2020-04-19 22:13:18353
0
-
原创 SpringBoot常见面试题总结一
一、简介本文将总结一些现在非常流行的开箱即用框架SpringBoot相关的面试题。二、面试题【1】什么是SpringBoot?Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。【2】SpringBoot有哪些优点?独立运行 Spring ...2020-04-19 21:49:59469
0
-
原创 SpringCloud常见面试题总结一
一、简介本文将总结一些常见的微服务架构SpringCloud相关的面试题。二、面试题【1】什么是SpringCloud? 使用SpringCloud有什么优势?SpringCloud是在SpringBoot基础上构建的,用于快速构建分布式系统的通用模式的工具集。优势:约定优于配置 适用于各种环境.开发,部署在PC Server 或各种云环境均可 隐藏了组件的复杂性,并提...2020-04-19 20:13:11614
0
-
原创 面试题之并发相关专栏五
一、请谈谈volatile有什么特点,为什么它能保证变量对所有线程的可见性?当一个变量被volatile修饰后,具备两个特性:保证此变量对所有线程的可见性,当一条线程修改了这个变量的值,新值对于其他线程是可以立即得知的,而普通变量做不到这一点。 禁止指令重排序优化,普通变量仅仅能保证在方法执行过程中,得到正确结果,但是不保证程序代码的执行顺序。内存模型定义了8种内存间操作来保证可见性:...2020-04-05 20:08:22152
0
-
原创 面试题之并发相关专栏四
一、Java中的线程池是如何实现的?在Java中,所谓的线程池中的线程,其实是被抽象为了一个静态内部类Worker,基于AQS实现,存放在线程池的HashSet workers成员变量中; 需要执行的任务存放在成员变量workQueue中,workQueue是一个阻塞队列; 线程池的基本思想就是:从workQueue队列中不断取出需要执行的任务,放在Workers中进行执行;二、如何自定...2020-04-05 20:01:24149
0
-
原创 面试题之并发相关专栏三
一、ReentrantLock是如何实现可重入的?ReentrantLock内部自定义了同步器Sync,其实就是加锁的时候通过CAS算法,将线程对象放到一个双向链表中,每次获取锁的时候,看下当前维护的那个线程ID和当前请求的线程ID是否一样,一样就可重入。二、请说说CyclicBarrier和CountDownLatch的异同?CountDownLatch 是不可以重置的,所以无法重...2020-04-05 19:53:10133
0
-
原创 面试题之并发相关专栏二
一、什么是锁消除和锁粗化?锁消除:指虚拟机即时编译器在运行时,对一些代码上要求同步,但被检测到不可能存在共享数据竞争的锁进行消除。 锁粗化:原则上,同步块的作用范围应该尽可能的小,也就是说锁的粒度要尽可能小一点。但是如果一系列的连续操作都对同一个对象反复加锁和解锁,甚至加锁操作在循环体内,频繁地进行互斥同步也会导致不必要的性能损耗,锁粗化就是增大锁的作用范围。二、为什么说Synchroni...2020-04-05 19:44:42127
0
-
原创 面试题之并发相关专栏一
一、Synchronized用过么?其原理是什么?Synchronized是由JVM虚拟机实现的一种实现互斥同步的方式,被Synchronized修饰后的程序块编译后的字节码文件中,在编译前后被编译器生成了monitorenter和monitorexit两个字节码指令。在虚拟机执行到monitorenter指令时,首先要尝试获取对象的锁,如果这个对象没有锁定,或者当前线程已经拥有了这个对象...2020-04-05 19:31:03167
0
-
原创 面试题之GC是什么?为什么要有GC?
一、GC是什么?为什么要有GC?参考回答:GC是垃圾收集的意思,内存处理是开发人员容易出现问题的地方,忘记或者错误地内存回收会导致程序或者系统的不稳定甚至崩溃,Java提供的垃圾回收机制可以自动检测对象是否超过作用域从而达到自动回收的目的。二、简述Java垃圾回收机制参考回答:在Java开发中,程序员并不需要显式去释放一个对象的内存的,而是由虚拟机自动进行管理。在JVM中,有一个低优先...2020-04-04 19:33:51683
0
-
原创 面试题之请描述一下Java类加载过程
一、简介Java类加载过程是面试中常问的问题之一,今天我们将对类加载的各个过程进行简单的分析和总结,这样在面试的时候对这个问题就有信心回答好了。二、类加载过程Java类加载过程包含下面5个步骤:【a】加载通过一个类的全限定名获取该类的二进制流; 将该二进制流的静态存储结构转化为方法区运行时数据结构; 在内存中生成该类的Class对象,作为该类的数据访问入口;【b】链接...2020-04-04 19:22:03947
0
-
原创 面试题之Servlet工作原理
一、简介要了解Servlet的原理,首先需要了解其类图:Servlet是一个接口,有三个重要的方法://Servlet初始化容器执行的方法void init(ServletConfig var1) throws ServletException;//执行具体的逻辑void service(ServletRequest var1, ServletResponse var...2020-03-30 17:24:53252
0
-
原创 面试题之说几个Object类常用方法以及作用
一、简介面试中经常会被问到Object类有哪些常用的方法和各自的作用,我们都知道Object类是所有类的基类,所以我们也有必要去了解它常见API,下面我们通过一张表来总结Object类有哪些常用方法以及作用: 方法返回值类型 方法名称以及描述 protectedObject clone() 创建并返回此对象的克...2020-03-29 20:03:43471
0
-
原创 面试题之synchronized与Lock的区别
一、简介今天我们总结一下关于JUC方面的面试题:synchronized与Lock的区别?如果面试遇到这个问题,小伙伴们可以参考从以下几个方面进行回答: 区别 synchronized Lock 是否关键字 synchronized是Java内置关键字 Lock类是一个接...2020-03-16 20:01:01707
0
-
原创 面试题之GC垃圾回收算法
一、简介我们都知道,JVM中堆可分为:【a】新生代:Eden区域 From(s0)区域 To(s1)区域【b】老年代如下图:JVM垃圾回收的主要区域之一就是我们的堆。JVM在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是指新生代。GC按照回收的区域又分了两种类型:普通GC(minor GC) 全局GC(major GC or Ful...2020-03-16 19:51:11396
0
-
原创 面试题之类加载器
一、简介本文总结一些关于JVM中类加载器相关的面试题。二、什么是类加载器?类加载器,负责加载class字节码文件,class文件在文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由执行引擎Execution Engine决定。类加载器的工作图大体如...2020-02-22 20:01:10462
0
-
原创 面试题之对象创建的五种方式
一、简介在Java中,创建对象的方式有五种,分别为:通过new()调用构造方法创建对象; 通过反射xxx.getClass().newInstance()创建对象; 通过反射construct.newInstance()创建对象; 通过xxx.clone()克隆方法创建对象; 通过readObject()反序列化创建对象;下面通过示例分别说明五种方法。二、示例首先创建一个...2020-02-11 21:04:56112
0
-
原创 面试题之wait()和sleep()方法区别
一、简介sleep()和wait()方法区别 方法 sleep() wait() 概念 使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行) 导致当前线程等待,直到另一个线程调用该对象的notify()方法或notifyAll()方法 方法属于哪一个类...2020-02-09 15:30:48327
0
-
原创 面试题之Java中线程的几种状态
一、简介Java线程主要有以下六种状态: 状态名称 说明 NEW 初始状态,线程刚被构建,但是还没有调用start()方法 RUNNABLE 运行状态,Java系统系统中将操作系统中的就绪和运行两种状态笼统地称为“运行中” BLOCKED ...2020-02-09 15:07:04279
0
-
原创 面试题之Error和Exception总结
一、异常体系简介异常机制其实是帮助我们找到程序中的问题,异常的根类是 java.lang.Throwable ,其下有两个子类:java.lang.Error java.lang.Exception概念:Error:程序中发生的严重错误Error,无法处理的错误,只能事先避免; 如内存溢出等 Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是...2020-02-08 15:36:51229
0
-
原创 面试题之存储过程
一、什么是存储过程简单来说,存储过程就是一组预先编译好的sql语句集。二、创建语法create procedure 存储过程名(参数列表)begin//....存储过程体end;参数列表主要有三种形式:IN : 需要调用者传入 OUT : 作为返回值 INOUT : 调用者传入参数,对应的可以有返回值注意点:由于sql语句默认以";"分号作为分隔符,因此存储过...2020-02-06 10:27:004262
0
-
原创 面试题之触发器
一、 什么是触发器?数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(insert,update,delete)在指定的表上发出时,就是执行触发器中定义的语句序列。create trigger first_triggerafter inserton empbegindbms_output.put_line("新增成功");end;...2020-02-03 19:23:37584
0
-
原创 面试题之请求转发和重定向的区别
一、简介百科上面对请求转发和重定向过程的的介绍如下:请求转发:客户浏览器发送http请求,web服务器接受此请求,调用内部的一个方法在容器内部完成请求处理和转发动作,将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务...2020-01-15 16:29:041818
0
-
原创 面试题之SpringMVC整体工作流程
一、简介SpringMVC是当前最优秀的MVC框架,基本上所有公司都用,本篇文章将总结一下SpringMVC整体的工作流程。二、工作流程图工作流程大体分为如下几个步骤:1. 用户发起一个request请求,这个请求将会首先到达前端控制器DispatcherServlet中,由DispatcherServlet统一调度其他组件的使用; 2.DispatcherServlet接收...2020-01-14 17:41:02389
0
-
原创 面试题之Spring工作原理
一、简介Spring框架核心主要有两个:IOC和AOP。(一)、IOC容器IOC:控制反转,我们想实现一个功能,类A有可能调用到很多其他的接口,比如类B、类C中的方法,为了能调用别的类的方法,首先得取得这个类的实例,即在类A中new一个类B、再new一个类C,也就是说调用者负责创建被调用者的实例。这样的话,会造成类A中越来越臃肿,越来越不好管理;类B、类C需要不断的创建。引入Spr...2020-01-13 17:36:45176
0
-
原创 面试题之序列化与反序列化
一、简介概念: 序列化:把对象转换为字节序列的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字节或是XML等格式。而字节的或XML编码格式可以还原完全相等的对象,这个相反的过...2020-01-05 00:17:02498
0
-
原创 面试题之数据库事务隔离级别
一、简介为了解决脏读、不可重复读、幻读,数据库提供了事务隔离级别的概念,可以最大程度地避免以上三种情况的发生。根据隔离程度从低到高分为:Read Uncommitted(读未提交); Read Committed(读已提交); Repeatable Read(可重复读); Serializable(串行化);二、详解下面对各个隔离级别做一个简介:Read Uncommi...2020-01-01 22:09:49326
0
-
原创 面试题之数据库脏读、不可重复读、幻读
一、简介本文将总结脏读、不可重复读、幻读的概念以及一些区别,希望通过这些比较能够帮助小伙伴们加深对脏读、不可重复读、幻读的理解。二、脏读脏读: 指一个事务中访问到了另外一个事务未提交的数据(通俗地讲就是一个事务正在更新数据但是还没有提交更改到数据库,而此时另外一个事务刚好读取到该数据并且使用了这个数据)简单分析:假设两个线程操作之前数据库里面user_id = 1 对应的a...2019-12-31 21:51:36825
0
-
原创 面试题之TCP三次握手和四次挥手详解
一、简介TCP在通信之前,必须先建立连接,如果无须再传输数据,则需要关闭连接。在建立连接的过程中,存在三次握手阶段,在关闭连接的时候存在四次挥手阶段,本文将总结三次握手和四次挥手的具体过程。首先需要了解几个概念:序列号seq:用来标记数据段的顺序,报文段中的第一个字节的数据编号; 确认号ack:指的是期望接收到下一个字节的数据编号,即就是当前报文段最后一个字节的数据编号+1; 确认...2019-12-29 10:58:32184
0
-
原创 面试题之TCP与UDP的区别
一、简介UDP协议和TCP协议都是传输层协议。下面简单先介绍一下TCP和UDP的概念:TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据(有点类似于打电话必须先建立连接)。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端...2019-12-29 10:52:35266
0
-
原创 面试题之浅克隆和深克隆
一、简介在Object基类中,有一个方法叫clone,产生一个原始对象的克隆,克隆对象是原对象的拷贝,由于引用类型的存在,有深克隆和浅克隆之分,若克隆对象中存在引用类型的属性,深克隆会将此属性完全拷贝一份,而浅克隆仅仅是拷贝一份此属性的引用。clone()方法是Object类的,并不是Cloneable接口的,Cloneable只是一个标记接口,标记接口是用用户标记实现该接口的类具有某种该...2019-12-26 20:53:32156
0
-
原创 面试题之cookie和session区别
一、简介常用的会话跟踪技术有cookie和session,Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。其中cookie分为:会话Cookie:不设置过期时间,表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。会话cookie一般不存储在硬盘上而是保存在内存里。 持久Cookie:设置了过期时间,浏览器...2019-12-26 20:36:42796
0
-
原创 面试题之get和post的区别
一、简介本文总结通常用的两种请求方式:get 和 post方式的区别,这道面试题出现的频率也比较高。二、区别如下表所示:get和post方式的区别 请求方式区别 get post 用途 从服务器获取数据 向服务器提交数据 参数传递 ...2019-12-25 21:22:47377
0
-
原创 面试题之接口和抽象类的区别
一、简介本文总结最常见的面试题之一:接口和抽象类的区别。二、区别如下表所示:接口和抽象类对比 区别 Interface接口 Abstract class(含有抽象方法的类成为抽象类) 声明方式 interface abstract 使用方式 ...2019-12-25 21:13:08365
0