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技术在设计中具有广泛的应用和重要的实现技巧,了解这些基础知识是掌握后续学习的重要前提。

上一篇:ArrayList 底层源码扩容机制分析
下一篇:Redis命令语法大全

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月01日 07时57分05秒