Java面试总结
文章平均质量分 69
Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。
冰蛙ing
千帆驶尽回眸望,仍是初少年
展开
-
Mysql面试题总结2022
目录MySQL引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性索引问题什么是索引?索引有哪几种类型?索引的基本原理索引设计的原则?创建索引的原则(重点)使用索引查询一定能提高查询的性能吗?为什么前缀索引B树和B+树的区别数据库为什么使用B+树而不是B树联合索引是什么?为什么需要注意联合索引中的顺序?事务事物的四大特性(ACID)介绍一下?什么是事务的隔离级别?MySQL的默认隔离级别是什么?锁按照锁的粒度分数据库锁有哪些?从锁的类别上分MySQL都有哪些原创 2022-03-30 15:37:49 · 315 阅读 · 0 评论 -
并发编程(线程)面试题总结2022
目录并发编程三要素是什么?在 Java 程序中怎么保证[多线程]的运行安全?什么是多线程,多线程的优劣?形成死锁的四个必要条件是什么创建线程有哪几种方式?继承 Thread 类实现 Runnable 接口实现 Callable 接口说一下 runnable 和 callable 有什么区别?线程的 run()和 start()有什么区别?为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?说说线程的生命周期及五种基本状态?sleep() 和 wait()原创 2022-03-28 16:44:54 · 833 阅读 · 1 评论 -
Java基础面试题总结2022
Java基础知识是面试中重要的一环,问题的回答要往更深的程度上进行思考回答。希望这里的总结能在面试中帮助到你。如果小伙伴发现哪里有错误可以评论指出,我这边会及时优化!文章目录1、==和equals比较2、hashCode与equals3、final finally finalize区别4、String、StringBuffer、StringBuilder的区别及应用场景5、重载和重写的区别6、接口和抽象类的区别(问的很多)6、Java反射反射应用场景Java获取反射的三种方法7、JAVA 异常分类及处.原创 2022-03-25 22:24:07 · 1046 阅读 · 0 评论 -
10 个牛逼的单行代码编程技巧,你会用吗?
标题本文列举了十个使用一行代码即可独立完成(不依赖其他代码)的业务逻辑,主要依赖的是Java8中的Lambda和Stream等新特性以及try-with-resources、JAXB等。1、对列表/数组中的每个元素都乘以2// Range是半开区间 int [] ia = range(1, 10).map(i -> i * 2).toArray(); List<Integer> result = range(1, 10).map(i -> i * 2).boxed().col原创 2022-01-18 09:17:39 · 474 阅读 · 0 评论 -
修改IDEA运行内存,更加流畅
IDEA修改内存,使运行更流畅一:打开修改内存的文件在idea最上面打开Help–Edit Custom VM Options…进去之后会看到IDEA默认配置二:默认参数的含义:我们所要修改的其实就是JVM的内存分配-Xms128m JVM初始分配的堆内存(最小内存)-Xmx512m JVM最大允许分配的堆内存,按需分配-XX:PermSize=64M JVM初始分配的非堆内存-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配三:修改后的参数及参数解释原创 2021-06-04 12:12:12 · 1576 阅读 · 0 评论 -
理解java的三大特性之多态
面向对象编程有三大特性:封装、继承、多态。封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类原创 2020-11-05 17:10:43 · 279 阅读 · 1 评论 -
JAVA初始化与清理
1.构造器:这是一个在创建对象时被自动调用的特殊方法,确保初始化,java会在用户有能力操作对象之前自动调用相应的构造器,由编译器调用,与类名相同,无返回值。(1)不接受任何参数的构造器叫做默认构造器。(2)如果你没有定义构造器,编译器自动帮你创建默认构造器,但是如果你定义了构造器,编译器就不会再去创建默认构造器。例子:class Bird2{ Bird2(int f){} Bird(double d){}}public class NoSynthesis{ public原创 2020-09-25 14:04:11 · 133 阅读 · 0 评论 -
数据结构和算法----链表
链表(Linked List)是不同于数组的另一种数据结构,它的存储单元(即结点或元素)除了包含任意类型的数据之外,还需要包含指向另一个结点的引用,后文会用术语链接表示对结点的引用。下面会列出链表与数组的具体不同:(1)数组需要一块连续的内存空间来存储;而链表则恰恰相反,通过指针将零散的内存串联在一起。(2)数组在插入和删除时,会做数据搬移,其时间复杂度是 O(n);而链表只需考虑相邻结点的指针变化,因此时间复杂度是 O(1)。(3)当随机访问第 K 个元素时,数据可根据首地址和索引计算出对应的原创 2020-08-27 17:32:14 · 176 阅读 · 0 评论 -
Java面试,值得你看的一篇整理文章。
**看到的一篇非常全面的Java面试题,非常齐全就转发来了。希望可以帮到看到这篇文章的你!由于文章篇幅过长,十三章节到十九章节的会在之后的文章中更新出来。或者可以直接到原文中看。谢谢 文章目录一、Java 基础1.JDK 和 JRE 有什么区别转载 2020-08-13 16:10:36 · 916 阅读 · 1 评论 -
Java基础面试题大全
面试的过程中基础是很重要的一环,在此总结了一下我在面试过程中遇到的基础性问题,希望能在你们面试的过中锦上添花。1.jdk jre jvm三者之间的关系java开发者工具包 java运行环境 java虚拟机jdk>>jre>>jvmJDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm原创 2020-08-03 17:25:37 · 4032 阅读 · 11 评论 -
java当中的集合类或集合框架
collection接口是集合类的顶层接口,collections是工具类collection有两个子接口,一个list接口,一个是set接口list接口有序可重复,set接口无序不可重复list接口常用的实现类有arrayList 基于数组实现的linkedList 基于链表实现的 区别参考数组和链表区别vector 基于数组实现的,但是是线程安全的(synchronized) 线程安全:指多个线程在执行同一段代码的时候采用加锁机制,使每次的执行结果和单线程执行的结果都是一样的,不原创 2020-07-31 10:18:08 · 178 阅读 · 1 评论 -
ConcurrentModificationException出现原因及解决方式
异常分析相信写过一些Java代码的人都遇到过这个异常,看下列代码import java.util.List;import java.util.ArrayList; public class Test{ public static void main(String[] args){ List<String> list = new ArrayList<>(); list.add("123"); list.add("456");原创 2020-07-30 14:24:53 · 2204 阅读 · 3 评论 -
方法的重写与重载有什么区别
重载是在同一个类中,方法名相同,参数列表不同的方法重写是子类继承父类,返回值类型和参数列表与被重写的方法相同重写方法的规则:1)、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。2)、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。3)、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)4)、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常原创 2020-07-30 14:15:55 · 337 阅读 · 0 评论 -
Java 8 Lambda 表达式
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }以下是lambda表达式的重要特征:**可选类型声明**:不需要声明参数类型,编译器可以统一识别参数值。**可选的参数原创 2020-07-29 15:40:15 · 123 阅读 · 0 评论 -
JDK1.8、JAVA8新特性
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。新特性Java8 新增了非常多的特性,我们主要讨论以下几个:Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方原创 2020-07-29 15:16:08 · 1033 阅读 · 0 评论 -
三大修饰符详细解释。
一.abstract 抽象的1.方法被abstract所修饰的方法 被称为抽象方法a)语法: abstract放置在方法的返回值类型之前 并且与访问权限修饰符顺序无要求 抽象方法没有方法的实现部分 连{}都没有 public abstract double area(); public abstract double girth();2.类站在语法的角度:被 abstract所修饰的类被称为抽象类 站在使用的角度:只能被声明 不能被实例化的类 被称为抽象类a)语法: abstrac原创 2020-07-28 15:11:47 · 678 阅读 · 0 评论 -
类加载详解,类加载过程
a)类加载:JVM在第一次使用某个类时 会通过CLASSPATH所配的路径 将该类所对应的.class文件中类的相关信息(属性/方法/静态成员/父类信息...)读取到JVM的内存中,并保存起来。b)类加载的过程:加载----链接(验证+准备+解析)-----初始化----使用----卸载加载:将.class中的信息读取到内存验证:验证该.class是否是合法的.class文件 验证相应的访问权限修饰符 准备:给类变量分配空间 给类变量赋默认值 重要解析:引用替换初始化:给类变量进行初始化原创 2020-07-28 12:02:58 · 274 阅读 · 0 评论 -
为什么使用内部类?内部类问题详解!
1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:(1)、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。(2)、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。(3)、创建内部类对象的时刻并不依赖于外围类对象的创建。原创 2020-07-27 17:40:33 · 1626 阅读 · 0 评论 -
java中的数据类型分类:
基本数据类型(或叫做原生类、内置类型)8种:整数:byte,short,int,long(默认是int类型)浮点类型: float,double(默认是double类型)字符类型:char布尔类型:boolean引用数据类型3种:数组,类,接口其中,基本数据类型之间除了boolean,其他数据类型之间可以任意的相互转换(强制转化或默认转换),这个与c++中有点区别。个人认为c定义数组的方式是正确的,只不过少了一个分号。java中定义数组有两种方式,一种是int[ ] number,一种原创 2020-07-27 17:29:14 · 111 阅读 · 0 评论