当前位置: 首页 > article >正文

Java面试题基础篇3:10道基础面试题

文章目录

  • 前言
  • 21、面向对象五大基本原则
  • 22、区别静态变量和实例变量
  • 23、内部类
  • 24、IO流
  • 25、多态实现条件
  • 26、流程控制
  • 27、数组
  • 28、Java类与对象
  • 29、方法与函数
  • 30、运算符

前言

亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com

21、面向对象五大基本原则

①单一职责原则:SRP(Single Responsibility Principle)类的功能要单一。

②开放封闭原则:OCP(Open-Close Principle)一个模块对拓展开放,对修改封闭。

③里式替换原则:LSP(the Liskov Substitution Principle LSP)子类替换父类方法和属性。

④依赖倒置原则:DIP(the Dependency Inversion Principle DIP)高层模块不应该依赖于低层模块,都应该依赖于抽象。抽象不依赖于具体实现,具体实现依赖于抽象。

⑤接口分离原则:ISP(the Interface Segregation Principle ISP)采用多个与特定客户类有关接口比采用一个通用接口要好。

22、区别静态变量和实例变量

①静态变量: 静态变量不属于任何实例对象,属于类,在内存中只有一份,在类的加载过程中,JVM只为静态变量分配一次内存空间

②实例变量: 每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象,在内存中,创建几次对象,就有几份成员变量。

23、内部类

①定义:在Java中,将一个类的定义放在另外一个类的定义内部。内部类本身是类的一个属性,与其他属性定义方式一致。

②分类:成员内部类、局部内部类、匿名内部类和静态内部类。

24、IO流

①java中IO流分类
按照流的流向划分,分为输入流和输出流;
按照操作单元划分,分为字节流和字符流;
按照流的角色划分,分为节点流和处理流。
Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼 此之间存在非常紧密的联系,

Java I0流的40多个类都是从如下4个抽象类基类中派生出来。
i:InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。
ii:OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。
② 区别BIO,NIO,AIO

i:BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

ii:NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过Channel(通道)通讯,实现多路复用。

iii:AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO,异步 IO 的操作基于事件和回调机制。

详细解释:
BIO(Blocking I/O):同步阻塞 I/O 模型,数据读写必须阻塞在一个线程内完成,适用于连接数较少(<1000)的场景,编程简单且易维护。但在高并发场景(如十万级连接)下,BIO 模型性能受限,无法满足需求。

NIO(New I/O):同步非阻塞 I/O 模型,引入于 Java 1.4,基于 Channel(通道)、Selector(选择器)、Buffer(缓冲区) 进行 I/O 操作,支持非阻塞模式,适用于高并发场景。NIO 提供了 SocketChannel、ServerSocketChannel,相较于 BIO,可提升 I/O 性能,但仍然是同步操作。

AIO(Asynchronous I/O):即 NIO 2(Java 7 引入),基于事件驱动和回调机制的异步非阻塞 I/O 模型,I/O 操作由系统异步处理,完成后通知应用层。AIO 解决了 NIO 仍然同步的问题,但实际应用较少,Netty 也曾尝试使用 AIO,但最终放弃。

25、多态实现条件

三个必要条件:继承、重写、向上转型。

①继承:在多态中必须存在有继承关系的子类和父类。

②重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

③向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

26、流程控制

①条件语句
if-else

int num = 10;
if (num > 0) {
    System.out.println("正数");
} else {
    System.out.println("非正数");
}

switch

int day = 2;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    default:
        System.out.println("Other day");
}

(2)循环语句
for

for (int i = 1; i <= 5; i++) {
    System.out.println("i: " + i);
}

while

int i = 1;
while (i <= 5) {
    System.out.println("i: " + i);
    i++;
}

do-while

int i = 1;
do {
    System.out.println("i: " + i);
    i++;
} while (i <= 5);

27、数组

数组是存储多个相同类型数据的容器。
①一维数组

int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr[2]);  // 输出3
②二维数组
int[][] matrix = {{1, 2, 3}, {4, 5, 6}};
System.out.println(matrix[1][2]);  // 输出6

28、Java类与对象

class Person {
    String name;
    int age;

    void display() {
        System.out.println(name + " is " + age + " years old.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person();  // 创建对象
        p.name = "Alice";
        p.age = 25;
        p.display();
    }
}

29、方法与函数

Java 使用 方法(Method) 组织代码,提高复用性。

public class MethodExample {
    // 方法定义
    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int sum = add(5, 10);  // 方法调用
        System.out.println("Sum: " + sum);
    }
}

30、运算符

Java 提供 算术、关系、逻辑、位运算、赋值 等运算符。
①算术运算符

  • 加法 a + b
  • 减法 a - b
  • 乘法 a * b
    / 除法 a / b
    % 取余 a % b
int a = 10, b = 3;
System.out.println("加法: " + (a + b));  // 13
System.out.println("除法: " + (a / b));  // 3(整数除法)
System.out.println("取余: " + (a % b));  // 1

②关系运算符
例(a=10, b=5)

==	等于	a == b → false
!=	不等于	a != b → true

```bash
>	大于	a > b → true
<	小于	a < b → false
>=	大于等于	a >= b → true
<=	小于等于	a <= b → false

`


http://www.kler.cn/a/534153.html

相关文章:

  • 使用线性回归模型逼近目标模型 | PyTorch 深度学习实战
  • 自指学习:AGI的元认知突破
  • 【C++】STL——list底层实现
  • 基于“蘑菇书”的强化学习知识点(五):条件期望
  • 25.02.04 《CLR via C#》 笔记14
  • 差值 dp 入门
  • 安装和卸载RabbitMQ
  • 基于Javascript的封装、方法重载、构造方法
  • 【ArcGIS Pro简介2】
  • 1. Kubernetes组成及常用命令
  • DeepSeek 与 ChatGPT 对比分析
  • Linux 常用命令与实战教程
  • HTTP请求响应周期步骤
  • 基于Ubuntu2404搭建Zabbix7.2
  • 1. 初识spark
  • 在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别
  • 智慧楼宇的监控都用上3D形式了,2D要摒弃了。
  • 电脑开机提示按f1原因分析及终极解决方法来了
  • 【力扣】49.字母异位词分组
  • 消费kafka消息示例
  • 100.6 AI量化面试题:如何评估AI量化模型的过拟合风险?
  • 【Elasticsearch】Geo-distance聚合
  • 如何查看docker的containers 那个日志最大
  • Apache HttpClient
  • 在Spring Cloud中将Redis共用到Common模块
  • Redis有哪些常用应用场景?