《对线面试官》 高频 Linux 面试题 Part2(1)

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

+ [27、如何查看文件的访问时间、修改时间?](#27_102)
+ [28、在不查看文件内容的情况下,如何快速判断这两份文件内容是否相同](#28_108)
+ [29、哪个配置文件可以设置 DNS server?](#29_DNS_server_118)
+ [30、任务计划格式中,前面5个数字分表表示什么含义?](#305_126)
+ [31、什么是系统负载?](#31_134)
+ [32、什么是 CPU 使用率?](#32_CPU__145)
+ [33、CPU 使用率与系统负载的关系](#33CPU__163)
+ [34、什么是 CPU 上下文切换?](#34_CPU__172)
+ [35、进程如何访问计算机内存?](#35_188)
+ [36、聊聊 Linux 的写时复制吧](#36_Linux__205)
+ [37、程序和进程的区别](#37_264)

前言

在《《对线面试官》| 高频 Linux 面试题 Part1》一文中,给大家分享了一些在校招面试中常见的 Linux 面试题

闲话少说,接着给大家分享干货!

20、Linux 操作系统的核心是什么?

Linux 操作系统的核心是内核 Kernel

21、什么是 Linux 内核?

内核是 Linux 操作系统的关键组件,它借助进程间的通信和系统调用,管理着系统上的所有软硬件,充当软件和硬件之间的桥梁角色

内核的任务:

  1. 应用程序执行的流程管理
  2. 内存和 I/O 管理
  3. 系统调用的控制
  4. 通过设备驱动程序来管理设备

总结:内核是硬件与软件之间的一个中间层,当软件(应用程序)需要去操作底层硬件时,需要通过内核来实现。例如你想播放一首歌曲,则播放程序就会去向内核发起请求,内核则会去调用音箱播放歌曲(对于应用程序来说它是不知道底层硬件的,它的认知最底层就是内核)

22、Linux 进程三大基本状态是什么?

在这里插入图片描述

  • 就绪态
    • 进程已经分配到除了 CPU 以外的所有资源,只需要获得 CPU 便可立即执行
    • 即:万事俱备只欠 CPU
  • 执行态
    • 进程已经获得 CPU ,正在 CPU 上执行
  • 阻塞态
    • 正在执行的进程,由于要等待某个事件发生(例如等待 I/O 完成、等待信号、等待数据)而无法继续执行时,就会放弃 CPU 进入到阻塞态

PS:进程三种状态的切换

  1. 就绪态——>执行态

处于就绪态的进程,当进程调度程序为其分配了一个CPU后,该进程便由就绪态转为执行态

  1. 执行态——>就绪态

处于执行状态的进程在执行过程中,因分配的时间片用完而不得已让出 CPU,便由执行态转
变成就绪态

  1. 执行态——>阻塞态

处在执行态的进程因等待某个事情发生而无法继续执行时,便由执行态转变成阻塞态

  1. 阻塞态——>就绪态

处于阻塞态的进程,如果等待的事件已经发生,便由阻塞态转变成就绪态

23、如何将文本中的注释和空行过滤掉?

grep -Ev "^#|^$" file
^#:以#开头,即注释
^$:空行

24、如何知道是哪个进程打开了哪个文件

通过 lsof 命令,在 Linux 中一切皆文件,通过 lsof 命令我们可以知道所有被进程打开的文件

举个例子:有一个文件一直被某个进程打开写入导致你删除不了这个文件,你就可以使用 lsof 命令找到是哪个进程占用文件,再将进程 kill 掉就能删掉文件了

25、父子进程之间怎么通信?

  • 管道
    • 普通管道(pipe)
    • 流管道(s_pipe)
    • 命名管道(FIFO)
  • 共享内存:共享内存允许两个不相关的进程访问同一个逻辑内存
  • 消息队列

26、什么是僵尸进程?什么是孤儿进程?

僵尸进程:

当子进程比父进程先结束,而父进程又没有回收子进程、释放子进程占用的资源,此时子进程就会变成僵尸进程

僵尸进程是一个早已死亡的进程,但在进程表中仍占据一个位置

孤儿进程:

如果父进程先结束,子进程就会变成孤儿进程,会被 init 进程接管,子进程结束后其占用资源就会被 init 进程回收

为了避免孤儿进程退出时所占资源无法被回收而变成僵尸进程,init 进程会接管这些孤儿进程,被Init接管的所有进程都不会变成僵尸进程

27、如何查看文件的访问时间、修改时间?

使用 stat 命令,可以查看到文件的详细信息

28、在不查看文件内容的情况下,如何快速判断这两份文件内容是否相同

使用 md5sum——计算检验 MD5 校验码

md5sum命令采用MD5报文摘要算法(128位)计算和检查文件的校验和

有 A.txt 和 B.txt 两份文件,可以通过 MD5sum A.txt B.txt 命令来比较这两个文件内容是否相同

29、哪个配置文件可以设置 DNS server?

/etc/reslove.conf

30、任务计划格式中,前面5个数字分表表示什么含义?

分时日月周

31、什么是系统负载?

系统负载表示处在可执行状态和不可中断睡眠状态的进程数量

  • 可执行状态进程:
    • 指的是正在被CPU执行的进程以及在就绪队列上等待被CPU执行的进程(运行态、就绪态)
  • 不可中断睡眠状态进程:
    • 指的是处于内核关键流程中的进程,而且这些流程不可以被打断(阻塞态)

32、什么是 CPU 使用率?

CPU使用率是指在单位时间内CPU处在非空闲态的时间比,反映了CPU的繁忙程度

比如说:比如说单核CPU一秒内处在非空闲态的时间为0.6秒,那么它的CPU使用率就是60%

而双核CPU一秒内处在非空闲态的时间分别为0.6s和0.4s,那么它的CPU使用率为(0.4+0.6)/ 2 * 100% = 50%

举个例子:

比如说有一家银行,只有一个业务窗口,每次只能接待一个人(单核CPU)

这一天,有五个人要来办理业务,由于只有一个窗口,就会出现一人办理另外四人等待的情况(平负载为5)

在业务窗口那个人只有真正办理业务才算是真正使用这个窗口,才意味着窗口正在忙碌(CPU使用率)
在这里插入图片描述

33、CPU 使用率与系统负载的关系

总结:

  • cpu使用率升高,会导致平均负载升高
  • 平均负载升高,CPU使用率不一定会升高(有可能是I/O压力使得出现大量不可中断睡眠进程导致的平均负载升高,但这是 CPU 是空闲状态的)

34、什么是 CPU 上下文切换?

先来了解下什么是 CPU 上下文

Linux是一个多任务操作系统,它支持远大于CPU数量的任务同时运行,但这些任务并不是真正在同时运行,而是系统在很短时间内将CPU轮流分配给它们,造成了多任务同时进行的错觉(宏观上并发)

比如说B任务在就绪队列等待CPU执行完A任务后执行它,那么CPU就需要知道任务从哪里加载,从哪里开始执行,这些都是系统事先帮它设置好CPU寄存器和程序计数器,即 CPU 上下文

CPU上下文切换

CPU上下文切换就是先把前一个任务(A任务)的CPU上下文(也就是 CPU 寄存器和程序计数器)保存起来然后加载新任务(B任务)的上下文到CPU寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务而保存起来的上下文,会存储在系统内核中,当该任务重新调度执行时会再次加载进来,从而保证任务原来状态不受影响

35、进程如何访问计算机内存?

进程是无法之间访问物理内存的,只有内核才可以访问物理内存

Linux 内核给每个进程都提供了一个独立的连续的虚拟地址空间,通过这个空间进程就可以访问到虚拟内存,而这个虚拟地址空间又被分为内核空间和用户空间
在这里插入图片描述
进程在用户态时能访问用户地址空间,在内核态可以访问内核地址空间

每个进程的内核空间内存关联的都是相同的物理内存,方便进程切换到内核态后访问
在这里插入图片描述
不是所有的虚拟内存都会被分配到物理内存的,只有那些实际使用的虚拟内存才被分配物理内存,并且通过内存映射来管理

内存映射:虚拟内存地址映射到物理内存地址为了完成内存映射,内核为每个进程都维护了一张页表,记录虚拟地址与物理地址的映射关系

在这里插入图片描述

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

中…(img-ttHgVzl7-1715904137129)]
[外链图片转存中…(img-4OOOYmkL-1715904137130)]
[外链图片转存中…(img-8arOUumX-1715904137130)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值