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

Java面试黄金宝典41

1. IO 种类

 

  • 定义

在 Java 里,IO(输入 / 输出)主要分为字节流和字符流这两种类型。字节流以字节为单位处理数据,适合处理二进制数据,像图片、音频、视频等;字符流以字符为单位处理数据,适用于处理文本数据。

  • 要点
  1. 字节流处理二进制数据,字符流处理文本数据。
  2. 字节流的基类是 InputStream 和 OutputStream,字符流的基类是 Reader 和 Writer
  • 应用

在实际开发中,读取图片等二进制文件用字节流,读取文本文件用字符流。比如读取配置文件、保存图片等场景。

  • 代码示例

java

import java.io.*;

public class IODemo {
    public static void main(String[] args) {
        // 字节流示例:复制图片
        try (FileInputStream fis = new FileInputStream("input.jpg");
             FileOutputStream fos = new FileOutputStream("output.jpg")) {
            int byteRead;
            while ((byteRead = fis.read()) != -1) {
                fos.write(byteRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 字符流示例:读取文本文件
        try (FileReader fr = new FileReader("input.txt");
             BufferedReader br = new BufferedReader(fr)) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

2. 先进先出置换算法(FIFO)

 

  • 定义

FIFO 是一种页面置换算法,当内存空间不足时,该算法会选择最先进入内存的页面进行置换。

  • 要点
  1. 简单易实现,只需一个队列记录页面进入内存的顺序。
  2. 可能出现 Belady 异常,即增加页面帧数时,缺页率反而增加。
  • 应用

在一些对内存管理要求不高的简单系统中使用,例如早期的一些小型操作系统。

  • 代码示例

java

import java.util.LinkedList;
import java.util.Queue;

public class FIFOPageReplacement {
    public static int pageFaults(int[] pages, int capacity) {
        Queue<Integer> queue = new LinkedList<>();
        int pageFaults = 0;
        for (int page : pages) {
            if (!queue.contains(page)) {
                if (queue.size() == capacity) {
                    queue.poll();
                }
                queue.add(page);
                pageFaults++;
            }
        }
        return pageFaults;
    }

    public static void main(String[] args) {
        int[] pages = {1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5};
        int capacity = 3;
        System.out.println("Page faults: " + pageFaults(pages, capacity));
    }
}

 

3. 最近最久未使用(LRU) 算法

 

  • 定义

LRU 算法是一种页面置换算法,它会选择最近最久未使用的页面进行置换。

  • 要点
  1. 性能较好,能较好地反映程序的局部性原理。
  2. 实现相对复杂,需维护一个链表记录页面的使用顺序。
  • 应用

常用于缓存系统,如浏览器缓存、数据库缓存等,以提高数据的访问效率。

  • 代码示例

java

import java.util.LinkedHashMap;
import java.util.Map;

public class LRU

相关文章:

  • k8s 1.30.6版本部署(使用canal插件)
  • Axure中继器(Repeater): 列表展示
  • 火山模型的优缺点与优化实践 | OceanBase SQL优化
  • C++·包装器
  • 新一代达梦官方管理工具SQLark:可视化建表操作指南
  • verilog有符号数的乘法
  • 华为存储考试内容HCIP-Storage
  • RPC 2025/4/8
  • 【QT】 进程
  • 企业级Java开发工具MyEclipse v2025.1——支持AI编码辅助
  • QML面试笔记--UI设计篇01常用控件分类
  • MFC工具栏CToolBar从专家到小白
  • Springboot框架—单元测试操作
  • 【MATLAB例程】基于鲁棒卡尔曼滤波的弹性状态估计与欺骗攻击检测
  • Github 热点项目 ChartDB AI自动导表结构+迁移脚本,3分钟生成专业数据库关系图
  • 【安全】Web渗透测试(全流程)_渗透测试学习流程图
  • NO.77十六届蓝桥杯备战|数据结构-单调队列|质量检测(C++)
  • PG数据库中级证书含金量高吗
  • 鸿蒙NEXT开发资源工具类(ArkTs)
  • PHP+Vue 3实现增删改查(CRUD)
  • 手机免费制作ppt/陕西网络营销优化公司
  • 邳州哪家做百度推广网站/软文写作范例大全
  • 数据 导入 wordpress/杭州seo全网营销
  • wordpress支持pdo/洛阳搜索引擎优化
  • 西安网站制作排名/q群排名优化软件
  • 手机app软件开发的价格/淘宝优化标题都是用什么软件