105 道 Java 面试题,认真思考对你面试很有价值

1000道互联网大厂面试题:ZooKeeper+Dubbo,linux基础教程第二版课后答案 1、MySQL 中有哪几种锁? 2、MySQL 中有哪些不同的表格? 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 4、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别? 5、CHAR 和 VARCHAR 的区别? 6、主键和候选键有什么区别? 7、myisamchk 是用来做什么的? 8、如果一个表有一列定义为 TIMESTAMP,将发生什么? 9、你怎么看到为表格定义的所有索引? 10、… Java 并发编程(一) 1、在 java 中守护线程和 阅读详情

一、Java 基础

1、什么是面向对象?

2、JDK JRE JVM

3、==和 equals 比较

4、hashCode 与 equals

5、final

6、String、StringBuffer、StringBuilder

7、重载和重写的区别

8、接口和抽象类的区别

9、List 和 Set 的区别

10、ArrayList 和 LinkedList 区别

11、HashMap 和 HashTable 有什么区别?其底层实现是什么?

12、ConcurrentHashMap 原理,jdk7 和 jdk8 版本的区别?

13、什么是字节码?采用字节码的好处是什么?

14、Java 中的异常体系

15、Java 类加载器

16、双亲委托模型

17、GC 如何判断对象可以被回收


选择 Java 基础里的其中一道解答

JDK JRE JVM

JDK:

Java Develpment Kit java 开发工具

JRE:

Java Runtime Environment java 运行时环境

JVM:

java Virtual Machine java 虚拟机

二、线程、并发相关

1、线程的生命周期?线程有几种状态

2、sleep()、wait()、join()、yield()的区别

3、对线程安全的理解

4、Thread、Runable 的区别

5、对守护线程的理解

6、ThreadLocal 的原理和使用场景

7、ThreadLocal 内存泄露原因,如何避免

8、并发、并行、串行的区别

9、并发的三大特性

10、volatile

11、为什么用线程池?解释下线程池参数?

12、简述线程池处理流程

13、线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?

14、线程池中线程复用原理


选择 Java 线程与并发里的其中一道解答

volatile

(1)保证被 volatile 修饰的共享变量对所有线程总是可见的,也就是当一个线程修改了一个被 volatile 修饰共享变量的值,新值总是可以被其他线程立即得知。

//线程1
boolean stop = false;
while(!stop){
doSomething();
}
//线程2
stop = true;

复制代码

如果线程 2 改变了 stop 的值,线程 1 一定会停止吗?不一定。当线程 2 更改了 stop 变量的值之后,但是还没来得及写入主存当中,线程 2 转去做其他事情了,那么线程 1 由于不知道线程 2 对 stop 变量的更改,因此还会一直循环下去。

(2)禁止指令重排序优化。

int a = 0;bool flag = false;public void write() {a = 2; //1flag = true; //2}public void multiply() {if (flag) { //3int ret = a * a;//4}}

复制代码

write 方法里的 1 和 2 做了重排序,线程 1 先对 flag 赋值为 true,随后执行到线程 2,ret 直接计算出结果,再到线程 1,这时候 a 才赋值为 2,很明显迟了一步。

但是用 volatile 修饰之后就变得不一样了

第一:使用 volatile 关键字会强制将修改的值立即写入主存;

第二:使用 volatile 关键字的话,当线程 2 进行修改时,会导致线程 1 的工作内存中缓存变量 stop 的缓存行无效(反映到硬件层的话,就是 CPU 的 L1 或者 L2 缓存中对应的缓存行无效);

第三:由于线程 1 的工作内存中缓存变量 stop 的缓存行无效,所以线程 1 再次读取变量 stop 的值时会去主 存读取。

inc++; 其实是两个步骤,先加加,然后再赋值。不是原子性操作,所以 volatile 不能保证线程安全。


三、spring

1、如何实现一个 IOC 容器

2、spring 是什么?

3、谈谈你对 AOP 的理解

4、谈谈你对 IOC 的理解

5、BeanFactory 和 ApplicationContext 有什么区别?

6、描述一下 Spring Bean 的生命周期?

7、解释下 Spring 支持的几种 bean 的作用域。

8、Spring 框架中的单例 Bean 是线程安全的么?

9、Spring 框架中都用到了哪些设计模式?

10、Spring 事务的实现方式和原理以及隔离级别?

11、spring 事务传播机制

12、spring 事务什么时候会失效?

13、什么是 bean 的自动装配,有哪些方式?


选择 spring 里的其中一道解答

谈谈你对 AOP 的理解

系统是由许多不同的组件所组成的,每一个组件各负责一块特定功能。除了实现自身核心功能之外,这些组件还经常承担着额外的职责。例如日志、事务管理和安全这样的核心服务经常融入到自身具有核心业务逻辑的组件中去。这些系统服务经常被称为横切关注点,因为它们会跨越系统的多个组件。

当我们需要为分散的对象引入公共行为的时候,OOP 则显得无能为力。也就是说,OOP 允许你定义从 上到下的关系,但并不适合定义从左到右的关系。例如日志功能。

日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。

在 OOP 设计中,它导致了大量代码的重复,而不利于各个模块的重用。

AOP:将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。AOP 可以对某个对象或某些对象的功能进行增强,比如对象中的方法进行增强,可以在执行某个方法之前额外的做一些事情,在某个方法执行之后额外的做一些事情


四、springmvc、springBoot、Mybatis

1、Spring Boot、Spring MVC 和 Spring 有什么区别

2、SpringMVC 工作流程

3、Spring MVC 的主要组件?

4、Spring Boot 自动配置原理?

5、如何理解 Spring Boot 中的 Starter

6、什么是嵌入式服务器?为什么要使用嵌入式服务器?

7、mybatis 的优缺点

8、MyBatis 与 Hibernate 有哪些不同?

9、#{}和 ${}的区别是什么?

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


选择 springmvc、springBoot、Mybatis 里的其中一道解答

SpringMVC 工作流程

1)用户发送请求至前端控制器 DispatcherServlet。

2)DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。

3)处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。

4)DispatcherServlet 调用 HandlerAdapter 处理器适配器。

5)HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)

6)Controller 执行完成返回 ModelAndView。

7)HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。8)DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。

9)ViewReslover 解析后返回具体 View。

10)DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。

11)DispatcherServlet 响应用户。


五、MySQL 和 Redis

1、索引的基本原理

2、mysql 聚簇和非聚簇索引的区别

3、mysql 索引的数据结构,各自优劣

4、索引设计的原则?

5、什么是最左前缀原则?什么是最左匹配原则

6、锁的类型有哪些

7、InnoDB 存储引擎的锁的算法

8、关心过业务系统里面的 sql 耗时吗?统计过慢查询吗?对慢查询都怎么优化过?

9、事务的基本特性和隔离级别

10、ACID 靠什么保证的?

11、什么是 MVCC

12、分表后非 sharding_key 的查询怎么处理,分表后的排序?

13、mysql 主从同步原理

14、简述 MyISAM 和 InnoDB 的区别

15、简述 mysql 中索引类型及对数据库的性能的影响

16、mysql 执行计划怎么看


选择 MySQL 里的其中一道解答

索引的基本原理

索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整张表。

索引的原理:就是把无序的数据变成有序的查询

(1) 把创建了索引的列的内容进行排序

(2)对排序结果生成倒排表

(3)在倒排表内容上拼上数据地址链

(4)在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据


六、Redis

1、RDB 和 AOF 机制

2、Redis 的过期键的删除策略

3、Redis 线程模型、单线程快的原因

4、简述 Redis 事务实现

5、redis 集群方案

6、redis 主从复制的核心原理

7、缓存雪崩、缓存穿透、缓存击穿


选择 Redis 里的其中一道解答

Redis 的过期键的删除策略

Redis 是 key-value 数据库,我们可以设置 Redis 中缓存的 key 的过期时间。Redis 的过期策略就是指当 Redis 中缓存的 key 过期了,Redis 如何处理。

惰性过期:只有当访问一个 key 时,才会判断该 key 是否已过期,过期则清除。该策略可以最大化地节省 CPU 资源,却对内存非常不友好。极端情况可能出现大量的过期 key 没有再次被访问,从而不会被清除,占用大量内存。

定期过期:每隔一定的时间,会扫描一定数量的数据库的 expires 字典中一定数量的 key,并清除其中已过期的 key。该策略是一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得 CPU 和内存资源达到最优的平衡效果。

(expires 字典会保存所有设置了过期时间的 key 的过期时间数据,其中,key 是指向键空间中的某个键的 指针,value 是该键的毫秒精度的 UNIX 时间戳表示的过期时间。键空间是指该 Redis 集群中保存的所有键。)

Redis 中同时使用了惰性过期和定期过期两种过期策略。


七、分布式与微服务

1、CAP 理论,BASE 理论

2、负载均衡算法、类型

3、分布式架构下,Session 共享有什么方案

4、简述你对 RPC、RMI 的理解

5、分布式 id 生成方案

6、分布式锁解决方案

7、分布式事务解决方案

8、如何实现接口的幂等性

9、简述 ZAB 协议

10、简述 zk 的命名服务、配置管理、集群管理

11、讲下 Zookeeper watch 机制

12、zk 和 eureka 的区别

13、Spring Cloud 和 Dubbo 的区别

14、什么是 Hystrix?简述实现机制

15、springcloud 核心组件及其作用

16、Dubbo 的整体架构设计及分层


选择分布式与微服务里的其中一道解答

Spring Cloud 和 Dubbo 的区别

底层协议:springcloud 基于 http 协议,dubbo 基于 Tcp 协议,决定了 dubbo 的性能相对会比较好

注册中心:Spring Cloud 使用的 eureka ,dubbo 推荐使用 zookeeper

模型定义:dubbo 将一个接口定义为一个服务,SpringCloud 则是将一个应用定义为一个服务

SpringCloud 是一个生态,而 Dubbo 是 SpringCloud 生态中关于服务调用一种解决方案(服务治理)


八、中间件 MQ

1、简述 RabbitMQ 的架构设计

2、RabbitMQ 如何确保消息发送 ? 消息接收?

3、RabbitMQ 事务消息

4、RabbitMQ 死信队列、延时队列

5、RabbitMQ 镜像队列机制

6、简述 kafka 架构设计

7、kafka 怎么处理消息顺序、重复发送、重复消费、消息丢失

8、Kafka 在什么情况下会出现消息丢失及解决方案?

9、Kafka 是 pull?push?优劣势分析

10、Kafka 中 zk 的作用

11、简述 kafka 的 rebalance 机制

12、Kafka 的性能好在什么地方


选择分布式与微服务里的其中一道解答

简述 kafka 架构设计

Consumer Group:消费者组,消费者组内每个消费者负责消费不同分区的数据,提高消费能力。逻 辑上的一个订阅者。

Topic:可以理解为一个队列,Topic 将消息分类,生产者和消费者面向的是同一个 Topic。

Partition:为了实现扩展性,提高并发能力,一个 Topic 以多个 Partition 的方式分布到多个 Broker 上,每个 Partition 是一个 有序的队列。一个 Topic 的每个 Partition 都有若干个副本(Replica),一个 Leader 和若干个 Follower。生产者发送数据的对象,以及消费者消费数据的对象,都是 Leader。Follower 负责实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,某个 Follower 还会成为新的 Leader。

Offset:消费者消费的位置信息,监控数据消费到什么位置,当消费者挂掉再重新恢复的时候,可以从 消费位置继续消费。

Zookeeper:Kafka 集群能够正常工作,需要依赖于 Zookeeper,Zookeeper 帮助 Kafka 存储和管理 集群信息。


这 105 道 Java 面试题的答案已经整理成了 PDF 文档,如下图:——关注公众号免费获取面试全套资料

 

java面试100题(应届生必备) =对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而equals默认情况下是引用比较,只是很多类重新了equals方法,比如String、Integer等把它变成了值比较,所以一般情况下equals比较的是值是否相等。... 阅读详情

相关推荐

JAVA经典面试题附答案(持续更新版)

前言: 少年易老学难成,一寸光阴不可轻。未觉池塘春草梦,阶前梧叶已秋声 。—朱熹《劝学诗》 勤奋才是改变你命运的唯一捷径。 整理不易,各位看官点赞再看更舒适,养成好习惯(●′`●)1.JAVA中的几种基本类型,各占用多少字节? 下图单位是bit,非字节 1B=8bit 2.String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”abc”(直接赋一个字面量);其实和String str=

hjseo_seg的博客 1万+

java常见面试题(160道)

java常见面试题

打造专业技术博客 9万+

毕业论文管理系统的设计与实现

毕业论文工作是高等学校本科培养阶段的一个重要环节。目前论文管理工作存在着许多问题,例如人工管理极为不便;学生对论文所要撰写的内容并不十分了解,与指导老师的沟通非常不便;老师的指导监督也很难完全到位;手工评审的效率低等。而现有的一些毕业论文信息管理或答辩评审系统只是实现了部分网上交流和评审管理的功能,在答辩评审的自测和项目指标权重等方面都存在着一定的不足。因此,本文设计的毕业论文管理系统采用B/S模式开发。其中,Browser层使用JSP技术开发;

wqq_992250277的博客 3182

JAVA面试题大全(200+道题目)

面试题 一、Java 基础 1.JDK 和 JRE 有什么区别? 2.== 和 equals 的区别是什么? 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4.final在 java 中有什么作用? 5.java中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java中操作字符串都有...

qq_38078190的博客 13万+

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4

Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。

qq_31444421的博客 1万+

芯片Tapeout前GDS Review | Calibre中如何切出gds中指定区域版图?

芯片Tapeout GDS Review 之Calibre中如何切出指定区域版图GDS

weixin_37584728的博客 1786

105道Java面试题,认真思考对你面试很有价值!

一、Java基础 1、什么是面向对象? 2、JDK JRE JVM 3、==和equals比较 4、hashCode与equals 5、final 6、String、StringBuffer、StringBuilder 7、重载和重写的区别 8、接口和抽象类的区别 9、List和Set的区别 10、ArrayList和LinkedList区别 11、HashMap和HashTable有什么区别?其底层实现是什么? 12、ConcurrentHashMap原理,jdk7和jdk8版本的区别? 13、什么是字节

程序员追风的博客 2355

用Quartus II和LPM_ROM手把手复现西电计组课设:从微指令到五条指令的完整流程

本文详细介绍了使用Quartus II和LPM_ROM复现西电计组课设的完整流程,从微指令编写到五条指令的实现。通过环境搭建、LPM_ROM配置、微程序设计及调试技巧,帮助读者高效完成课程设计,避开常见问题。适合计组课程设计的学习者和实践者参考。

weixin_29288313的博客 456

105道Java面试题,认真思考对你面试很有价值

1、什么是面向对象?3、==和equals比较4、hashCode与equals5、final7、重载和重写的区别8、接口和抽象类的区别9、List和Set的区别10、ArrayList和LinkedList区别11、HashMap和HashTable有什么区别?其底层实现是什么?12、ConcurrentHashMap原理,jdk7和jdk8版本的区别?13、什么是字节码?采用字节码的好处是什么?14、Java中的异常体系15、Java类加载器16、双亲委托模型。

ch98000的博客 249

Mac用户解决WPS中的俄语显示红线问题(WPS添加外语拼写检查)

我所使用的WPS版本:AppleStore 下载的 MacOs版 3.3.0 首先,对于 在访达-应用程序中,找到WPS,右键-点击“显示包内容” 然后按照下图的索引目录(Contents\Resource\office6\dicts\spellcheck),最后进入一个叫“spellcheck”的文件夹 最后将下载好的字典包(例如上图中的 en_US就代表美式英语;ru_RU就代表俄语) 关于字典包资源下载,我在网上找到一个Google云盘,里面包含了法语,德语,西语,意大利语,葡萄牙.

qq_48159150的博客 7896

【Bug已解决】Codex CLI 报错 apply_patch 失败:无法应用补丁的解决方案

方案适用场景推荐指数统一换行符规范跨平台协作项目的标准配置⭐⭐⭐⭐⭐关闭自动格式化冲突IDE 与 Codex 并发编辑同一文件⭐⭐⭐⭐缩小任务改动范围长期有效的使用习惯优化⭐⭐⭐⭐⭐统一 UTF-8 编码涉及非 UTF-8 遗留文件的项目⭐⭐⭐提示重新读取文件单次失败后的快速恢复方式⭐⭐⭐⭐报错的本质是Codex 生成补丁时读取的文件内容,与实际应用补丁时磁盘上的文件内容出现了不一致,常见诱因包括换行符风格混用、文件被其他工具并发修改、编码问题等。

一键难忘的博客 7298

105 道 Java 面试题,认真思考对你面试很有价值!

一、Java 基础 1、什么是面向对象? 2、JDK JRE JVM 3、==和 equals 比较 4、hashCode 与 equals 5、final 6、String、StringBuffer、StringBuilder 7、重载和重写的区别 8、接口和抽象类的区别 9、List 和 Set 的区别 10、ArrayList 和 LinkedList 区别 11、HashMap 和 HashTable 有什么区别?其底层实现是什么? 12、ConcurrentHashMa..

Java架构师之路的博客 162

连续相位调制通信调制方法的载波同步和定时同步研究及MATLAB仿真

本文将探讨CPM调制方法中的载波同步和定时同步问题,并提供MATLAB仿真源代码。本文讨论了连续相位调制通信中的载波同步和定时同步问题,并提供了相应的MATLAB仿真源代码。通过适当的载波同步和定时同步方法,可以实现对CPM信号的准确解调。希望本文对您理解连续相位调制通信调制方法的载波同步和定时同步问题有所帮助,同时也为您提供了一些MATLAB仿真实现的思路和示例代码。在CPM系统中,载波同步的主要任务是估计接收信号的载波频率偏移和相位偏移。在CPM系统中,常用的定时同步方法是基于自相关函数的峰值检测。

2301_79331230的博客 692
上一篇: 企业实战之阿里druid统一监控方案,你了解吗?
下一篇: 阿里顶级技术官 500 页网络协议手记,限时开源
java小姜在线冲
博客等级 码龄4年 53粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值