首页 > 其他分享 >面试题5-2

面试题5-2

时间:2023-05-02 22:12:34浏览次数:51  
标签:文件 面试题 文件系统 扇区 索引 inode 链接

一、硬链接与软链接的区别?

​ 硬链接是具有相同inode号的不同名字的文件,删除一个硬链接文件不影响具有相同inode的文件。硬链接只能是对同一文件系统中的文件进行链接。不能对目录进行创建。软链接有自己的inode。文件用户数据块里面存放的内容就是文件的绝对路径。软链接可以用来进行路径化简,也可以解决空间不足的问题。

二、linux文件系统介绍?

​ Linux文件系统的定义:提供一种对操作系统和计算机系统所有用户数据和程序的存储和访问机制。

文件:一组有结构的信息集合。用户眼里是有逻辑结构的,在系统的眼里是一堆二进制。逻辑结构<->物理结构。

文件的属性:

​ 文件名。

​ 拓展名。

​ 日期和时间。

​ 大小。

​ 用户属性:

​ Owner

​ Group

​ Other

​ 访问控制属性:

​ read

​ write

​ execute

目录:一种保存文件控制信息的数据结构。作用:列出所有文件。增删改文件。一个目录里面,有很多entries,里面每一个条目都是一个文件的控制信息。

文件类型:对于操作系统来说,主要就是ASCII文件,可执行文件。其他的交给APP解决。

前置知识:

硬盘的高级格式化:构建一个文件系统。主要就是构建分区表和目录。分区表:用来划分磁盘。目录记载了FCB。

常见的分区表:不同的分区具有不同的分区表。

a. MBR分区的起始扇区是2048,前面的0~2047是保留扇区,第0号扇区是MBR(512Byte)。MBR扇区包含的是440字节的boot loader。还有64字节的分区表,有4个16字节的条目,所以MBR只能分成4个区(为了超过这个限制,又想出了拓展分区这种概念),还有2个字节的引导签名。如果扇区号(LBA,逻辑块地址)用4个字节来进行编排,那么最大扇区数为\(2^{32}\)个,所以最大支持2T Bytes。

b. GPT分区。其实MBR中,也早就不拿扇区作为单位了,现在都用全局统一标识符(GUID)。GPT分区按照LBA模式进行编排。第0号扇区Protective MBR主要是为了兼容。2-33号扇区都是用来存放分区信息的,一个分区信息占用128个字节,所以可以放下32*4=128个分区。扇区号用8个字节进行标识,所以存下$2^{64} * 512 = 8 $Z Bytes。

du命令:看一下一个文件磁盘占用情况。发现一个文件占用的实际空间比应该占用的磁盘空间大的多(12

bytes的可以占4k的磁盘空间)。这是因为:磁盘的分配是以扇区来进行分配的,但是文件系统进行空间分配的时候是8个扇区(4k)为单位进行空间分配的。这叫一个簇。

stat命令:查看文件的目录项。里面包含文件名,大小,占用扇区数,簇大小。Inode编号,链接数等等。还记录了一些时间和控制信息。这里的inode是什么呢,这叫做索引节点。

文件系统要做什么?首先文件控制块是一种数据结构,叫做FCB,记录的文件的属性,还有对应的数据块的指针。

a. 文件目录:按照名字找到文件。FCB与文件内容的关联,按照名字搜索的效率。这两个问题需要解决。第一个在unix下面是通过名字+inode来解决的。inode就是unix下面的FCB。搜索名字可以通过哈希等方法来解决。这样的好处是目录项只包括了名字+inode。

b. 分配方法:线性分配,优点是快速并且可以随机存取。缺点是容易产生碎片(外部),增加和删除不方便。

链接分配:不需要连续,没有碎片。缺点:一个数据块要有指向下一个数据块的指针,有空间被浪费。有安全风险,因为它可能会断链,且必须从头访问。为了让指针少一点,可以按簇分配。Windows的文件系统就是这么工作的,维护了一个FAT表。FAT文件系统就是只维护一个start block,FAT表可以根据上一个block号,找下一个block号。

索引分配:将文件占用的所有物理块号按照逻辑顺序保存在一张索引表里面,存有索引表的物理块被称为索引块。

优点:随机访问,快速。但是索引块要占用空间。

unix采用的是一个索引分配方案。多级索引,一共有三级索引。所谓的多级索引,就是索引块里面套索引块。有12个直接块。第一级,一个block有512 bytes,一个地址有4Byte。所以可以存128个block。double呢?128*128个。triple的物理块\(128X128X128\)个。但是ext4里面丢掉了多级索引的这种方式。采用的方式是B树的实现方式。

https://blog.csdn.net/stephen_curry300/article/details/128773721

https://zhuanlan.zhihu.com/p/472419492

目录其实也是文件,在ext文件系统中采用了hash btree(htree)来管理。

c.空闲空间管理。用一个bitmap来管理空闲块。还有一种策略是linked list。

linux其实可以支持多个文件系统,在内核中就存在了VFS这种接口。我们需要做的事情就是用它的API,这样就剥离了直接操作文件系统,各个系统之间不兼容的问题。

三、联合索引最左匹配原则。

这个就是说如果建立了(a,b,c)的联合索引。就是已经建立了(a),(a,b),(a,b,c)上的索引。

Explain select* from test where a=1 and b=1;Explain select* from test where b=1 and a=1;

都用到了索引,因为mysql自动优化查询条件来匹配索引。只用b=1会不会用复合索引,答案是会!只要是索引或者满足索引的一部分就可以用index方式扫描。

https://www.cnblogs.com/sochishun/p/14605317.html

四、分库分表

​ 主要包括垂直分库,垂直分表。把高频字段拆出来,避免了IO争抢以及锁表的机率。

​ 水平分库,水平分表。水平分表的时候,按照range+hash取模的方式避免数据热点问题。

https://blog.csdn.net/qq_38173650/article/details/127277497

标签:文件,面试题,文件系统,扇区,索引,inode,链接
From: https://www.cnblogs.com/JohnRan/p/17368388.html

相关文章

  • Less 相关面试题
    一、Less是什么?Less(LeanerStyleSheets的缩写)是一门向后兼容的CSS扩展语言。二、声明变量@变量名:变量值 三、less封装函数less还可以像js一样的来封装函数,需要时可以直接调用。.borderName(@px){border-radius:@px;}.box5{.borderName(10px)}......
  • 2023前端面试题二
    图片png无损压缩,尺寸体积要比jpg的大,适合做小图标jpg采用压缩算法,有一点失真,比png体积要小,适合做中大图片gif一般是做动图的webp同时支持有损或者无损压缩,相同质量的图片,webp具有更小的体积css的盒子模型标准盒子模型margin/border/padding/contentie盒子模型marg......
  • 17、架构师面试题系列之Maven面试专题及答案(18题)
    架构师面试题之Maven专题篇一、Maven有哪些优点和缺点优点如下:1.简化了项目依赖管理:2.易于上手,对于新手可能一个"mvncleanpackage"命令就可能满足他的工作3.便于与持续集成工具(jenkins)整合4.便于项目升级,无论是项目本身升级还是项目使用的依赖升级。5.有助于多模块项目的开发,......
  • SpringBoot高频面试题
    Springboot的优点内置servlet容器,不需要在服务器部署tomcat。只需要将项目打成jar包,使用java-jarxxx.jar一键式启动项目SpringBoot提供了starter,把常用库聚合在一起,简化复杂的环境配置,快速搭建spring应用环境可以快速创建独立运行的spring项目,集成主流框架准生产环境的......
  • #yyds干货盘点# LeetCode面试题:解码方法
    1.简述:一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A'->"1"'B'->"2"...'Z'->"26"要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:"AAJF" ,将消息分组为 (11106)"KJF......
  • 美团面试题:慢SQL有遇到过吗?是怎么解决的?
    大家好,我是田维常,可以叫我老田,也可以叫我田哥。2017年的时候,我刚去上海,朋友内推我去美团面试,之前我也写过一个一篇文章,也是在美团面试中遇到的:美团面试题:Strings=newString("111")会创建几个对象?关于慢SQL,我和面试官扯了很久,面试官也是很谦虚的,总是点头,自己以为回答的还可以。......
  • Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?(文末福利)
    hi大家好我是田哥今天,给大家分享一些面试干货。我们每次面试基本上都是超过一个小时的,面试官肯定会问很多问题,其实也不是需要我们全部能回答上来。但是,关键点如果回答不上来,就算你其他的回答的不错,也没用,最终offer还是不会给你的。好吧,话不多说,我们直接开始:自我介绍很多人觉得自......
  • #yyds干货盘点# LeetCode面试题:子集 II
    1.简述:给你一个整数数组nums,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。返回的解集中,子集可以按任意顺序排列。 示例1:输入:nums=[1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例2:输入:nums=[0]输出:[[],[0]]2.代码实现:classSolu......
  • Dubbo常见面试题
    关注Java后端技术栈“回复“面试”获取最新资料其实关于Dubbo的面试题,我觉得最好的文档应该还是官网,因为官网有中文版,照顾了很多阅读英文文档吃力的小伙伴。但是官网内容挺多的,于是这里就结合官网和平时面试被问的相对较多的题目整理了一下。1,说说一次Dubbo服务请求流程?基本工作流......
  • Java高频面试题和答案
    一、Java基础篇Object有哪些常用方法?大致说一下每个方法的含义Java创建对象有几种方式?获取一个类对象的方式有哪些?ArrayList和LinkedList的区别有哪些?用过ArrayList吗?说一下它有什么特点?有数组了为什么还要搞个ArrayList呢?说说什么是fail-fast?Hashtable与HashMap的区......