【建议收藏】刷完这9套Java面试题,2021金三银四跳槽面试30K没问题

前言

距离2021年只有8天了,同时呢,离过年也不远了,等过完年,会有大批小伙伴要换工作了吧,这里给大伙儿整理了一些常见的Java面试题,希望对大家能有所帮助!

JAVA基础

一、JAVA中的几种基本数据类型是什么,各自占用多少字节?

二、String类能被继承吗,为什么?

三、String,Stringbuffer,StringBuilder的区别。

四、ArrayList和LinkedList有什么区别。

五、讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。

六、用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么?
比如存储方式,hashcode,扩容,默认容量等。

七、JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计?

八、面向对象的特征有哪些方面?

九、String 是最基本的数据类型吗?

十、Java有没有goto?

十一、float f=3.4;是否正确?

十二、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

十三、&和&&的区别?

十四、解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。

十五、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

十六、数组有没有length()方法?String有没有length()方法?

十七、在Java中,如何跳出当前的多重嵌套循环?

十八、构造器(constructor)是否可被重写(override)?

十九、String和StringBuilder、StringBuffer的区别?

二十、Java 中会存在内存泄漏吗,请简单描述。

二十一、GC是什么?为什么要有GC?

二十二、Java 中的final关键字有哪些用法?

二十三、Java中的HashSet内部是如何工作的。

二十四、什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。

二十五、Java8的新特性。

开源框架知识

一、简单讲讲tomcat结构,以及其类加载器流程,线程模型等。

二、Tomcat如何调优,涉及哪些参数 。

三、讲讲Spring加载流程。

四、Spring AOP的实现原理。

五、讲讲Spring事务的传播属性。

六、Spring如何管理事务的。

七、Spring怎么配置事务(具体说出一些关键的xml 元素)。

八、说说你对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop的实现原理,说说aop中的几个术语,它们是怎么相互工作的。

九、Springmvc 中DispatcherServlet初始化过程。

十、Netty的线程模型,Netty如何基于reactor模型上实现的。

十一、为什么选择Netty。

十二、什么是TCP粘包,拆包。解决方式是什么。

十三、Netty的fashwheeltimer的用法,实现原理,是否出现过调用不够准时,怎么解决。

十四、Netty的心跳处理在弱网下怎么办。

十五、Netty的通讯协议是什么样的。

十六、SpringMvc用到的注解,作用是什么,原理。

十七、SpringBoot启动机制。

十八、Spring框架有哪些主要模块?

十九、什么是依赖注入?什么是控制反转(IOC)? 在 Spring 中,有几种依赖注入方式?

二十、在 Spring中,有几种配置 Bean的方式?

操作系统

一、Linux系统下你关注过哪些内核参数,说说你知道的。

二、Linux下IO模型有几种,各自的含义是什么。

三、epoll和poll有什么区别。

四、平时用到哪些Linux命令。

五、用一行命令查看文件的最后五行。

六、用一行命令输出正在运行的java进程。

七、介绍下你理解的操作系统中线程切换过程。

八、进程和线程的区别。

九、Top 命令之后有哪些内容,有什么作用。

十、线上CPU爆高,请问你如何找到问题所在。

多线程

一、线程与进程的区别?

二、多线程有几种实现方法,都是什么?

三、继承Thread,重写run方法。

四、实现Runnable接口,重写run方法。

五、synchronized的原理是什么,一般用在什么地方(比如加在静态方法和非静态方法的区别,静态方法和非静态方法同时执行的时候会有影响吗)?

解释以下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁。
用过哪些原子类,他们的原理是什么?

六、JUC下研究过哪些并发工具?讲讲原理。

七、用过线程池吗,如果用过,请说明原理,并说说newCache和newFixed有什么区别,构造函数的各个参数的含义是什么?比如coreSize,maxsize等。

八、线程池的关闭方式有几种,各自的区别是什么?

九、假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有10个线程同时调用它,如何做到?

十、Spring的controller是单例还是多例,怎么保证并发的安全?

十一、用三个线程按顺序循环打印abc三个字母,比如abcabcabc。

十二、ThreadLocal用过么,用途是什么,原理是什么,用的时候要注意什么?

十三、如果让你实现一个并发安全的链表,你会怎么做?

十四、有哪些无锁数据结构,他们实现的原理是什么?

十五、讲讲Java同步机制的wait和notify。

十六、CAS机制是什么,如何解决ABA问题?

十七、多线程如果线程挂住了怎么办?

算法

一、说一下什么是二分法?使用二分法时需要注意什么?如何用代码实现?

二、什么是斐波那契数列?用代码如何实现?

三、一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?请使用代码实现。

四、什么是冒泡排序?用代码如何实现?

五、什么是选择排序?用代码如何实现?

六、什么是插入排序?用代码如何实现?

七、什么是快速排序?用代码如何实现?

八、什么是堆排序?用代码如何实现?

九、2亿个随机生成的无序整数,找出中间大小的值。

十、给一个不知道长度的(可能很大)输入字符串,设计一种方案,将重复的字符排重。

十一、遍历二叉树。

十二、有3n+1个数字,其中3n个中是重复的,只有1个是不重复的,怎么找出来。

十三、写一个字符串(如:www.javastack.cn)反转函数。

十四、常用的排序算法,快排,归并、冒泡。 快排的最优时间复杂度,最差复杂度。冒泡排序的优化方案。

十五、二分查找的时间复杂度,优势。

十六、一个已经构建好的TreeSet,怎么完成倒排序。

十七、什么是B+树,B-树,列出实际的使用场景。

十八、一个单向链表,删除倒数第N个数据。

十九、200个有序的数组,每个数组里面100个元素,找出top20的元素。

二十、单向链表,查找中间的那个元素。

分布式

一、ZooKeeper 是什么?

二、ZooKeeper 提供了什么?

三、Zookeeper文件系统

四、四种类型的znode

五、Zookeeper通知机制

六、Zookeeper 做了什么?

七、zk的命名服务(文件系统)

八、zk的配置管理(文件系统、通知机制)

九、Zookeeper集群管理(文件系统、通知机制)

十、Zookeeper分布式锁(文件系统、通知机制)

十一、获取分布式锁的流程

十二、Zookeeper队列管理(文件系统、通知机制)

十三、Zookeeper数据复制

十四、Zookeeper工作原理

十五、zookeeper是如何保证事务的顺序一致性的?

十六、Zookeeper 下 Server 工作状态

十七、zookeeper是如何选取主leader的?

十八、Zookeeper同步流程

十九、分布式通知和协调

二十、机器中为什么会有leader?

二十一、RabbitMQ中的broker是指什么?cluster又是指什么?

二十二、什么是元数据?元数据分为哪些类型?包括哪些内容?与cluster相关的元数据有哪些?元数据是如何保存的?元数据在cluster中是如何分布的?

二十三、RAM node 和 disk node 的区别?

二十四、RabbitMQ上的一个queue中存放的message是否有数量限制?

二十五、vhost是什么?起什么作用?

二十六、在单node系统和多node构成的cluster系统中声明queue、exchange,以及进行binding会有什么不同?

二十七、客户端连接到cluster中的任意node上是否都能正常工作?

二十八、若cluster中拥有某个queue的owner node失效了,且该queue 被声明具有durable属性,是否能够成功从其他node上重新声明该 queue ?

二十九、cluster中node的失效会对consumer产生什么影响?若是在 cluster 中创建了 mirrored queue,这时 node 失效会对consumer 产生什么影响?

上图为部分文档截图,需要的小伙伴可以点击这里获取资料

数据库知识

一、数据库的索引了解么?

二、数据库有哪些优化的方法?

三、为什么事务可以优化数据库?

四、Mysql的数据库引擎,区别特点。

五、数据连接池采用了什么设计模式?意义是什么?

六、项目用到什么数据库?隔离级别?每个隔离级别各做了什么?

七、数据库的索引?mysql不同引擎索引的区别。

八、什么是幻读?

九、MYSQL有哪些存储引擎,各自优缺点。

十、高并发下,如何做到安全的修改同一行数据。

十一、乐观锁和悲观锁是什么,INNODB的标准行级锁有哪2种,解释其含义。

十二、SQL优化的一般步骤是什么,怎么看执行计划,如何理解其中各个字段的含义。

十三、数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁?

十四、MYsql的索引原理,索引的类型有哪些,如何创建合理的索引,索引如何优化?

十五、聚集索引和非聚集索引的区别。

十六、select for update 是什么含义,会锁表还是锁行或是其他。

十七、为什么要用Btree实现,它是怎么分裂的,什么时候分裂,为什么是平衡的?

十八、数据库的ACID是什么?

十九、某个表有近千万数据,CRUD比较慢,如何优化?

二十、Mysql怎么优化table scan?

二十二、如何写sql能够有效的使用到复合索引?

二十三、Mysql中in 和exists 区别。

二十四、Innodb都是聚簇索引么?

搜索

一、elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。

二、elasticsearch 的倒排索引是什么?

三、elasticsearch 索引数据多了怎么办,如何调优,部署?

四、elasticsearch 是如何实现 master 选举的?
五、详细描述一下 Elasticsearch 索引文档的过程

六、详细描述一下 Elasticsearch 搜索的过程?

七、Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法

八、lucence 内部结构是什么?

九、Elasticsearch 是如何实现 Master 选举的?

十、Elasticsearch 中的节点(比如共 20 个),其中的 10 个选了一个 master,另外 10 个选了另一个 master,怎么办?

十一、客户端在和集群连接时,如何选择特定的节点执行请求的?

消息队列

一、用过哪些MQ,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗,你们公司的MQ服务架构怎样的?

二、MQ系统的数据如何保证不丢失。

三、rabbitmq如何实现集群高可用。

四、kafka吞吐量高的原因。

五、kafka 和其他消息队列的区别,kafka 主从同步怎么实现。

六、利用mq怎么实现最终一致性。

七、使用kafka有没有遇到什么问题,怎么解决的。

八、MQ有可能发生重复消费,如何避免,如何做到幂等。

最后

笔者整理了最新各路知识点合集包含有:JAVA基础、开源框架知识、多线程、分布式、
数据结构、算法、数据库、Spring全家桶系列、JVM、MySQL、MyBatis、Dubbo、Liunx、TomCat等多种知识点。需要的小伙伴可以点击这里获取资料

猜你喜欢

转载自blog.csdn.net/m0_48795607/article/details/111589531