Java面试50问,女面试官最喜欢问的居然是它!

简介: Java面试50问,女面试官最喜欢问的居然是它!

[] 什么是接口和抽象类?

在Java中,接口(Interface)和抽象类(Abstract Class)都是实现面向对象编程中抽象化概念的工具,但它们有以下不同之处:

接口(Interface)

1. 定义:接口是一种完全抽象的类,它可以包含常量和方法的签名,但不能有任何的实现代码。
2. 成员变量:接口中的变量默认是public static final的,这意味着它们是常量。
3. 方法:接口中的方法默认是public abstract的,但Java 8允许接口中存在默认方法(带有实现的方法)和静态方法。
4. 实现:要使用接口,必须通过一个具体类来实现(implements)它。实现类必须提供接口中所有方法的具体实现。
5. 多重继承:一个类可以实现多个接口,这允许实现多重继承的功能。
6. 使用场景:接口常用于定义一组类应遵循的契约或行为规范。

抽象类(Abstract Class)

1. 定义:抽象类是一种不完整的类,它包含抽象方法和具体方法。
2. 成员变量:抽象类中的变量可以是任意类型的,没有默认的访问修饰符。
3. 方法:抽象类可以有抽象方法(没有方法体)和具体方法(有方法体)。
4. 继承:要使用抽象类,必须通过一个具体子类来继承(extends)它。子类可以继承抽象类的具体方法,并且必须提供所有抽象方法的具体实现。
5. 单继承:Java中的类只能继承一个类,但可以实现多个接口。
6. 使用场景:抽象类常用于定义一个类的基本轮廓,它提供了一些实现细节,同时为子类留下一些抽象部分。

接口和抽象类的主要区别:

- 抽象程度:接口是完全抽象的,而抽象类可以包含具体的实现细节。
- 多重继承:类可以实现多个接口,但只能继承一个抽象类。
- 成员变量:接口中的变量默认是公共的静态常量,而抽象类中的变量可以是任意类型。
- 方法实现:接口中的方法默认是抽象的,不能有实现(除非是默认方法),而抽象类可以有抽象方法和具体方法。
- 构造器:抽象类可以有构造器,接口不能有。
- 访问修饰符:接口的方法默认是公共的,不能有访问修饰符;抽象类的方法可以有访问修饰符。

选择使用接口还是抽象类取决于具体的设计需求。如果需要定义一组不相关类共有的行为,可以使用接口。如果需要定义一个基类,它提供了一些共同的属性和方法,并且想要强制子类提供其他方法的实现,那么抽象类是更好的选择。

[] 什么是单例模式?

单例模式(Singleton Pattern)是一种常用的软件设计模式,其核心目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式在Java中的实现通常遵循以下几个原则:

1. 私有构造函数:为了防止外部通过new操作符创建类的多个实例,单例类的构造函数是私有的。

2. 静态私有实例:类自身持有其唯一实例的引用,这个实例通常是静态的,因为这样即使多次获取单例对象,返回的都是同一个对象。

3. 公有的静态方法:提供一个公有的静态方法,通常是getInstance,用于返回类的唯一实例。如果实例不存在,该方法会创建一个实例;如果已存在,则直接返回该实例。

单例模式的实现方式有多种,以下是几种常见的实现方法:

懒汉式(线程不安全)

public class Singleton {
   private static Singleton instance;

   private Singleton() {}

   public static Singleton getInstance() {
       if (instance == null) {
           instance = new Singleton();
       }
       return instance;
   }
}

懒汉式(线程安全)

public class Singleton {
   private static Singleton instance;

   private Singleton() {}

   public synchronized static Singleton getInstance() {
       if (instance == null) {
           instance = new Singleton();
       }
       return instance;
   }
}

饿汉式

public class Singleton {
   private static final Singleton instance = new Singleton();

   private Singleton() {}

   public static Singleton getInstance() {
       return instance;
   }
}

静态内部类

public class Singleton {
   private Singleton() {}

   private static class SingletonHolder {
       private static final Singleton INSTANCE = new Singleton();
   }

   public static Singleton getInstance() {
       return SingletonHolder.INSTANCE;
   }
}

枚举实现

public enum Singleton {
   INSTANCE;

   public void someMethod() {
       // 实例方法
   }
}

单例模式在以下场景中非常有用:

- 当一个类只能有一个实例时,如配置管理器、连接池等。
- 当创建对象的资源非常昂贵,需要重复利用时。

然而,单例模式也有一些缺点,例如它可能会使代码难以测试,并且违反了高内聚低耦合的原则。因此,在决定使用单例模式时,需要仔细权衡其优缺点。

相关文章
|
6月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
6月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
8月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
372 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
8月前
|
缓存 Java 关系型数据库
Java 面试经验总结与最新 BAT 面试资料整理含核心考点的 Java 面试经验及最新 BAT 面试资料
本文汇总了Java面试经验与BAT等大厂常见面试考点,涵盖心态准备、简历优化、面试技巧及Java基础、多线程、JVM、数据库、框架等核心技术点,并附实际代码示例,助力高效备战Java面试。
320 0
|
8月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
839 0
|
8月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
583 0
|
9月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
492 1
|
9月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
258 5
|
9月前
|
安全 Java API
2025 年 Java 校招面试常见问题及详细答案汇总
本资料涵盖Java校招常见面试题,包括Java基础、并发编程、JVM、Spring框架、分布式与微服务等核心知识点,并提供详细解析与实操代码,助力2025校招备战。
425 1