
Java面试官常问部分面试题(2021)
发布日期:2021-05-10 14:35:07
浏览次数:24
分类:精选文章
本文共 2268 字,大约阅读时间需要 7 分钟。
Java基础
一:Java基础
1. 面向对象的三大特征
封装、继承、多态是Java语言的三个主要特征,它们共同定义了面向对象的编程范式。
2. 迁移与重写的区别
重载和重写是Java中方法的多态性概念。需要注意的是,它们有明显的区别:
- 重载:发生在同一个类中,方法名必须相同,但参数列表可以不同。这意味着具有相同方法名但不同参数的方法可以共存。
- 重写:发生在子类中,与父类方法有相同的名称和参数列表。有几点需要注意:
- 两同:方法名和形参列表完全相同。
- 两小:子类方法的返回类型要比父类方法更小或相等,抛出的异常类也应更小或相等。
- 一大:子类方法的访问权限要比父类方法更大或相等。
3. Java中的值传递
Java语言中,基本类型和引用类型的值传递有以下区别:
- 基本类型:值被复制,方法参数的修改不会影响原值。
- 引用类型:引用的地址被复制,但实际上的对象可能共享,方法可能修改目标对象的状态。
4. ==、equals和hashCode的区别
- ==:比较的是对象的内存地址,常用于值类型和数组。
- equals:比较的是对象的值。在许多情况下,equals应重写,用于比较对象的逻辑相等性。
- hashCode:用于计算对象的哈希值,这有助于在哈希表中快速定位对象。
5. String、StringBuffer和StringBuilder的区别
- String:不可变性强,线程安全性高,性能相对较低。
- StringBuffer和StringBuilder:都可变性强,但线程安全性取决于实现。StringBuffer线程安全,StringBuilder不线程安全。
6. 反射机制
反射机制允许程序在运行时对类、对象等进行动态操作。常见应用:
- JDBC中使用
Class.forName()
加载驱动程序。 - Spring框架的IOC和AOP使用反射机制。
7. 创建线程的方式
- 继承Thread类:定义线程类并重写
run()
方法。 - 实现Runnable接口:创建线程,设置目标类和
start()
方法。
8. Synchronized与ReentrantLock的区别
- synchronized:关键字,基于对象锁机制,不支持中断。ReentrantLock支持_percent_设置等待时间和多路通知。
- ReentrantLock:可作为可重入锁,可以反柯里Colonel触发。
9. 线程的生命周期
线程在执行过程中会经历多个状态:新生、就绪、运行、阻塞、等待、终止。
10. 避免线程死锁的方法
通过破坏互斥条件、破坏请求与保持条件、破坏不占资源、破坏循环等待条件来尽量减少死锁。
二:Redis
1. Redis与Memcached的区别
- 数据类型:Redis支持丰富数据类型,而Memcached仅支持字符串。
- 性能:Redis速度更快。
- 持久化:Redis支持数据持久化。
- IO模型:Redis采用单线程多路复用模型。
2. Redis的常见数据类型及其使用场景
- String:计数器、点赞数。
- List:消息队列。
- Hash:存储对象的数据。
- Set:存储不重复的数据。
三:Spring框架
1. IOC和AOP
- IoC:将对象创建的控制权转交给Spring框架。
- AOP:面向切面编程,处理事务、日志等无关功能。
2. Spring的Bean线程安全性
默认情况下,Bean不是线程安全的。需要根据需求配置scope
属性为prototype
,或者使用单例模式。
3. Spring的Bean生命周期
Bean的生命周期包括初始化、使用、销毁等阶段,会根据不同配置进行处理。
4. SpringMVC工作原理
- DispatcherServlet处理请求,通过HandlerMapping获取适当的处理器。
- Handler执行后,返回ModelAndView,经过ViewResolver转换为视图,进行渲染。
5. SpringBoot的核心注解原理
@SpringBootApplication
:包括@SpringBootConfiguration
、@EnableAutoConfiguration
、@ComponentScan
。- 容器创建对应配置文件,通过反射动态加载配置。
6. SpringCloud组件
- Eureka:服务发现与注册。
- Ribbon:客户端负载均衡。
- Hystrix:断路器。
- Zuul:服务网关。
- Spring Cloud Config:分布式配置。
四:MySQL
1. 事务与隔离级别
常见的隔离级别及其特点:
- READ-UNCOMMITTED:不保证一致性,可能导致脏读、不可重复读、幻读。
- READ-COMMITTED:保证已提交的事务被读取到。
- REPEATABLE-READ:多次读取结果一致性。
- SERIALIZABLE:最高隔离级别,确保一致性。
2. 索引结构
- MyISAM:使用B+树,索引文件与数据文件分离。
- InnoDB:索引逻辑结构与数据存储紧密结合,主索引在叶节点数据部分。
- MyISAM与InnoDB:InnoDB支持行级锁与事务环境。
五:设计模式
1. 单例模式
- 饿汉式:在类加载时创建对象。
- 懒汉式:通过静态变量控制对象创建时机。
2. 装饰模式
通过动态地装饰对象,使其行为类型增加或修改。实现类层次间的松耦合。
通过以上内容可见,Java&&Redis&&MPNPJava技术在设计中具有广泛的应用和重要的实现技巧,了解这些基础知识是掌握后续学习的重要前提。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月01日 07时57分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java合同管理(源码+mysql+文档)
2023-01-28
Java合同管理系统(源码+mysql+文档)
2023-01-28
Java合肥市公务员报名管理系统(源码+mysql+文档)
2023-01-28
Java合肥惠康养老平台app(源码+mysql+文档)
2023-01-28
Java后台处理ajax跨域请求处理
2023-01-28
Java后台测试技巧
2023-01-28
java后台通过http请求下载文件
2023-01-28
Java后端使用socketio,实现小程序答题pk功能
2023-01-28
Java后端开发书架
2023-01-28
Java后端开发:推荐常用的13款开发工具(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-28
JAVA后端知识点长啥样?
2023-01-28
Java和JavaScript区别与联系
2023-01-28
Java基础学习总结(45)——JAVA单元测试工具比较
2023-01-28
Java基础学习总结(47)——JAVA输入输出流再回忆
2023-01-28
Java基础学习总结(48)——Java 文档注释
2023-01-28
Java基础学习总结(4)——对象转型
2023-01-28
Java基础学习总结(4)——对象转型
2023-01-28
Java基础学习总结(51)——JAVA分层理解
2023-01-28
Java基础学习总结(52)——Liunx系统Centos上搭建Java开发环境
2023-01-28