2020 年 Java 面试题集锦(金九银十)

前言:

立刻到今年的金九银十了,又是跳槽的好季节,准备跳槽的同窗都摩拳擦掌准备大面好几场, 为你们准备了精选的面试题。java

在这里插入图片描述

本套Java面试题大全总共分为如下这六个模块:web

  • Java基础面试题
  • 多线程面试题
  • Redis面试题
  • 数据结构与算法
  • Java异常面试题
  • JVM面试题

1、Java基础面试题

一、&和&&的区别?面试

二、int和 Integer 有什么区别?(基本数据类型有哪些?)(String不是基本数据类型)redis

三、String、StringBuffer、 StringBuilder 的区别?算法

四、String 类的经常使用方法都有那些?编程

五、String 字符串修改实现的原理?数组

六、两个对象的 hashCode() 相同,则 equals() 也必定为 true 吗?缓存

七、解释下什么是面向对象?面向对象和面向过程的区别?安全

八、Java 是否支持多继承?数据结构

九、什么是构造函数?什么是构造函数重载?

十、Java 的泛型是如何工做的 ? 什么是类型擦除 ?

十一、什么是泛型中的限定通配符和非限定通配符 ?

十二、Java 中的 IO 流的分类?

2、多线程面试题

一、并发编程三要素?

二、实现可见性的方法有哪些?

三、多线程的价值?

四、建立线程的有哪些方式?

五、建立线程的三种方式的对比?

六、线程的状态流转图

七、Java线程具备五中基本状态

八、什么是线程池?有哪几种建立方式?

九、四种线程池的建立

十、线程池的优势?

十一、经常使用的并发工具类有哪些?

十二、CyclicBarrier和CountDownLatch的区别

1三、synchronized的做用?

1四、volatile关键字的做用

1五、什么是CAS

1六、CAS的问题

1七、什么是Future?

1八、什么是AQS

1九、AQS支持两种同步方式:

20、ReadWriteLock是什么

2一、FutureTask是什么

2二、synchronized和ReentrantLock的区别

2三、什么是乐观锁和悲观锁

2四、线程B怎么知道线程A修改了变量

2五、synchronized、volatile、CAS比较

2六、sleep方法和wait方法有什么区别?

2七、ThreadLocal是什么?有什么用?

2八、为何wait()方法和notify()/notifyAll()方法要在同步块中被调用

2九、多线程同步有哪几种方法?

30、线程的调度策略

3二、Linux环境下如何查找哪一个线程使用CPU最长

3三、Java死锁以及如何避免?

3四、死锁的缘由

3五、怎么唤醒一个阻塞的线程

3六、不可变对象对多线程有什么帮助

3七、什么是多线程的上下文切换

3八、若是你提交任务时,线程池队列已满,这时会发生什么

3九、Java中用到的线程调度算法是什么

40、什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)?

4一、什么是自旋

4二、线程类的构造方法、静态块是被哪一个线程调用的

4三、同步方法和同步块,哪一个是更好的选择?

4四、Java线程数过多会形成什么异常?

3、Redis面试题

一、redis常见性能问题和解决方案:

二、mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据

三、请用Redis和任意语言实现一段恶意登陆保护的代码,限制1小时内每用户Id最多只能登陆5次。具体登陆函数或功能用空函数便可,不用详细写出。

四、为何redis须要把全部数据放到内存中?

五、redis的并发竞争问题如何解决?

六、redis事物的了解CAS(check-and-set 操做实现乐观锁 )?

七、redis持久化的几种方式

八、redis的缓存失效策略和主键失效机制

九、Redis集群方案什么状况下会致使整个集群不可用?

十、说说Redis哈希槽的概念?

4、数据结构与算法:

一、常见的几大排序及查找算法及其时间复杂度?

二、求数组中最长连续序列长度

三、在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序, 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

四、两个栈实现一个队列。(美团、小米)
扩展:两个队列如何实现一个栈?

五、链表反转(单项链表的反转和双向链表的反转)

六、给Map排序—按照key的字母后按照格式[k1=v1:k2=v2]输出(阿里旅行)

5、Java异常面试题:

一、Error 和 Exception 区别是什么?

二、运行时异常和通常异常(受检异常)区别是什么?

三、JVM 是如何处理异常的?

四、throw 和 throws 的区别是什么?

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

六、NoClassDefFoundError 和 ClassNotFoundException 区别?

七、try-catch-finally 中哪一个部分能够省略?

八、try-catch-finally 中,若是 catch 中 return 了,finally 还会执行吗?

九、类 ExampleA 继承 Exception,类 ExampleB 继承ExampleA?

十、常见的 RuntimeException 有哪些?

十一、Java常见异常有哪些?

6、JVM面试题:

一、Java内存区域

  • 说一下 JVM 的主要组成部分及其做用?
  • 说一下 JVM 运行时数据区?
  • 深拷贝和浅拷贝?
  • 说一下堆栈的区别?
  • 队列和栈是什么?有什么区别?

二、HotSpot虚拟机对象探秘

  • 对象的建立
  • 为对象分配内存
  • 处理并发安全问题
  • 对象的访问定位

三、内存溢出异常

Java会存在内存泄漏吗?请简单描述

四、垃圾收集器

  • 简述Java垃圾回收机制
  • GC是什么?为何要GC
  • 垃圾回收的优势和原理。并考虑2种回收机制
  • 垃圾回收器的基本原理是什么?垃圾回收器能够立刻回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
  • Java 中都有哪些引用类型?
  • 怎么判断对象是否能够被回收?
  • 在Java中,对象何时能够被垃圾回收
  • JVM中的永久代中会发生垃圾回收吗
  • 说一下 JVM 有哪些垃圾回收算法?
  • 说一下 JVM 有哪些垃圾回收器?
  • 详细介绍一下 CMS 垃圾回收器?
  • 新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别?
  • 简述分代垃圾回收器是怎么工做的?

五、内存分配策略

简述java内存分配与回收策率以及Minor GC和Major GC

  • 对象优先在 Eden 区分配
  • 大对象直接进入老年代
  • 长期存活对象将进入老年代

六、虚拟机类加载机制

  • 简述java类加载机制?
  • 描述一下JVM加载Class文件的原理机制
  • 什么是类加载器,类加载器有哪些?
  • 说一下类装载的执行过程?
  • 什么是双亲委派模型?

七、JVM调优

  • 说一下 JVM 调优的工具?
  • 经常使用的 JVM 调优的参数都有哪些?

在这里插入图片描述

上述问到的面试题答案&最新2020整理收集的一些面试题(都整理成文档),有须要的能够点击进入暗号:csdn

但愿对你们有所帮助,有用的话点赞给我支持!