Java常问的面试题

栈长整理了 2021 年最新、最全的 Java 面试题,题目涉及 Java 基础、集合、多线程、IO、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等。

面向对象和面向过程的区别

面向过程

优点 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点: 没有面向对象易维护、易复用、易扩展

面向对象

优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点: 性能比面向过程低

Java 基础

1、面向对象编程有哪些特征?

抽象:就是把现实生活中的某一类东西提取出来,用程序代码表示,我们通常叫做类或者接口。抽象包括两个方面:一个是数据抽象,一个是过程抽象。数据抽象也就是对象的属性。过程抽象是对象的行为特征。
封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行封装隐藏。封装分为属性的封装和方法的封装。
继承:是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于抽取多类事物的共性。
多态:允许不同类的对象对同一消息做出响应。方法的重载、类的覆盖正体现了多态。

2、JDK 与 JRE、JVM 的区别是什么?

JRE就是java运行时环境,包括了jvm和其它一些java核心api,任何一台电脑,只有安装了jre才可以运行java程序.
JDK 是java开发工具包,在jre的基础上增加了编译器及其他一些开发工具。
JVM (java虚拟机)Java跨平台性就是通过在不同的平台安装对应JVM来实现的。
三者之间的关系:
JDK里包含有JRE
JRE里包含有JVM
JVM是不能单独安装的
如果只运行java程序:可单独安装JRE
如果开发java程序:必须安装JDK

3、Java 有哪几种基本数据类型?

  • 4种整型: byte 、short、int、long
  • 2种浮点型: float、double
  • 1种布尔型:boolean
  • 1种字符型: chart

4、== 和 equals 比较有什么区别?

Object类中的equals方法和==是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和 ==不同。对于基础数据类型来说,没有重写equals方法,故两者是一样。所以通常情况下
== 比较的是地址是否一致
equals 比较的是内容是否一致

5、public,private,protected,默认的区别?

private只有在本类中才能访问;
public在任何地方都能访问;
protected在同包内的类及包外的子类能访问;
默认不写在同包内能访问。

6、this 和 super 有什么区别?

this 代表当前类对象
它主要就是区分对象的成员变量还是方法的形参,当成员变量和方法的形参相同名字的时候,就会用覆盖成员变量。
super 代表父类对象
super可以用来访问父类的方法和成员变量。当子类的方法或者成员变量与父类有相同的名字时也会时覆盖父类的方法和成员变量,想要访问父类的方法或成员变量只能通过super关键字来访问。

7、short s1 = 1; s1 += 1;有错吗?

对于short s1=1;s1+=1;来说,+=是Java语言规定的运算符,Java会对它进行特殊处理—强制类型转化(short s1 = (short)(s1+1)),因此可以正确编译。

8、short s1 = 1; s1 = s1 + 1;有错吗?

对于short s1 = 1;s1=s1+1; 来说,在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换错误

9、float n = 1.8 有错吗?

对于浮点型的数据java中默认为double类型,即1.8是double类型 而n为float类型 ,将double类型数据赋予给float类型会出现类型转换错误

10、i++ 和 ++i 的区别?

本性只做自增运算,两者没有任何区别,若有赋值运算,则i++先赋值后自增1,++i则是先运算出结果后赋值给其它变量

11、while 和 do while 有啥区别?

无论条件是否成立do while至少执行一次循环体代码

12、如何跳出 Java 中的循环?

使用java关键字 break,return

13、如何跳出 Java 中的多层嵌套循环?

在循环语句外前面定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出循环。
如:

ok:

for (int i = 0; i < 10; i++) {

{

for (int j = 0; j < 10; j++) {

break ok;

}

}

}

14、& 和 && 的区别?

&运算符有两种用法:(1)按位与;(2)逻辑与。

&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大 的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。

15、2 * 8 最有效率的计算方法是什么?

2<<3

CPU直接支持位运算,效率最高。一个数左移n位,相当于乘以了2的几次方。右移则相当于除法
引申:如何快速求取一个整数的7倍?
(x<< 3) - x注意:由于-的优先级高于<<,所以不能去掉括号,否则结果不正确

16、数组有没有 length 方法?String 呢?

数组没有length方法但是又length属性,String 又length方法

17、怎么理解值传递和引用传递?

值传递
在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。

引用传递
引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。

18、Java 到底是值传递还是引用传递?

Java 中的传递,是值传递,而这个值,实际上是对象的引用。

19、一个 “.java” 源文件的类有什么限制?

一个java源文件可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

20、Java 中的注释有哪些写法?

  • 作者注释
  • 单行注释
  • 多行注释

21、static 关键字有什么用?

static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法。

22、static 变量和普通变量的区别?

  • static局部变量只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在。普通局部变量,只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。
  • 静态局部变量在静态存储区分配空间,局部变量在栈里分配空间。

23、static 可以修饰局部变量么?

不可以,除非该方法中也是静态方法

24、final 关键字有哪些用法?

  • 用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值 (常量) ;
  • 用来修饰方法参数,表示在变量的生存期中它的值不能被改变;
  • 修饰方法,表示该方法无法被重写;
  • 修饰类,表示该类无法被继承。

25、final、finally、finalize 有什么区别?

  • final修饰数据 表示常量
  • final修饰方法表示不可被重写
  • final 修饰类表示不可被继承
  • finally 表示某一段重要的代码一定会被执行,如io时关闭io流 、关闭unlock 锁
  • finalize是基础类java.lang.Object的一个方法,它的设计目的是为了保证对象在垃圾回收之前完成特定资源的回收

26、void 和 Void 有什么区别?

  • void用于无返回值的方法定义。

  • Void是void的包装方法,和其他基础类型的包装方法不同是Void不能被实例化,Void还可用于一直返回null的方法或者返回null的泛型。

  • 代码如
    在这里插入图片描述

27、为什么 byte 取值范围为 -128~127?

byte型占一个字节,共八位。

一共可以表示的数为2^8=256个(每一位可以为0或1),正数最大值为127,即01111111(注:负数首位为1,故正数最高位不可能为1)。
因此包括0在内正数共有128个,因此负数个数为256-128=128,即负数最小值为-128,为10000000。

28、char 类型可以存储中文汉字吗?

可以的,Java中char采用的是Unicode编码集,占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的。

29、重载和重写有什么区别?

重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。
重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类;如果父类方法访问修饰符为private则子类中就不是重写。

30、构造器可以被重写和重载吗?

构造器是不能被继承的,因为每个类的类名都不相同,而构造器名称与类名相同,所以根本谈不上继承。又由于构造器不能继承,所以就不能被重写。但是,在同一个类中,构造器是可以被重载的。

31、main 方法可以被重写和重载吗?

main方法能被完美重载,但是在JVM中有特殊能力的只有public static void main(String arg[]){},不能被重写(覆盖)

32、私有方法能被重载或者重写吗?

能重载不可重写

33、Java 中的断言(assert)是什么?

assert(断言)在软件开发中是一种常用的调试方式,assert就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告并且退出。一般来说,assertion用于保证程序最基本、关键的正确性。assert检查通常在开发和测试时开启。为了提高性能,在软件发布后,assert检查通常是关闭的。


//如果表达式为false,则抛出java.lang.AssertionError异常
assert expression;

//如果表达式为false,则抛出java.lang.AssertionError异常并输出错误信息errormessage
assert expressiion : message;

在spring中也为我们提供了断言的工具类
Assert 方便我们进行断言测试

常用断言

Assert.state(expression, "message");

Assert.state(expression);

34、Java 异常有哪些分类?

异常类分两大类型:Error类代表了编译和系统的错误,不允许捕获;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行异常类Runtime_Exception和非运行异常类Non_RuntimeException这两个直接的子类。
常见异常:

  • 算术异常类:ArithmeticExecption

  • 空指针异常类:NullPointerException

  • 类型强制转换异常:ClassCastException

  • 数组负下标异常:NegativeArrayException

  • 数组下标越界异常:ArrayIndexOutOfBoundsException

  • 违背安全原则异常:SecturityException

  • 文件已结束异常:EOFException

  • 文件未找到异常:FileNotFoundException

  • 字符串转换为数字异常:NumberFormatException

  • 操作数据库异常:SQLException

  • 输入输出异常:IOException

35、Error 和 Exception 有什么区别?

  • Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。

  • Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。所以这种异常不可能抓取到,比如OutOfMemoryError、NoClassDefFoundError等。

36、Java 中常见的异常有哪些?

  • 算术异常类:ArithmeticExecption

  • 空指针异常类:NullPointerException

  • 类型强制转换异常:ClassCastException

  • 数组负下标异常:NegativeArrayException

  • 数组下标越界异常:ArrayIndexOutOfBoundsException

  • 违背安全原则异常:SecturityException

  • 文件已结束异常:EOFException

  • 文件未找到异常:FileNotFoundException

  • 字符串转换为数字异常:NumberFormatException

  • 操作数据库异常:SQLException

  • 输入输出异常:IOException

37、Java 中常见的运行时异常有哪些?

  • ArithmeticException - 算术运算中,被0除或模除

  • ArrayIndexOutOfBoundsException - 数组越界访问

  • ArrayStoreException - 数据存储异常,写数组操作时,对象或数据类型不兼容

  • ClassCastException - 类型转换异常

  • IllegalArgumentException - 方法的参数无效

  • IllegalThreadStateException - 试图非法改变线程状态,比方说试图启动一已经运行的线程

  • NullPointerException - 试图访问一空对象的变量、方法或空数组的元素

  • NumberFormatException - 数据格式异常,试图把一字符串非法转换成数值(或相反)

  • SecurityException - 如果Applet试图执行一被WWW浏览器安全设置所禁止的操作

  • OutOfMemoryException - 内存不足,通常发生于创建对象之时

  • NoClassDefFoundException - JAVA运行时系统找不到所引用的类

38、运行时异常与受检查异常有什么区别?

Exception又分为检查性异常和非检查性异常。两个根本的区别在于,检查性异常 必须在编写代码时,使用try catch捕获(比如:IOException异常)。非检查性异常 在代码编写使,可以忽略捕获操作(比如:ArrayIndexOutOfBoundsException),这种异常是在代码编写或者使用过程中通过规范可以避免发生的。

39、什么时候会发生空指针异常?

空指针异常就是我们在对空对象进行的任何操作都会报空指针异常。
如:调用 null 对象的实例方法

40、你知道有哪些避免空指针的方法?

  • 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象。
  • 当valueOf()和toString()返回相同的结果时,使用valueOf()
  • 使用annotation@NotNull 和 @Nullable
  • 定义数据库中的字段是否可为空。

41、throw 和 throws 的区别?

  • throw:
    表示方法内抛出某种异常对象
  • throws:
    方法的定义上使用 throws 表示这个方法可能抛出某种异常需要由方法的调用者进行异常处理

42、try-catch-finally 中哪个部分可以省略?

finally部分可以省略

43、try 里面 return,finally还会执行吗?

try里面使用了return,也依然会执行finally。但是finally无法改变return的值。

44、int 和 Integer 有什么区别?

  • Integer是int 的封装类
  • 默认值不同 int 默认为0 Integer默认为null
  • Integer是引用类型、int是基本数据类型
  • Integer封装了一些常用方法

45、什么是包装类型?有什么用?

46、什么是自动装厢、拆厢?
47、你怎么理解 Java 中的强制类型转换?
48、你怎么理解 Java 中的自动类型转换?
49、你怎么理解 Java 中的类型提升?

50、switch 是否能用在 long 上?

在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型, expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

51、switch 是否能用在 String 上?

从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

52、switch case 支持哪几种数据类型?

  • 基本数据类型:byte, short, char, int

  • 包装数据类型:Byte, Short, Character, Integer

  • 枚举类型:Enum

  • 字符串类型:String(Jdk 7+ 开始支持)

53、String 属于基础的数据类型吗?

String 属于引用数据类型

54、String 类的常用方法都有那些?

1、和长度有关:

int length() 得到一个字符串的字符个数
2、和数组有关:

byte[] getByte() 将一个字符串转换成字节数组
char[] toCharArray() 将一个字符串转换成字符数组
String split(String) 将一个字符串按照指定内容劈开
3、和判断有关:

boolean equals() 判断两个字符串的内容是否一样
boolean equalsIsIgnoreCase(String) 忽略太小写的比较两个字符串的内容是否一样
boolean contains(String) 判断一个字符串里面是否包含指定的内容
boolean startsWith(String) 判断一个字符串是否以指定的内容开头
boolean endsWith(String) 判断一个字符串是否以指定的内容结尾
4、和改变内容有关:

String toUpperCase() 将一个字符串全部转换成大写
String toLowerCase() 将一个字符串全部转换成小写
String replace(String,String) 将某个内容全部替换成指定内容
String replaceAll(String,String) 将某个内容全部替换成指定内容,支持正则
String repalceFirst(String,String) 将第一次出现的某个内容替换成指定的内容
String substring(int) 从指定下标开始一直截取到字符串的最后
String substring(int,int) 从下标x截取到下标y-1对应的元素
String trim() 去除一个字符串的前后空格
5、和位置有关:

char charAt(int) 得到指定下标位置对应的字符
int indexOf(String) 得到指定内容第一次出现的下标
int lastIndexOf(String) 得到指定内容最后一次出现的下标

55、String 的底层实现是怎样的?

String底层是一个不可变字符串,使用连接符的时候,实际上是经过了StringBuilder的优化处理的。并不是在原来的String对象中做追加

56、String 是可变的吗?为什么?


public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    
 
    private final char value[];
 
     private int hash; // Default to 0
 
    
    private static final long serialVersionUID = -6849794470754667710L;
    
    ......此处省略N多代码
  
    public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }
 
}

由此可以看出String 是被final 修饰的类,所以不可改变其状态

57、String 类可以被继承吗?

String 是被final 修饰的类,不可被继承

58、String 真的是不可变的吗?

59、String 字符串如何进行反转?

可以调用String类提供的方法实现,也可自己通过字符数组实现

60、String 字符串如何实现编码转换?

61、String 有没有长度限制?是多少?

字符串有长度限制,在编译期,要求字符串常量池中的常量不能超过65535,并且在javac执行过程中控制了最大值为65534。
在运行期,长度不能超过Int的范围,否则会抛异常。

62、为什么不能用 + 拼接字符串?

1、在循环和多个表达式中不能 +,频繁创建 SB 性能影响;

2、在单个表达式中可以用 +,编译器直接做了优化;

63、StringBuffer 和 StringBuilder 的区别?

1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的

2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,

而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。

3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全、而StringBuffer则每次都需要判断锁,效率相对更低

64、StringJoiner 有什么用?

平时我们进行字符串拼接时,最常用的就是StringBuilder和StringBuffer了,但是在JDK 1.8+中,引入了一个字符串拼接神器:StringJoiner,其中包含了许多分隔符,如果拼接的字符串非常多,代码就会显得非常臃肿。但是在JDK 1.8+有了StringJoiner,这件事就变得很简单了,分隔符全部都交给了StringJoiner处理

65、Java 所有类的祖先类是哪个?

Object 类

66、Object 类有哪些常用的方法?

1、 getClass():获取类的class对象。
2、 hashCode:获取对象的hashCode值
3、 equals():比较对象是否相等,比较的是值和地址,子类可重写以自定义。
4、 clone():克隆方法。
5、 toString():如果没有重写,应用对象将打印的是地址值。
6、 notify():随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
7、 notifyall():解除所有那些在该对象上调用wait方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
8、 wait():导致线程进入等待状态,直到它被其他线程通过notify()或者notifyAll唤醒。该方法只能在同步方法中调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
9、 finalize():对象回收时调用

67、普通类和抽象类有什么区别?

  • 抽象类不能被实例化
  • 抽象类可以有抽象方法,抽象方法只需申明,无需实现
    含有抽象方法的类必须申明为抽象类
  • 抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类
  • 抽象方法不能被声明为静态
  • 抽象方法不能用private修饰
  • 抽象方法不能用final修饰

68、静态内部类和普通内部类有什么区别?

69、静态方法可以直接调用非静态方法吗?

不可以

70、静态变量和实例变量有什么区别?
71、内部类可以访问其外部类的成员吗?

72、接口和抽象类有什么区别?

1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有。
3.抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public,并且默认为
public abstract类型。
4.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型。
5.一个类可以实现多个接口,但只能继承一个抽象类

73、接口是否可以继承接口?

可以,接口与接口是多继承关系

74、接口里面可以写方法实现吗?

不可以,接口中的方法是抽象方法,没有方法体

75、抽象类必须要有抽象方法吗?

不是必须的

76、抽象类能使用 final 修饰吗?

不能,抽象类的使用需要被继承

77、抽象类是否可以继承具体类?

抽象类可以实现接口,抽象类可以继承具体类。抽象类中可以有静态的方法

78、抽象类是否可以实现接口?

抽象类可以实现接口,

79、怎么查看一个 Java 类的字节码?

80、Java 中的 UUID 是什么?

UUID 是 通用唯一识别码,是一种软件建构的标准

81、Java 类初始化顺序是怎样的?

它们执行的顺序如下:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数 。

82、为什么成员变量命名不建议用 isXXX?

83、hashCode 有什么用?

主要是用来快速查找、定位的

84、hashCode 和 identityHashCode 的区别?

85、什么是 hash 冲突?

86、equals 和 hashCode 的区别和联系?

87、两个对象 equals 相等, hashCode 也相等么?

一定相等

88、两个对象 hashCode 相等,equals 也相等么?

不一定

89、为什么重写 equals 就要重写 hashCode 方法?

保证是统一对象:如果重写了equals方法,而没有重写hashcode方法,会出现equals相等的对象,hashcode不相等的情况,重写hashcode方法就是为了避免这种情况的出现。

90、Java 常用的元注解有哪些?

91、Java 泛型中的 T、R、K、V、E 分别指什么?

所谓的这些T、E、K、V、?全都属于java泛型的通配符,其实换成任何字母结果都是一样的,不过约定俗称按照一定的含义就选用这几个字母进行表示了。

E - Element (在集合中使用,因为集合中存放的是元素) Collection
T - Type(Java 类) public T Test1(T t){}
K - Key(键) Map<K,V>
V - Value(值)
N - Number(数值类型)List
? - 表示不确定的java类型 List<? super Integer> intgerList;

92、Java 金额计算怎么避免精通丢失?

在double,float类型之间做计算经常会出现精度丢失的情况,用BigDecimal类进行计算就不会出现这种精度丢失的情况了

93、Java 语法糖是什么意思?

94、transient 关键字有什么用?
95、如何实现对象克隆?
96、对象克隆浅拷贝和深拷贝的区别?
97、Java 反射机制有什么用?
98、Java 反射机制的优缺点?
99、Java 反射机制 Class 类有哪些常用方法?
100、Java 反射可以访问私有方法吗?
101、Java 反射可以访问私有变量吗?

102、Class.forName 和 ClassLoader 的区别?

103、什么是宏变量和宏替换?
104、什么是逃逸分析?
105、什么是伪共享?有什么解决方案?
106、Java 有没有 goto 关键字?
107、Java 中有没有指针的概念?
108、Java 中的 classpath 环境变量作用?

109、Math.round(1.5) 等于多少?

2

110、Math.round(-1.5) 等于多少?

-1

111、Java 8 都新增了哪些新特性?

(1)Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda 表达式可以使代码变的更加简洁紧凑。

(2) 方法引用通过方法的名字来指向一个方法。方法引用可以使语言的构造更紧凑简洁,减少冗余代码。方法引用使用一对冒号 :: 。

(3) 函数式接口(FunctionalInterface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda表达式。函数式接口可以现有的函数友好地支持 lambda。

(4) Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个default关键字即可实现默认方法。

(5) Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。

(6) Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。

(7) jjs是个基于Nashorn引擎的命令行工具。它接受一些JavaScript源代码为参数,并且执行这些源代码。

(8) Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。

(9) 在Java8中,Base64编码已经成为Java类库的标准。Java 8 内置了 Base64 编码的编码器和解码器。

112、Java 8 中的 Lambda 表达式有啥用?

113、Java 8 中的 Optional 类有什么用?

114、Java 8 中的 Stream 有啥用?
115、Java 8 中的@Repeatable 注解有什么用?
116、Java 8 中的方法引用是指什么?
117、Java 8 中的函数式编程怎么用?
118、怎么创建一个 Stream 流?
119、Oracle JDK 和 OpenJDK 有啥区别?

Java 集合

1、说说常见的集合有哪些?
2、哪些集合类可对元素的随机访问?
3、Comparable 和 Comparator 接口的区别?
4、Collection 和 Collections 的区别?
5、Enumeration 和 Iterator 接口的区别?
6、集合使用泛型有什么优点?

7、List、Set、Map 之间的区别是什么?

  • List中的元素,有序、可重复、可为空;

  • Set中的元素,无序、不重复、只有一个空元素;

  • Map中的元素,无序、键不重,值可重、可一个空键、多可空值;

8、为什么 Map 接口不继承 Collection 接口?

Map和List、set不同,Map放的是键值对,list、set放的是一个个的对象。说到底是因为数据结构不同,数据结构不同,操作就不一样,所以接口是分开的。还是接口分离原则

9、常用的线程安全的 Map 有哪些?

10、HashMap 与 Hashtable 的区别?
11、HashMap 和 TreeMap 怎么选?

12、HashMap 的数据结构是什么?

HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
13、HashMap 在 JDK 8 中有哪些改变?
14、HashMap 的 put 方法逻辑?
15、HashMap 的 get 方法逻辑?

16、HashMap 是线程安全的吗?

不是
17、HashMap 是怎么解决 hash 冲突的?
18、HashMap 是怎么扩容的?
19、HashMap 如何实现同步?
20、HashMap 中的负载因子是什么?
21、Hashtable 为什么不叫 HashTable?
22、ConcurrentHashMap 的数据结构?

23、ArrayList 是线程安全的么?

不是
持续更新中。。。

24、常用的线程安全的 List 集合有哪些?
25、循环删除 List 集合可能会发生什么异常?
26、ArrayList 和 LinkedList 的区别?
27、ArrayList 和 Vector 的区别?
28、什么是 CopyOnWriteArrayList?
29、什么是 fail-safe?
30、什么是 fail-fast?
31、fail-fast 与 fail-safe 有什么区别?
32、HashSet 的底层实现原理是什么?
33、怎么确保一个集合不能被修改?

JVM

1、Java 为什么能一次编写,处处运行?
2、JVM 是什么?
3、HotSpot 是什么?
4、JVM 内存区域分类哪些?
5、堆和栈区别是什么?
6、JVM 哪块内存区别不会发生内存溢出?
7、什么情况下会发生栈内存溢出?
8、对象都是在堆上分配的吗?
9、你怎么理解强、软、弱、虚引用?
10、常用的 JVM 参数有哪些?
11、Java 8 中的内存结构有什么变化?
12、Java 8 中的永久代为什么被移除了?
13、什么是类加载器?
14、类加载器的分类及作用?
15、什么是双亲委派模型?
16、为什么要打破双亲委派模型?
17、可以自定义一个 java.lang.String 吗?
18、什么是 JVM 内存模型?
19、JVM 内存模型和 JVM 内存结构的区别?
20、什么是指令重排序?
21、内存屏障是什么?
22、什么是 Happens-Before 原则?
23、GC 是什么?为什么需要 GC?
24、什么是 MinorGC 和 FullGC?
25、一次完整的 GC 流程是怎样的?
26、JVM 如何判断一个对象可被回收?
27、常用的垃圾收集器有哪些?
28、常用的垃圾回收算法有哪些?
29、什么是内存泄漏?
30、为什么会发生内存泄漏?
31、如何防止内存泄漏?
32、什么是直接内存?
33、直接内存有什么用?
34、怎样访问直接内存?
35、常用的 JVM 调优命令有哪些?
36、常用的 JVM 问题定位工具有哪些?
37、常用的主流 JVM 虚拟机都有哪些?

多线程(并发编程)

1、进程和线程的区别?
2、什么是原子性、可见性、有序性?
3、为什么要使用多线程?
4、创建线程有哪几种方式?
5、什么是守护线程?
6、线程的状态有哪几种?怎么流转的?
7、线程的优先级有什么用?
8、我们常说的 JUC 是指什么?
9、i++ 是线程安全的吗?
10、join 方法有什么用?什么原理?
11、如何让一个线程休眠?
12、启动一个线程是用 start 还是 run 方法?
13、start 和 run 方法有什么区别?
14、sleep 和 wait 方法有什么区别?
15、Thread.yield 方法有什么用?
16、yield 和 sleep 有什么区别?
17、怎么理解 Java 中的线程中断?
18、你怎么理解多线程分组?
19、你怎么理解 wait、notify、notifyAll?
20、同步和异步的区别?
21、什么是死锁?
22、怎么避免死锁?
23、什么是活锁?
24、什么是无锁?
25、什么是线程饥饿?
26、什么是 CAS?
27、阻塞和非阻塞的区别?
28、并发和并行的区别?
29、为什么不推荐使用 stop 停止线程?
30、如何优雅地终止一个线程?
31、Synchronized 同步锁有哪几种用法?
32、什么是重入锁(ReentrantLock)?
33、Synchronized 与 ReentrantLock 的区别?
34、synchronized 锁的是什么?
35、什么是读写锁?
36、公平锁和非公平锁的区别?
37、有哪些锁优化的方式?
38、什么是偏向锁?
39、什么是轻量级锁?
40、什么是自旋锁?
41、什么是锁消除?
42、什么是锁粗化?
43、什么是重量级锁?
44、什么是线程池?
45、使用线程池有什么好处?
46、创建一个线程池有哪些核心参数?
47、线程池的工作流程是怎样的?
48、Java 里面有哪些内置的线程池?
49、为什么阿里不让用 Executors 创建线程池?
50、线程池的拒绝策略有哪几种?
51、如何提交一个线程到线程池?
52、线程池 submit 和 execute 有什么区别?
53、如何查看线程池的运行状态?
54、如何设置线程池的大小?
55、如何关闭线程池?
56、AQS 是什么?
57、AQS 的底层原理是什么?
58、Java 中的 Fork Join 框架有什么用?
59、ThreadLocal 有什么用?
60、ThreadLocal 有什么副作用?
61、volatile 关键字有什么用?
62、volatile 有哪些应用场景?
63、CyclicBarrier 有什么用?
64、CountDownLatch 有什么用?
65、CountDownLatch 与 CyclicBarrier 的区别?
66、Semaphore 有什么用?
67、Exchanger 有什么用?
68、LockSupport 有什么用?
69、Java 中原子操作的类有哪些?
70、什么是 ABA 问题?怎么解决?
71、Java 并发容器,你知道几个?
72、什么是阻塞队列?
73、阻塞队列有哪些常用的应用场景?
74、Java 中的阻塞的队列有哪些?
75、什么是幂等性?
IO(网络编程)
1、什么是 IO?
2、常用的 IO 类有哪些?
3、你怎么理解 IO、BIO、NIO、AIO?
4、什么是比特(Bit)、字节(Byte)、字符(Char)?
5、Java 有哪几种类型的流?
6、字节流和字符流的区别?
7、Java 序列化是什么?
8、怎么序列化一个对象?
9、Java 有哪两种序列化方式?
10、怎么控制类中的某些变量不被序列化?
11、静态变量能不能被序列化?
12、OSI 的七层模型都有哪些?
13、tcp 和 udp 协议的区别?
14、tcp 为什么要三次握手,两次不行吗?
Web 编程
1、http 和 https 的区别?
2、get 和 post 的区别?
3、forward 和 redirect 的区别?
4、Servlet 是什么?
5、Servlet 的生命周期是怎样的?
6、Servlet 有哪些核心的方法?
7、Servlet 是线程安全的么?
8、Servlet 支持异步处理吗?
9、Servlet 是单例还是多例?
10、Servlet 和 JSP 有什么区别和联系?
11、JSP 是什么?
12、JSP 有哪些内置对象?
13、JSP 有哪些基本动作?
14、JSP 有哪几种作用域?
15、JSP 有哪些常用指令?
16、如何实现隐藏的表单域?
17、AJAX 应用和传统 Web 应用有什么不同?
18、怎么优化 Web 前端的性能?
19、什么是 MVC?分别代表什么?
20、拦截器和过滤器的区别?
21、Cookie 和 Session 的区别?
22、什么是跨域?有哪些解决方案?

Spring

1、Spring 框架是什么?
2、Spring 常用的注解有哪些?
3、Spring 框架的好处有哪些?
4、Spring 由哪些主要模块组成?
5、Spring IOC 容器是什么?
6、Spring IOC 的好处有哪些?
7、BeanFactory 和 ApplicationContext 的区别?
8、Spring 依赖注入是什么?
9、Spring 依赖注入有哪几种方式?
10、Spring bean 支持哪几种作用域?
11、Spring bean 生命周期是怎样的?
12、Spring bean 为什么默认为单例?
13、Spring bean 是线程安全的吗?
14、Spring 这几个注解的区别?
15、Spring @Autowired 注解有什么用?
16、Spring @Required 注解有什么用?
17、Spring @Qualifier 注解有什么用?
18、Spring 怎么注入 Java 集合类型?
19、Spring 装配是指什么?
20、Spring 自动装配有哪些方式?
21、Spring 自动装配有什么局限性?
22、Spring AOP 是什么?
23、Spring AOP 有什么作用?
24、Spring AOP 有哪些实现方式?
25、Spring AOP 和 AspectJ AOP 的区别?
26、Spring 支持哪些事务管理类型?
27、Spring 框架用到了哪些设计模式?
28、Spring MVC 框架有什么用?
29、Spring MVC DispatcherServlet 的工作流程?
30、Spring MVC 常用的注解有哪些?
31、Spring MVC @RequestMapping 有啥用?

Spring Boot

1、Spring Boot 是什么?
2、Spring Boot 有哪些优缺点?
3、Spring Boot 框架的核心思想是什么?
4、Spring Boot 有哪些核心模块?
5、Spring Boot 的核心配置文件有哪些?
6、Spring Boot 的配置文件有哪几种格式?
7、Spring Boot 的核心注解是哪个?
8、SpringBootApplication 注解包含哪几个注解?
9、Spring Boot 最核心的注解有哪些?
10、Spring Boot 怎么根据指定条件注册 bean?
11、Spring Boot 有哪些条件注解?
12、Spring Boot 有哪两种方式集成?
13、Spring Boot 需要独立的容器运行吗?
14、Spring Boot 中的默认内嵌容器是?
15、Spring Boot 中的内嵌容器可以替换成别的么?
16、Spring Boot 自动配置原理是什么?
17、Spring Boot 开启自动配置的注解是?
18、Spring Boot 自动配置的类在哪注册?
19、Spring Boot 自动配置报告怎么查看?
20、Spring Boot 怎么排除某些自动配置?
21、Spring Boot 怎么开启和关闭自动配置?
22、Spring Boot 的目录结构是怎样的?
23、Spring Boot 中的 Starters 是什么?
24、Spring Boot Starters 有什么命名规范?
25、Spring Boot Starters 官方有哪些分类?
26、Spring Boot 怎么自定义一个 Starter?
27、Spring Boot 有哪几种运行方式?
28、Spring Boot 支持哪些应用打包方式?
29、Spring Boot 应用怎么 Debug 调试?
30、Spring Boot 可以配置随机端口吗?
31、Spring Boot 怎么打一个可执行 Jar 包?
32、Spring Boot 支持 https 配置吗?
33、Spring Boot 怎么注册 Servlet?
34、Spring Boot Runner 是什么?
35、Spring Boot 支持哪些模板引擎?
36、Spring Boot 支持 Velocity 模板引擎吗?
37、Spring Boot 怎么做单元测试?
38、Spring Boot 支持哪些日志框架?
39、Spring Boot 有哪几种热部署方式?
40、Spring Boot 配置加载顺序是怎样的?
41、Spring Boot 如何定义不同环境配置?
42、Spring Boot 怎么兼容老 Spring 项目?
43、Spring Boot 应用有哪些保护手法?
44、Spring Boot 怎么注册事件监听器?
45、Spring Boot 应用如何监控和健康检查?
46、Spring Boot 怎么解决跨域问题?
47、Spring Boot 2.X 有什么新特性?
48、Spring Boot 怎么定制启动图案?
49、Spring Boot 怎么关闭启动图案?
50、Spring Boot 的默认编码是?
51、Spring Boot 怎么指定编码格式?
52、Spring Boot 应用如何优雅关闭?
Spring Cloud
1、Spring Cloud 是什么?
2、Spring Cloud 和 Spring Boot 的关系?
3、Spring Cloud 有哪些重要的组件?
4、Spring Cloud 和 Dubbo 的区别?
5、Spring Cloud 版本号怎么理解?
6、Spring Cloud Eureka 保护机制是什么?
7、Spring Cloud 注册中心有哪些实现方案?
8、Spring Cloud 配置中心有哪些实现方案?
9、Spring Cloud 如何保证微服务调用安全性?
10、Spring Cloud 中的 Ribbon 是什么?
11、Spring Cloud 中的 Feign 是什么?
12、Spring Cloud Feign 和 ribbon 的区别?
13、Spring Cloud Gateway VS Zuul 怎么选?
14、Spring Cloud for Alibaba 是什么?

Dubbo

1、Dubbo 是什么框架?
2、为什么要用 Dubbo?
3、Dubbo 里面有哪几种节点角色?
4、Dubbo 停止维护了吗?
5、Dubbo 必须依赖的包有哪些?
6、Dubbo 支持哪些注册中心?推荐哪种?
7、Dubbo 内置了哪几种服务容器?
8、Dubbo 需要 Web 容器吗?
9、Dubbo 的服务注册和发现流程?
10、Dubbo 服务暴露的过程?
11、Dubbo 有哪几种配置方式?
12、Dubbo 核心的配置有哪些?
13、Provider 可以配置 Consumer 哪些属性?
14、Dubbo 启动时依赖的服务不可用会怎样?
15、Dubbo 都支持什么协议,推荐用哪种?
16、Dubbo 支持什么通信框架?默认哪种?
17、Dubbo 支持的序列化框架有哪些?
18、Dubbo 有哪些集群容错方案,默认哪种?
19、Dubbo 有哪些负载均衡策略,默认哪种?
20、有多个同名服务时,如果连接指定的服务?
21、Dubbo 支持服务多协议吗?
22、Dubbo 服务上线怎么兼容旧版本?
23、Dubbo 一个服务接口有多种实现怎么区分?
24、Dubbo 可以对结果进行缓存吗?
25、Dubbo 服务之间的调用是阻塞的吗?
26、Dubbo 支持分布式事务吗?
27、Dubbo telnet 命令能做什么?
28、Dubbo 支持服务降级吗?
29、Dubbo 如何优雅停机?
30、Dubbo 服务提供者失效自动下线是什么原理?
31、Dubbo 服务调用链过长如何解决?
32、Duboo 服务读写容错策略怎么做?
33、Dubbo 的管理控制台能做什么?
34、Dubbo 能集成 Spring Boot 吗?
35、Dubbo 使用过程中都遇到了些什么问题?
36、Dubbo 的源码你有读过吗?
37、Dubbo 和 Spring Cloud 哪个好?
38、Dubbo 你们的推荐用法有哪些?
39、你怎么理解 Dubbo SPI?
40、Dubbo 之外,你还了解别的 RPC 框架吗?
41、Dubbox 是什么?和 Dubbo 有啥区别?

MySQL(数据库)

1、主键、外键有什么区别?
2、怎么理解三范式和反范式?
3、范式和反范式的优缺点?
4、什么是事务?
5、事务有哪几个特性?
6、什么是脏读、幻读、不可重复读?
7、MySQL 有哪些事务隔离级别?
8、MySQL 默认的事务隔离级别是?
9、什么是索引?
10、索引有什么用?
11、索引为什么能提高查询效率?
12、索引的设计有哪些原则?
13、什么情况下应不建或少建索引?
14、MySQL 索引的种类有哪些?
15、MySQL 索引最左匹配原则怎么理解?
16、MySQL 数据库引擎怎么选择?
17、MySQL 默认数据库引擎是什么?
18、MySQL 引擎 MyISAM 和 InnoDB 的区别?
19、char 和 varchar 的区别?
20、MySQL 的 drop、delete、truncate区别?
21、MySQL 怎么实现分页查询?
22、MySQL 的高可用方案有哪些?
23、如何分析一条 SQL 语句的执行计划和性能?
24、MySQL 查询优化有哪些方法?
25、MySQL 为什么不建议默认 null 值?
26、MySQL 为什么尽量选择最小数据类型?
27、怎么理解数据库中的乐观锁和悲观锁?
28、MySQL 中的 MVCC 是指什么?
29、MySQL InnoDB 的 MVCC 实现机制?
30、MySQL 中的 MVCC 支持哪些事务隔离级别?
31、MySQL 支持哪三种级别的锁?
32、MySQL InnoDB 支持什么锁?
33、MySQL 中的表锁有哪些?
34、MySQL 中的行锁有哪些?
35、MySQL 中的意向锁有什么用?
36、MySQL 中的意向锁的分类?
37、MySQL 中的意向锁是表锁还是行锁?
38、MySQL 中的自增锁有什么用?
39、MySQL 行锁是锁的是什么?
40、MySQL 行锁实现的几种算法?
41、MySQL 什么情况会发生死锁?
42、MySQL 死锁怎么排查?
43、MySQL 如何解决死锁?
44、MySQL 如何避免死锁?
45、MySQL 和 MariaDB 的区别?
46、MySQL 日志 undo 和 redo 的区别?
47、什么是表分区?
48、表分区有什么好处?
49、表分区与分表的区别?
50、MySQL 支持的分区类型有哪些?
51、MySQL 分区表有哪些限制因素?
52、MySQL 为什么要分库分表?
53、MySQL 分库分表怎么做?
54、MySQL 分库分表工具有哪些?
55、MySQL 分库分表会产生哪些问题?
56、MySQL 批量插入,如何不插入重复数据?

Redis(缓存)

1、Redis 是什么?
2、Redis 有哪些应用场景?
3、Redis 有什么优势?
4、Redis 为什么这么快?
5、Redis 主要消耗什么物理资源?
6、Redis 到底是单线程还是多线程?
7、Redis 和 Memcache 有什么区别?
8、Redis 支持哪些数据类型?
9、Redis 默认支持多少个数据库?怎么修改?
10、Redis 最大 key 大小?
11、Redis String 值最大存储多少?
12、Redis 事务有什么用?
13、Redis 事务相关的命令有哪几个?
14、Redis 持久化有什么用?
15、Redis 有哪几种持久化方式?
16、Redis 持久化方式如何选择?
17、Redis 内存满了怎么办?
18、Redis 有哪些淘汰策略?
19、Redis 如何提高多核 CPU 利用率?
20、Redis 如何实现大量数据插入?
21、Redis 的回收进程如何工作的?
22、Redis 中的管道有什么用?
23、Redis 有哪些高可用方案?
24、Redis 集群如何选择数据库?
25、Redis 哈希槽怎么理解?
26、Redis 支持的 Java 客户端有哪些?
27、Redisson 是什么框架?
28、Redis 和 Redisson 有什么关系?
29、Jedis 和 Redisson 对比有什么优缺点?
30、Redis 为什么不提供 Windows 版本?
31、Redis 如何设置密码访问?
32、Redis 如何分析慢查询操作?
33、什么是缓存预热和热备?
34、什么是缓存雪崩,如何解决?
35、什么是缓存穿透,如何解决?
36、什么是缓存击穿,如何解决?
37、什么是缓存抖动,如何解决?
38、什么是缓存无底洞现象,如何解决?
39、Redis 和数据库双写一致性问题如何解决?
40、Redis 有哪些危险命令?如何防范?
41、Redis 如何统计独立用户访问量?

Zookeeper

1、ZooKeeper 是什么?
2、ZooKeeper 有哪些特性?
3、ZooKeeper 有哪些应用场景?
4、Zookeeper 支持哪些数据节点类型?
5、Zookeeper 常用的命令有哪些?
6、Zookeeper 服务器有哪几种角色?
7、Zookeeper 服务器有哪几种工作状态?
8、Zookeeper 支持哪些 Java 客户端?
9、ZooKeeper 有几种部署模式?
10、Zookeeper 集群最少要几台机器,为什么?
11、Zookeeper 集群支持动态添加机器吗?
12、ZooKeeper 是如何实现分布式事务的?
13、ZooKeeper 是如何实现分布式锁的?
14、Zookeeper 中的文件系统怎么理解?
15、Zookeeper 和 Chubby 的区别?
16、怎么理解 ZAB 协议?
17、ZAB 和 Paxos 算法的联系与区别?
分布式
1、什么是 SOA?
2、SOA 和微服务架构有什么区别?
3、什么是 CAP 原则?
4、什么是 BASE 原则?
5、什么是 RMI?
6、什么是 RPC?
7、RMI 和 RPC 有什么区别?
8、分布式系统下会遇到哪些问题?
9、分布式 Session 共享怎么实现?
10、分布式唯一 ID 怎么实现?
11、什么是分布式事务?
12、分布式事务的解决方案有哪些?
13、什么是微服务?
14、微服务架构有什么优势?
15、微服务架构有什么缺点?
16、什么是服务治理?
17、什么是服务降级?
18、服务降级的方案有哪些?
19、什么是服务雪崩?
20、什么是服务熔断?

MyBatis

1、MyBatis 是什么框架?
2、MyBatis 和 ORM 的区别?
3、MyBatis 为什么是半自动 ORM 映射?
4、MyBatis 框架的应用场景?
5、MyBatis 有哪些优点?
6、MyBatis 有哪些缺点?
7、MyBatis 和 Hibernate 的区别?
8、MyBatis 和 JPA 的区别?
9、MyBatis 有哪几种 SQL 编写形式?
10、MyBatis 支持哪些传参数的方法?
11、MyBatis 的 $ 和 # 传参的区别?
12、MyBatis 可以映射到枚举类吗?
13、MyBatis 怎么封装动态 SQL?
14、Mybatis trim 标签有什么用?
15、MyBatis 怎么实现分页?
16、MyBatis 流式查询有什么用?
17、MyBatis 模糊查询 like 语句该怎么写?
18、MyBatis 配置文件中的 SQL id 是否能重复?
19、MyBatis 如何防止 SQL 注入?
20、MyBatis 如何获取自动生成的主键id?
21、MyBatis 使用了哪些设计模式?
22、MyBatis 中的缓存机制有啥用?
23、MyBatis 一级缓存和二级缓存的区别?
24、MyBatis-Plus 是什么框架?
消息队列
1、消息队列有什么用?
2、消息队列有哪些应用场景?
3、消息队列有什么优缺点?
4、消息队列怎么选型?
5、有了多线程,为什么还要消息队列?
6、消息队列和多线程应该怎么选择呢?
7、使用消息队列会遇到哪些问题?
8、消息队列如何处理消息重复消费问题?
9、消息队列为什么会产生消息丢失?
10、消息队列如何解决消息丢失问题?
11、消息队列如何保证消息顺序消费?
12、消息延迟推送有哪些应用场景?
13、什么是拉模式和推模式?
14、什么是消息持久化?
15、消息持久化有什么缺点?
16、什么是 JMS?
17、什么是 RabbitMQ?
18、RabbitMQ 有哪些优点?
19、RabbitMQ 有哪些重要的组件?
20、RabbitMQ 有哪些重要的角色?
21、RabbitMQ 交换器类型有哪些?
22、RabbitMQ 消息基于什么传输?
23、RabbitMQ 怎么避免消息丢失?
24、RabbitMQ 怎么保证消息的稳定性?
25、RabbitMQ 支持事务消息吗?
26、RabbitMQ 事务消息在什么情况下无效?
27、RabbitMQ 接收到消息之后必须消费吗?
28、RabbitMQ 如何确保每个消息能被消费?
29、RabbitMQ 消息持久化的条件?
30、RabbitMQ 中的死信队列是什么?
31、RabbitMQ 队列中的消息是否有数量限制?
32、RabbitMQ 怎么实现消息延迟推送?

Linux

1、Linux 是什么?
2、Linux 和 Unix 的区别?
3、Linux 系统有哪些优势?
4、Linux 怎么查看内核版本?
5、RedHat、CentOS、Ubuntu 有什么区别?
6、Linux 和 Windows 正反斜杠的区别?
7、Linux 环境变量配置有哪几种方式?
8、Linux 安装软件有哪几种方式?
9、Linux 普通用户怎么以管理员身份执行指令?
10、Linux 的 root 和 home 目录有什么不同?
11、Linux 系统 root 和普通用户的区别?
12、Linux 怎么区分 root 和普通用户?
13、Linux 怎么切换用户?
14、Linux 中的 bash 是什么?
15、Linux 中的 Shell 是什么?
16、Linux 怎么显示目录下的文件?
17、Linux 中 ll 和 ls 命令的区别?
18、Linux 怎么创建文件?
19、Linux 怎么创建目录?
20、Linux 怎么切换目录?
21、Linux 怎么切换到上 N 级目录?
22、Linux 怎么切换到之前所在的目录?
23、Linux 怎么切换到当前用户主目录?
24、Linux 怎么查看当前目录所在路径?
25、Linux 下的权限有哪几种?
26、Linux 文件调用权限分为哪 3 级?
27、Linux 怎么修改文件权限?
28、Linux 怎么修改文件所有者和所属组?
29、Linux 怎么查看磁盘的使用情况?
30、Linux 怎么查看内存的使用情况?
31、Linux 怎么查看资源消耗最多的进程?
32、Linux 怎么看端口被哪个进程占用?
33、Linux 怎么查找某个进程?
34、Linux 怎么结束某个进程?
35、Linux 怎么清屏?
36、Linux 控制台怎么设置超时自动注销?
37、Linux vim 和 vi 命令的区别?
38、Linux vim 命令怎么使用?
39、Linux 软链接和硬链接区别?
40、Linux 怎么创建软、硬链接?
41、Linux 中的零拷贝是指什么?
42、Linux 下 select,poll,epoll 的区别?**

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缘不易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值