2024金三银四必备:Java后端开发面试总结【25个技术专题】

八、多线程&并发面试题

===========

JAVA 并发知识库

1、什么是线程?

2、继承 Thread 类

3、如何在java中实现线程

4、ExecutorService、 Callable、 Future 有返回值线程

5、实现多线程 Thread 和 Runnable区别?

6、4 种线程池

7、解释java中的volatile变量

8、notify()和notifyAll()有什么区别?

9、sleep()和wait() 有什么区别?

10、volatile 是什么?可以保证有序性吗?

11、Thread 类中的start() 和 run() 方法有什么区别?

12、为什么wait, notify 和 notifyAll这些方法不在thread类里面?

13、共享锁和独占锁

14、Java中interrupted 和 isInterruptedd方法的区别?

15、Java中synchronized 和 ReentrantLock 有什么不同?

16、有三个线程T1,T2,T3,如何保证顺序执行?

17、SynchronizedMap和ConcurrentHashMap有什么区别?

18、什么是线程安全

19、重量级锁(Mutex Lock)

20、Java线程池中submit() 和 execute()方法有什么区别?

21、偏向锁

22、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式

23、什么是线程安全?Vector是一个线程安全类吗?

24、Java中实现多线程有几种方法

25、实现 Runnable 接口。

26、基于线程池的方式

27、如何停止一个正在运行的线程

28、线程基本方法

29、线程让步(yield)

30、线程唤醒(notify)

由于篇幅有限,获取完整面试题和答案解析可以转发后私信关键字【面试题】获取

九、JVM面试题

========

1、JVM 运行时内存

2、64 位 JVM 中,int 的长度是多数?

3、新生代、老年代、永久代

4、32 位和 64 位的 JVM,int 类型变量的长度是多数?

5、JAVA8 与元数据

6、分代收集算法

7、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?

8、分代收集算法

9、JRE、JDK、JVM 及 JIT 之间有什么不同?

10、解释 Java 堆空间及 GC?

11、JVM 内存区域

12、JAVA强引用、软引用、弱引用、虚引用

13、虚拟机栈(线程私有)

14、分代收集算法

15、你能保证 GC 执行吗?

16、怎么获取 Java 程序使用的内存?堆使用的百分比?

17、在老年代-标记整理算法

18、描述一下 JVM 加载 class 文件的原理机制

19、Serial Old 收集器(单线程标记整理算法

20、堆(Heap-线程共享) -运行时数据区

21、G1 收集器

22、JVM 类加载机制

23、堆和栈的区别

24、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

25、Parallel Old 收集器(多线程标记整理算法)

26、垃圾收集算法

27、Minor GC与Full GC分别在什么时候发生?

28、你知道哪些JVM性能调优

29、说一下 JVM 的主要组成部分及其作用?

30、队列和栈是什么?有什么区别?

十、Mysql面试题

==========

1、MySQL 中有哪些不同的表格?

2、TokuDB( Fractal Tree-节点带数据)

3、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?

4、Memory

5、myisamchk 是用来做什么的?

6、MyISAM 表格将在哪里存储,并且还提供其存储格式?

7、索引

8、常见索引原则有

9、如何显示前 50 行?

10、第一范式(1st NF - 列都是不可再分)

11、第二范式(2nd NF- 每个表只描述一件事情)

12、第三范式(3rd NF- 不存在对非主键列的传递依赖)

13、锁的优化策略

14、SQL优化

15、为表中得字段选择合适得数据类型

16、什么是视图

17、什么情况下设置了索引但无法使用

18、并发事务带来哪些问题?

19、SQL 语言包括哪几部分?每部分都有哪些操作关键

20、什么是锁?

21、说说对 SQL 语句优化有哪些方法?

22、什么是乐观锁、悲观锁、时间戳、行级锁、表级锁、页级锁

十一、Redis面试题

===========

1、什么是 Redis?

2、怎么理解 Redis 事务?

3、Redis 的数据类型?

4、Redis key 的过期时间和永久有效分别怎么设置?

5、Redis 相比 Memcached 有哪些优势?

6、Memcache 与 Redis 的区别都有哪些?

7、Redis 回收进程如何工作的?

8、一个字符串类型的值能存储最大容量是多少?

9、Redis 的内存用完了会发生什么?

10、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题

11、一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素

12、Redis 集群之间是如何复制的?

13、redis的数据类型,以及每种数据类型的使用场景

14、redis的过期策略以及内存淘汰机制

15、Redis 集群最大节点个数是多少?

16、为什么Redis的操作是原子性的,怎么保证原子性的?

17、Redis 集群如何选择数据库?

18、使用过 Redis 分布式锁么,它是什么回事

19、怎么测试 Redis 的连通性?

20、redis 过期键的删除策略?

21、Redis 的回收策略(淘汰策略)?

22、为什么 edis 需要把所有数据放到内存中?

23、Redis 是一个基于内存的高性能key-value数据库。

24、Reids常用5种数据类型

25、Reids6种淘汰策略:

26、Redis前端启动命令

27、Redis 的主从复制

28、为什么Redis是单线程的?

29、Redis内存模型

30、Redis没有直接使用C字符串

十二、Memcached面试题

===============

1、Memcached 是什么,有什么作用?

2、memcached和MySQL的query cache相比,有什么优缺点?

3、 但是我确实需要把memcached中的item都dump出来,确实需要把数据load到memcached中,怎么办?

4、memcached是如何做身份验证的?

5、如何使用memcached的多线程是什么?如何使用它们?

6、memcached能接受的key的最大长度是多少?(250bytes)

7、memcached对item的过期时间有什么限制?(为什么有30天的限制?)

8、memcached最大能存储多大的单个item?(1M byte)

9、为什么单个item的大小被限制在1M byte之内?

10、为了让memcached更有效地使用服务器的内存,可以在各个服务器上配置大小不等的缓存空间吗?

11、什么是binary协议?它值得关注吗?

12、memcached是如何分配内存的?

13、为什么不用malloc/free!?

14、究竟为什么使用slab呢?

15、memcached能保证数据存储的原子性吗?

十三、MongoDB面试题

=============

1、mongodb是什么?

2、MongoDB是由哪种语言写的

3、你说的NoSQL数据库是什么意思?

4、NoSQL数据库有哪些类型?

5、你怎么比较MongoDB、CouchDB及CouchBase?

6、MongoDB成为最好NoSQL数据库的原因是什么?

7、MySQL与MongoDB之间最基本的差别是什么?

8、journal回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?

9、分析器在MongoDB中的作用是什么?

10、名字空间(namespace)是什么?

11、 如果用户移除对象的属性,该属性是否从存储层中删除?

12、允许空值null吗?

13、能否使用日志特征进行安全备份?

14、更新操作立刻fsync到磁盘?

15、为什么我的数据文件如此庞大?

16、如何执行事务/加锁?

17、NoSQL与RDBMS直接有什么区别?

18、为什么要使用和不使用NoSQL数据库?

19、说一说NoSQL数据库的几个优点?

20、mongodb有哪些特点?

十四、String面试题

============

Spring Boot面试题

1、String 是基本数据类型吗?

2、什么是 Spring Framework?

3、String 是可变的话?

4、Spring Framework 有哪些不同的功能?

5、怎么比较两个字符串的值一样,怎么比较两个字符串是否同一对象?

6、什么是 Spring 配置文件?

7、Spring 应用程序有哪些不同组件?

8、使用 Spring 有哪些方式?

9、tring str = new String(“abc”);创建了几个对象,为什么?

10、什么是依赖注入?

11、String.trim()方法去掉的是哪些字符?

12、可以自定义 java.lang.String 类并使用吗?

13、spring 中有多少种 IOC 容器?

14、区分 BeanFactory 和 ApplicationContext。

15、列举 IoC 的一些好处。

16、Spring IoC 的实现机制。

17、spring 提供了哪些配置方式?

18、什么是 spring bean?

19、spring 支持集中 bean scope?

20、什么是 spring 的内部 bean?

21、什么是 spring 装配

22、spring bean 容器的生命周期是什么样的?

23、自动装配有哪些方式?

24、如何在 spring 中启动注解装配?

25、自动装配有什么局限?

26、@Component, @Controller, @Repository

27、什么是基于注解的容器配置

28、@Required 注解有什么用?

29、列举 Spring DAO 抛出的异常。

30、@Qualifier 注解有什么用?

31、@Autowired 注解有什么用?

32、spring DAO 有什么用?

33、@RequestMapping 注解有什么用?

34、spring JDBC API 中存在哪些类?

十五、Spring Cloud面试题

==================

1、什么是 Spring Cloud?

2、负载平衡的意义什么?

3、什么是 Spring Cloud Bus?我们需要它吗?

4、什么是 Hystrix 断路器?我们需要它吗?

5、什么是 Hystrix?它如何实现容错?

6、什么是 Netflix Feign?它的优点是什么?

7、什么是服务熔断?什么是服务降级

8、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?

9、什么是微服务

10、什么是Hystrix断路器?我们需要它吗

11、spring cloud 和dubbo区别?

12、SpringBoot和SpringCloud的区别?

13、spring cloud 和dubbo区别?

14、说说 RPC 的实现原理

15、微服务之间是如何独立通讯的?

16、使用 Spring Cloud 有什么优势?

17、REST 和RPC对比

18、你所知道的微服务技术栈?

十六、RabbitMQ面试题

==============

1、什么是 rabbitmq

2、使用 rabbitmq 的场景

3、RabbitMQ有什么优缺点?

4、什么是Message?

5、为什么要使用 rabbitmq

6、消息如何分发?

7、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?

8、消息怎么路由?

9、如何确保消息不丢失?

10、消息基于什么传输?

11、如何保证消息的顺序性

12、Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别?

13、Fanout(广播分发)?

14、如何保证高可用的?

15、mq 的缺点

16、如何保证消息的可靠传输?如果消息丢了怎么办

17、如何避免消息重复投递或重复消费?

18、什么是Message?

19、如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决

20、RabbitMQ 的集群

21、什么是Connection ?

22、topic 交换器(模式匹配) ?

23、Exchange 类型 ?

24、设计MQ的思路

由于篇幅有限,获取完整面试题和答案解析可以转发后私信关键字【面试题】获取

十七、Dubbo 面试题

============

1、为什么要用 Dubbo?

2、Dubbo是什么?

3、默认使用的是什么通信框架,还有别的选择吗?

4、Dubbo 和 Spring Cloud 有什么区别?

5、一般使用什么注册中心?还有别的选择吗?

6、dubbo都支持什么协议,推荐用哪种?

7、服务提供者能实现失效踢出是什么原理?

8、Dubbo 的整体架构设计有哪些分层?

9、如何解决服务调用链过长的问题?

10、说说核心的配置有哪些?

11、Dubbo 推荐用什么协议?

12、默认使用什么序列化框架,你知道的还有哪些?

13、画一画服务注册与发现的流程图?

2021年春招,Java后端最全面试攻略,吃透25个技术栈

14、Dubbo 集群容错有几种方案?

15、服务上线怎么不影响旧版本?

16、Dubbo 服务降级,失败重试怎么做?

17、Dubbo Monitor 实现原理?

18、Dubbo 用到哪些设计模式?

19、Dubbo 配置文件是如何加载到 Spring 中的?

20、服务调用是阻塞的吗?

21、Dubbo 支持分布式事务吗?

22、Dubbo 可以对结果进行缓存吗?

十八、MyBatis 面试题

==============

1、什么是 Mybatis?

2、MyBatis实现一对一有几种方式?具体怎么操作的?

3、MyBatis 框架的缺点

4、MyBatis实现一对多有几种方式,怎么操作的?

5、MyBatis 与 Hibernate 有哪些不同?

6、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?

8、 Mybatis的一级、二级缓存:

9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?

13、使用MyBatis的mapper接口调用时有哪些要求?

14、在 mapper 中如何传递多个参数?

15、Mapper编写有哪几种方式?

16、简述Mybatis的插件运行原理,以及如何编写一个插件。

17、MyBatis编程步骤是什么样的?

十九、ZooKeeper 面试题

================

1、什么是Zookeeper?

2、zookeeper的数据结构(树)? 讲一下基于它实现的分布式锁?基于它实现的Master选举?基于它的集群管理?zookeeper的注册(watch)机制和轮询机制的使用场景?

3、ZooKeeper 提供了什么?

4、讲一下如何用 zookeeper 实现分布式锁**?**

5、ZAB 协议?

6、Zookeeper的同步过程,写操作流程,读操作流程

7、ZK 的部署方式有哪几种?集群中的角色有哪些?集群中最少需要几台机器

8、客户端注册 Watcher 实现

9、 服务端处理 Watcher 实现

10、客户端回调 Watcher

11、ACL 权限控制机制

12、服务器角色

13、会话管理

14、数据同步

15、Zookeeper 下 Server 工作状态

16、zk 节点宕机如何处理?

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

18、分布式集群中为什么会有 Master?

19、zookeeper 负载均衡和 nginx 负载均衡区别

20、Chroot 特性

21、集群最少要几台机器,集群规则是怎样的?

22、集群支持动态添加机器吗?

23、Zookeeper对节点的watch监听通知是永久的吗?为什么不是永久的?

24、Zookeeper的java客户端都有哪些?

25、chubby是什么,和zookeeper比你怎么看?

26、说几个zookeeper常用的命令。

27、ZAB和Paxos算法的联系与区别?

28、Zookeeper的典型应用场景

二十、数据结构面试题

==========

1、栈(stack)

栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出 栈)两种,前者相当于插入,后者相当于删除最后的元素。

2、队列(queue)

3、排序二叉树

4、前缀树

5、红黑树

6、散列表(Hash Table)

7、B-TREE

8、位图

9、链表(Link)

10、栈和队列的共同特点是?

11、栈通常采用的两种存储结构是?

12、用链表表示线性表的优点是?

13、增加头结点的目的是?

14、在计算机中,算法是指?

二十一、算法面试题

=========

1、数据里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组(请以代码实现)

2、给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

3、如何解决样本类别的不均衡问题?

4、在神经网络训练过程中,为什么会出现梯度消失的问题?如何防止?

5、二分查找

6、冒泡排序算法、插入排序算法、快速排序算法、希尔排序算法、归并排序算法

7、K-Means或KNN中,通常使用欧式距离来表示最近的数据点之间的距离,有时候也使用曼哈度距离,对比两者的区别。

8、参数模型与非参数模型

9、生成模型与判别模型

10、神经网络中参数量parameters和FLOPs计算

11、桶排序算法、基数排序算法、剪枝算法、回溯算法

12、AES

13、RSA

14、CRC

15、最短路径算法

16、最小生成树算法

18、有两个篮子,分别为A 和 B,篮子A里装有鸡蛋,篮子B里装有苹果,请用面向对象的思想实现两个篮子里的物品交换(请用代码实现)

19、假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用API方法)

20、MD5

21、写出代码判断一个整数是不是2的阶次方(请代码实现,谢绝调用API方法)

二十二、Elasticsearch 面试题

=====================

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

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

3、详细描述一下 Elasticsearch 索引文档的过程

4、elasticsearch 的倒排索引是什么

5、elasticsearch 是如何实现 master 选举的

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

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

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

9、lucence 内部结构是什么?

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

11、详细描述一下 Elasticsearch 索引文档的过程。

12、详细描述一下 Elasticsearch 更新和删除文档的过程。

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

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

15、在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?

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

17、对于 GC 方面,在使用 Elasticsearch 时要注意什么?

18、拼写纠错是如何实现的?

19、详细描述一下 Elasticsearch 索引文档的过程。

20、如何监控 Elasticsearch 集群状态?

21、介绍下你们电商搜索的整体技术架构?

22、介绍一下你们的个性化搜索方案?

23、是否了解字典树?

24、Elasticsearch 对于大数据量(上亿量级)的聚合如何实现

二十三、Kafka 面试题

=============

1、Kafka 是什么

2、压缩(GZIP 或 Snappy)

3、数据文件分段 segment(顺序读写、分段命令、二分查找)

4、partition 的数据文件(offset, MessageSize, data)

5、消费者设计

6、批量发送

7、Consumer Group

总结

虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料

有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。

master 选举的

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

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

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

9、lucence 内部结构是什么?

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

11、详细描述一下 Elasticsearch 索引文档的过程。

12、详细描述一下 Elasticsearch 更新和删除文档的过程。

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

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

15、在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?

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

17、对于 GC 方面,在使用 Elasticsearch 时要注意什么?

18、拼写纠错是如何实现的?

19、详细描述一下 Elasticsearch 索引文档的过程。

20、如何监控 Elasticsearch 集群状态?

21、介绍下你们电商搜索的整体技术架构?

22、介绍一下你们的个性化搜索方案?

23、是否了解字典树?

24、Elasticsearch 对于大数据量(上亿量级)的聚合如何实现

二十三、Kafka 面试题

=============

1、Kafka 是什么

2、压缩(GZIP 或 Snappy)

3、数据文件分段 segment(顺序读写、分段命令、二分查找)

4、partition 的数据文件(offset, MessageSize, data)

5、消费者设计

6、批量发送

7、Consumer Group

总结

虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

[外链图片转存中…(img-DPu4zjVe-1714245811384)]

[外链图片转存中…(img-ZegIDLNP-1714245811384)]

上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料

有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值