前言
快乐的时光总是短暂的,愉快的假期已经结束了,不知道大家的假期过得充实与否?
疫情当前,这个小长假我也是没敢出去浪,家里蹲又属实无聊,所以我花三天时间整理了一下各大厂出现频率比较高的一些Java面试题,希望对跳槽和找工作的朋友有一些参考价值。说句题外话,其实只要自己实力足够,完全没必要去赶什么所谓的金三银四,随时都有公司抢着要。
那废话就不多说了,我们直接发车,坐稳扶好!
由于篇幅较长,有需要获取的朋友详见文末哦~
Java基础
-
面向对象和面向过程的区别
-
Java语言有哪些特点?
-
什么是JDK?什么是JRE?什么是JVM?三者之间的联系与区别
-
什么是字节码?采用字节码的最大好处是什么?
-
Java和C++的区别
-
什么是Java程序的主类?应用程序和小程序的主类有何不同?
-
Java应用程序与小程序之间有那些差别?
-
字符型常量和字符串常量的区别
-
构造器Constructor是否可被override
-
重载和重写的区别
-
Java 面向对象编程三大特性:封装、继承、多态
-
String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?
-
自动装箱与拆箱
-
在一个静态方法内调用一个非静态成员为什么是非法的?
-
在Java中定义一个不做事且没有参数的构造方法的作用
-
import java和javax有什么区别
-
接口和抽象类的区别是什么?
-
成员变量与局部变量的区别有那些?
-
创建一个对象用什么运算符?对象实体与对象引用有何不同?
-
什么是方法的返回值?返回值在类的方法里的作用是什么?
-
一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?
-
构造方法有哪些特性?
-
静态方法和实例方法有何不同?
-
对象的相等与指向他们的引用相等,两者有什么不同?
-
在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
-
==与equals(重要)
-
hashCode与equals(重要)
-
Java中的值传递和引用传递
-
简述线程,程序、进程的基本概念。以及他们之间关系是什么?
-
线程有哪些基本状态?这些状态是如何定义的?
有同学可能会疑惑为什么我不直接放出题解?实在是篇幅所限,如果每一题都放上题解,这篇文章没个七八万字是下不来的,所以具体题解这里就不放了,给出题目大家对照一下自身所学,不会的可以去网上搜一搜答案。当然了,题解我也是有整理好的,因为我知道有很多同学都是懒得一题一题去搜,因为这样学习效率属实不高,所以需要题解文档的同学可以 转发本文+关注+私信【504】 即可快速获取。
Java集合框架
-
Java集合框架是什么?说出一些集合框架的优点?
-
集合框架中的泛型有什么优点?
-
Java集合框架的基础接口有哪些?
-
为何Collection不从Cloneable和Serializable接口继承?
-
为何Map接口不继承Collection接口?
-
Iterator是什么?
-
Enumeration和Iterator接口的区别?
-
为何没有像Iterator.add()这样的方法,向集合中添加元素?
-
为何迭代器没有一个方法可以直接获取下一个元素,而不需要移动游标?
-
Iterater和ListIterator之间有什么区别?
-
遍历一个List有哪些不同的方式?
-
通过迭代器fail-fast属性,你明白了什么?
-
fail-fast与fail-safe有什么区别?
-
在迭代一个集合的时候,如何避免ConcurrentModificationException?
-
为何Iterator接口没有具体的实现?
-
UnsupportedOperationException是什么?
-
在Java中,HashMap是如何工作的?
-
hashCode()和equals()方法有何重要性?
-
我们能否使用任何类作为Map的key?
-
Map接口提供了哪些不同的集合视图?
-
HashMap和HashTable有何不同?
-
如何决定选用HashMap还是TreeMap?
-
ArrayList和Vector有何异同点?
-
Array和ArrayList有何区别?什么时候更适合用Array?
-
ArrayList和LinkedList有何区别?
-
哪些集合类提供对元素的随机访问?
-
EnumSet是什么?
-
哪些集合类是线程安全的?
-
并发集合类是什么?
-
BlockingQueue是什么?
Java多线程
-
线程和进程有什么区别?
-
创建线程的三种方式的对比?
-
为什么要使用多线程呢?
-
线程的状态流转?
-
什么是线程死锁?如何避免死锁?
-
常见的对比
-
sleep() 方法和 wait() 方法区别和共同点?
-
为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法
-
ThreadLocal是什么?有什么用?
-
Thread类中的yield方法有什么作用?
-
Java中的fork join框架是什么?
-
synchronized和ReentrantLock 的区别
-
谈谈volatile的使用及其原理?
-
synchronized 关键字和 volatile 关键字的区别?
-
Java中如何停止一个线程?
-
一个线程运行时发生异常会怎样?
-
如何在两个线程间共享数据?
-
Java中notify 和 notifyAll有什么区别?
-
为什么wait, notify 和 notifyAll这些方法不在thread类里面?
-
什么是ThreadLocal变量?
-
Java中interrupted 和 isInterruptedd方法的区别?
-
为什么wait和notify方法要在同步块中调用?
-
为什么你应该在循环中检查等待条件?
-
Java中的同步集合与并发集合有什么区别?
-
什么是线程池?为什么要使用它?
-
如何写代码来解决生产者消费者问题?
-
Java中活锁和死锁有什么区别?
-
怎么检测一个线程是否拥有锁?
-
你如何在Java中获取线程堆栈?
-
Java中synchronized 和 ReentrantLock 有什么不同?
Java虚拟机
-
讲一下JVM内存结构?
-
Java对象的定位方式
-
说一下堆栈的区别?
-
什么情况下会发生栈溢出?
-
类文件结构
-
什么是类加载?类加载的过程?
-
什么是双亲委派模型?
-
为什么需要双亲委派模型?
-
什么是类加载器,类加载器有哪些?
-
类的实例化顺序?
-
如何判断一个对象是否存活?
-
可作为GC Roots的对象有哪些?
-
什么情况下类会被卸载?
-
强引用、软引用、弱引用、虚引用是什么,有什么区别?
-
Minor GC 和 Full GC的区别?
-
内存的分配策略?
-
Full GC 的触发条件?
-
垃圾回收算法有哪些?
-
有哪些垃圾回收器?
-
常用的 JVM 调优的命令都有哪些?
-
对象头了解吗?
-
如何排查 OOM 的问题?
-
GC是什么?为什么要GC?
MySQL面试题
-
能说下myisam 和 innodb的区别吗?
-
说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?
-
那你知道什么是覆盖索引和回表吗?
-
锁的类型有哪些呢
-
你能说下事务的基本特性和隔离级别吗?
-
那ACID靠什么保证的呢?
-
那你说说什么是幻读,什么是MVCC?
-
那你知道什么是间隙锁吗?
-
你们数据量级多大?分库分表怎么做的?
-
那分表后的ID怎么保证唯一性的呢?
-
分表后非sharding_key的查询怎么处理呢?
-
说说mysql主从同步怎么做的吧?
-
那主从的延迟怎么解决呢?
-
MySQL 的逻辑架构了解吗?
-
谈一谈 MySQL 的读写锁
-
MySQL 的锁策略有什么?
-
数据库死锁如何解决?
-
事务是什么?
-
事务有什么特性?
-
MySQL 的隔离级别有哪些?
-
MVCC 是什么?
-
谈一谈 InnoDB
-
谈一谈 MyISAM
-
谈一谈 Memory
-
查询执行流程是什么?
-
VARCHAR 和 CHAR 的区别?
-
DATETIME 和 TIMESTAMP 的区别
-
数据类型有哪些优化策略?
-
索引有什么作用?
-
谈一谈 MySQL 的 B-Tree 索引
Spring面试题
-
什么是spring?
-
Spring框架的设计目标,设计理念,和核心是什么
-
Spring的优缺点是什么?
-
Spring有哪些应用场景
-
Spring由哪些模块组成?
-
Spring 框架中都用到了哪些设计模式?
-
详细讲解一下核心容器(spring context应用上下文) 模块
-
Spring框架中有哪些不同类型的事件
-
Spring 应用程序有哪些不同组件?
-
使用 Spring 有哪些方式?
-
什么是Spring IOC 容器?
-
控制反转(IoC)有什么作用
-
IOC的优点是什么?
-
Spring IoC 的实现机制
-
Spring 的 IoC支持哪些功能
-
BeanFactory 和 ApplicationContext有什么区别?
-
Spring 如何设计容器的,BeanFactory和ApplicationContext的关系详解
-
ApplicationContext通常的实现是什么?
-
什么是Spring的依赖注入?
-
依赖注入的基本原则
-
依赖注入有什么优势
-
有哪些不同类型的依赖注入实现方式?
-
构造器依赖注入和 Setter方法注入的区别
-
什么是Spring beans?
-
一个 Spring Bean 定义 包含什么?
-
如何给Spring 容器提供配置元数据?Spring有几种配置方式
-
Spring配置文件包含了哪些信息
-
Spring基于xml注入bean的几种方式
-
解释Spring支持的几种bean的作用域
-
Spring框架中的单例bean是线程安全的吗?
-
Spring如何处理线程并发问题?
-
解释Spring框架中bean的生命周期
-
哪些是重要的bean生命周期方法? 你能重载它们吗?
-
什么是Spring的内部bean?什么是Spring inner beans?
-
在 Spring中如何注入一个java集合?
-
什么是bean装配?
计算机网络
-
OSI 的七层模型分别是?各自的功能是什么?
-
为什么需要三次握手?两次不行?
-
为什么需要四次挥手?三次不行?
-
TCP与UDP有哪些区别?各自应用场景?
-
HTTP1.0,1.1,2.0 的版本区别
-
POST和GET有哪些区别?各自应用场景?
-
HTTP 哪些常用的状态码及使用场景?
-
HTTP状态码301和302的区别,都有哪些用途?
-
在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?
-
HTTP 如何实现长连接?在什么时候会超时?
-
TCP 如何保证有效传输及拥塞控制原理
-
IP地址有哪些分类?
-
GET请求中URL编码的意义
-
什么是SQL 注入?举个例子?
-
谈一谈 XSS 攻击,举个例子?
-
讲一下网络五层模型,每一层的职责?
-
简单说下 HTTPS 和 HTTP 的区别
-
对称加密与非对称加密的区别
-
简单说下每一层对应的网络协议有哪些?
-
ARP 协议的工作原理?
-
TCP 的主要特点是什么?
-
UDP 的主要特点是什么?
-
TCP 和 UDP 分别对应的常见应用层协议有哪些?
-
为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?
-
保活计时器的作用?
-
TCP 协议是如何保证可靠传输的?
-
谈谈你对停止等待协议的理解?
-
谈谈你对 ARQ 协议的理解?
-
谈谈你对滑动窗口的了解?
-
谈下你对流量控制的理解?
MQ消息队列
-
什么是消息队列
-
为什么需要消息队列,消息队列的应用场景
-
消息队列的优缺点
-
如何保证消息队列的高可用
-
如何保证消息的可靠性,如何保证消息不丢失
-
如果处理重复消息(幂等性)
-
如何保证消息的有序性
-
如果处理消息堆积
-
说一下你了解的MQ,说出几种MQ之间的区别
-
低延时高吞吐,做了什么优化
-
RabbitMQ整个流程,RabbitMQ 有哪些重要的角色,RabbitMQ 有哪些重要的组件
-
RabbitMQ 有几种广播类型
-
RabbitMQ 包含事务功能吗?如何使用?
-
RabbitMQ 的事务在什么情况下是无效的?
-
Kafka 可以脱离 zookeeper 单独使用吗?为什么
-
Kafka 有几种数据保留的策略
-
Kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 Kafka 将如何处理?
-
Kafka 的分区策略有哪些?
-
什么情况会导致 Kafka 运行变慢?
-
使用 Kafka 集群需要注意什么?
Redis
-
Redis 是单线程还是多线程?
-
为什么 Redis 是单线程?
-
Redis 为什么使用单进程、单线程也很快
-
Redis 在项目中的使用场景
-
Redis 常见的数据结构
-
Redis 的字符串(SDS)和C语言的字符串区别
-
Sorted Set底层数据结构
-
Sorted Set 为什么同时使用字典和跳跃表?
-
Sorted Set 为什么使用跳跃表,而不是红黑树?
-
Hash 对象底层结构
-
Hash 对象的扩容流程
-
渐进式 rehash 的优点
-
rehash 流程在数据量大的时候会有什么问题吗(Hash 对象的扩容流程在数据量大的时候会有什么问题吗)
-
Redis 的网络事件处理器(Reactor 模式)
-
Redis 删除过期键的策略(缓存失效策略、数据过期策略)
-
Redis 的内存淘汰(驱逐)策略
-
Redis 的 LRU 算法怎么实现的?
-
Redis 的持久化机制有哪几种,各自的实现原理和优缺点?
-
为什么需要 AOF 重写
-
介绍下 AOF 重写的过程、AOF 后台重写存在的问题、如何解决 AOF 后台重写存在的数据不一致问题
-
RDB、AOF、混合持久,我应该用哪一个?
-
同时开启RDB和AOF,服务重启时如何加载
-
Redis 怎么保证高可用、有哪些集群模式
-
主从复制
-
哨兵
-
集群模式
-
集群选举
-
如何保证集群在线扩容的安全性?(Redis 集群要增加分片,槽的迁移怎么保证无损)
-
Redis 事务的实现
-
Redis 的 Java 客户端有哪些?官方推荐哪个?
NGINX
-
什么是Nginx?
-
Nginx 有哪些优点?
-
Nginx应用场景?
-
Nginx怎么处理请求的?
-
Nginx 是如何实现高并发的?
-
什么是正向代理?
-
什么是反向代理?
-
Nginx目录结构有哪些?
-
Nginx配置文件nginx.conf有哪些属性模块?
-
cookie和session区别?
-
为什么 Nginx 不使用多线程?
-
nginx和apache的区别
-
什么是动态资源、静态资源分离?
-
为什么要做动、静分离?
-
什么叫 CDN 服务?
-
Nginx怎么做的动静分离?
-
Nginx负载均衡的算法怎么实现的?策略有哪些?
-
如何用Nginx解决前端跨域问题?
-
Nginx虚拟主机怎么配置?`
-
基于虚拟主机配置域名
-
基于端口的虚拟主机
-
location的作用是什么?
-
Location正则案例
-
Nginx配置高可用性怎么配置?
-
在nginx中,如何使用未定义的服务器名称来阻止处理请求?
-
Nginx 如何实现后端服务的健康检查?
好了,就先写到这里吧,文章中的每一道题都是有同学面试过或我给面试者出过的真题,希望大家可以沉下心来理解题目背后的出题逻辑,当然也不是让你们把这些题全背,那太为难人了,事实上也没有很大意义,你可以根据自己求职的岗位和自己的短板有针对性的去查漏补缺,祝大家都早点拿到心仪的offer。
需要面试资料的小伙伴关注vx公众号【小马的后端宇宙】即可获取哦~