C/C++ 面试复习笔记(5)

news/2025/6/19 17:52:04

1.用户态和内核态切换的开销来自哪里?如何减少这种开销?

主要开销:

上下文保存与恢复:需保存/恢复寄存器、堆栈等状态(约数百CPU周期)。

CPU 模式切换:从用户态到内核态的权限检查及模式切换。

缓存失效:TLB(页表缓存)和CPU数据缓存可能因内核代码执行而失效。

内核代码执行:内核处理系统调用的逻辑耗时(如文件I/O、网络协议栈)。

优化方法:

批量处理:合并多次系统调用为单次(如readv/writev矢量I/O)。

零拷贝技术:减少数据在内核与用户态间的拷贝(如sendfile())。

用户态驱动:绕过内核直接操作硬件(如DPDK网络包处理)。

异步I/O:使用epoll或io_uring减少阻塞等待。

2.硬链接(Hard Link)和软链接(Symbolic Link)的区别是什么?

3.如何查找系统中所有大于100MB的日志文件(.log)并删除?

find / -type f -name "*.log" -size +100M -exec rm {} \;

解释:

/ :从根目录开始搜索

-type f :仅搜索文件

-size +100M :大小超过 100MB

-exec rm {} \; :对匹配文件执行 rm命令

4.i节点(Inode)中存储了哪些关键信息?为什么i节点不包含文件名?

i 节点存储的关键信息:

文件类型(普通文件、目录、符号链接等)。

文件权限(读、写、执行权限)。

文件所有者(UID)和所属组(GID)。

文件大小(字节数)。

时间戳(创建时间、最后访问时间、最后修改时间)。

指向数据块的指针(直接指针、间接指针等)。

硬链接计数(引用该i节点的目录项数量)。

不包含文件名:文件名存储在目录项(Dentry)中,而非i节点。

这种设计允许多个文件名 (硬链接)指向同一个i节点,实现文件共享。

5.文件表项(File Table Entry)和 V 节点(Vnode)分别存储什么信息?它们的核心区别是什么?

6.什么是文件空洞(File Hole)?它的主要特征是什么?文件空洞在哪些实际场景中被广泛应用?举例说明。

定义: 文件空洞是文件中未被显式写入数据的区域,逻辑上存在(文件大小包含这部分),但物理上不占用磁盘空间。

特征:

逻辑大小 > 物理大小:通过ls -l显示的文件大小大于du命令显示的磁盘占用。

读取时返回零:访问空洞区域时,系统返回零值字节(但实际未存储)。

节省磁盘空间:文件系统仅分配实际写入数据的块,跳过空洞。

实际场景:

虚拟机磁盘映像: 虚拟机(如QEMU的qcow2格式)使用空洞表示未分配空间,避免占用宿主机实际存储。

数据库预分配文件: 数据库(如MySQL)预分配大文件用于存储数据,初期仅使用部分空间,其余为空洞。

日志文件滚动: 应用预先创建大日志文件,逐步写入数据,避免频繁扩容操作。

科学计算数据存储: 存储稀疏矩阵或大量默认值的数据集时,通过空洞节省空间。


https://dhexx.cn/news/show-5537648.html

相关文章

CppCon 2015 学习:Time Programming Fundamentals

Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…

对比一下blender快捷键:p和alt+p

在 Blender 中,P 和 Alt P 虽然看起来相似,但它们作用在不同的上下文(Mode)下,并完成完全不同的操作: 何时使用哪一个? 想要把模型的一部分从当前网格里拆分出来**,就进入 Edit Mod…

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…

打开GitHub网站因为网络原因导致加载失败问题解决方案

Date: 2025.06.09 20:34:22 author: lijianzhan 在Windows系统中,打开GitHub网站因为网络原因导致加载失败问题解决方案 打开Windows系统下方搜索框,搜索Microsoft Store,并且双击打开 在应用里面搜索Watt Toolkit,并下载安装 …

Linux文件管理和输入输出重定向

文件管理 Bash执行命令 passwd passwd普通用户修改密码 passwd robinkoolroot用户管理账户密码 passwd -d robinkoolroot用户删除普通用户密码 file file /bin/filecat cat option 文件 cat -A /etc/hosts #-A选项等于-VETcat /etc/hosts /etc/fstab一次性查看多个文件…

Linux线程互斥与竞态条件解析

Linux线程互斥及相关概念解析 1. 临界资源(Critical Resource) 定义:被多个线程共享的资源(如变量、文件、内存区域等),需通过互斥访问确保数据一致性。特点: 共享性:多个线程可能…

[Java 基础]Object 类

java.lang.Object 是 Java 所有类的直接或间接父类,Java 中每个类都默认继承 Object 类(即使你没写 extends Object)。 Object 中的常用方法: 方法名功能简介toString()返回对象的字符串表示equals(Object)判断两个对象是否“逻…

el-select下拉框 添加 el-checkbox 多选框

效果 vue <el-select v-model"value" multiple style"width: 100%" popper-class"select-popover-class" placeholder"请选择试验项目"><el-option v-for"item in options" :key"item.value" :value&qu…

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…