本文主要和大家分享一些最常见和重要的 Linux 面试题及其答案,祝大家都能找到自己心仪的工作
面试问题分为两部分,第一部分是理论问题,第二部分是场景问题
理论问题
这部分 Linux 面试问题主要关注理论和概念
1.什么是Linux?
Linux 是基于 Unix 的开源操作系统。Linux 最初是由 Linus Torvalds 创建的。Linux 的主要目的是为那些买不起 Windows、Unix 等操作系统的用户提供免费和低成本的操作系统。
2、Linux和Unix有什么区别?
Linux 和 UNIX 的主要区别如下:
Linux | Unix | |
价格 | 免费分发和付费分发都可用 | UNIX 有不同的成本结构,通常是付费的 |
目标用户 | 每个人(家庭用户、开发人员等) | 主要是互联网服务器、工作站、大型机 |
文件系统 | Ext2、Ext3、Ext4、Jfs、ReiserFS、Xfs、Btrfs、FAT、FAT32、NTFS | jfs、gpfs、hfs、hfs+、ufs、xfs、zfs、vxfs |
图形用户界面 | KDE 和 Gnome | 通用桌面环境 |
已知病毒 | 60-100 | 80-120 |
错误修复速度 | 快 | 稍慢 |
实例 | Ubuntu、Fedora、Red Hat、Kali Linux、Debian、Archlinux、Android | OS X、Solaris |
3.什么是Linux内核?修改 Linux 内核是否合法?
Linux内核是指底层系统软件。它用于管理系统资源并为用户交互提供接口。
修改 Linux 内核是合法的。Linux 是基于通用公共许可证(General Public License)发布的。任何在 GPL 下发布的项目都可以被最终用户修改
4.什么是LILO?
LILO代表LInux LOader。LILO 是一个 Linux 引导加载程序,它将 Linux 操作系统加载到主内存中以开始执行。大多数计算机都带有特定版本的 Windows 或 Mac OS 的引导加载程序。所以,当你想使用 Linux 操作系统时,你需要为它安装一个特殊的引导加载程序。LILO 就是这样一种引导加载程序。
当计算机启动时,BIOS 会进行一些初始测试并将控制权转移到主引导记录。LILO 从这里加载并启动 Linux 操作系统。
使用 LILO 的优点是它可以快速启动 Linux 操作系统。
5. Linux 的基本组成部分有哪些?
Linux的基本组件是:
- 内核:操作系统的核心组件,管理操作和硬件。
- Shell:命令行解释器,用于执行命令。
- GUI: 即图形用户界面,由图像、按钮、文本框等组成。
- System Utilities:这些是允许用户管理计算机的软件功能。
- 应用程序:旨在完成特定任务的软件程序或一组功能。
6. Linux 中使用了哪些 Shell?
Linux 中最常用的 Shell 是
- bash: Bourne A gain Shell是大多数 Linux 发行版的默认设置
- ksh: Korn Shell是一种高级编程语言 shell
- csh: CShell 遵循类似 C 的语法,并提供拼写纠正和作业控制
- zsh: ZShell 提供了一些独特的功能,例如文件名生成、启动文件、登录/注销观看、关闭评论等。
- fish:Friendly Shell 提供 了一些特殊功能,例如基于 Web 的配置、自动完成等
7.什么是交换空间?
交换空间是 Linux 使用的额外空间,当 RAM 没有足够的空间来容纳程序时,它会临时存储运行程序的数据
交换空间被 Linux 用作 RAM 的扩展。
8. BASH和DOS有什么区别?
BASH和DOS之间有 3 个主要区别:
BASH | Dos |
命令区分大小写 | 命令不区分大小写 |
‘/’(正斜杠)用作目录分隔符 | \(反斜杠)用作目录分隔符 |
遵循命名约定:文件名后缀为 8 个字符,扩展名为 3 个字符 | 没有命名约定 |
9. 检查Linux 正在使用多少内存的命令
你可以使用以下任何命令:
free -m
vmstat
top
htop
10.解释Linux中的文件权限。
Linux中有3种权限:
- 读取:允许用户打开和读取文件
- 写入:允许用户打开和修改文件
- 执行:允许用户运行文件。
chmod 可以更改文件或目录的权限。使用chmod命令有两种模式 :
符号模式
使用符号模式更改权限的一般语法如下:
$ chmod <target>(+/-/=)<permission> <filename>
Code language: HTML, XML (xml)
其中 可以是 r: 读;w:写;x:执行。
可以是 你:用户;g:组;o:其他;答:全部
‘+’用于添加权限
‘-‘用于删除权限
‘=’用于设置权限
例如,如果你想设置权限,使用户可以读取、写入和执行,并且你的组的成员可以读取和执行它,而其他人只能读取它。
那么这个命令将是:
$ chmod u=rwx,g=rx,o=r filename
绝对模式
使用 Absolute 模式更改权限的一般语法如下:
$ chmod <permission> filename
Code language: HTML, XML (xml)
绝对模式遵循八进制表示。最左边的数字代表用户,中间的数字代表用户组,最右边的数字代表所有人。
下表解释了可以使用的数字的含义及其作用。
0 没有权限 – – –
1 执行权限 – – X
2 写权限 – w –
3 执行和写入权限:1(执行)+2(写入)=3 – wx
4 读取权限 r – –
5 读取和执行权限:4(读取)+1(执行)=5 r – x
6 读写权限:4(读)+2(写)=6 rw—— _
7 所有权限:4(读取)+ 2(写入)+ 1(执行)= 7 rwx
例如,如果你想设置权限,使用户可以读取、写入和执行,并且你的组的成员可以读取和执行,而其他人只能读取
那么这个命令将是:
$ chmod 754 filename
11.什么是inode和process id?
inode是操作系统赋予每个文件的唯一标识。同样,进程 ID 是赋予每个进程的唯一 ID。
12. Linux 目录命令有哪些?
Linux 中有 5 个主要的目录命令:
- pwd:显示当前工作目录的路径。
$ pwd
- ls:列出当前工作目录中的所有文件和目录。
$ ls
- cd:用于更改当前工作目录。
$ cd <path to new directory>
Code language: HTML, XML (xml)
- mkdir: 创建一个新目录
$ mkdir <name (and path if required) of new directory>
Code language: HTML, XML (xml)
- rmdir: 删除一个目录
$ rmdir <name (and path if required) of directory>
Code language: HTML, XML (xml)
13. 什么是虚拟桌面?
虚拟桌面是一项允许用户在屏幕物理限制之外使用桌面的功能。基本上,虚拟桌面创建一个虚拟屏幕来扩展普通屏幕的限制。
有两种方式可以实现虚拟桌面:
切换桌面
在切换桌面的情况下,你可以创建独立的虚拟桌面来运行程序。在这里,每个虚拟桌面将作为一个单独的桌面运行,并且在每个这些桌面上运行的程序只能由使用该特定桌面的用户访问。
超大桌面
超大桌面不提供独立的虚拟桌面,但它允许用户在比物理屏幕更大的桌面上平移和滚动。
14、vi编辑器有哪些不同的模式?
vi编辑器有3种模式:
- 常规/命令模式:让你查看内容
- 插入/编辑模式:允许你删除或插入内容
- 替换模式:让你覆盖内容
15. 什么是daemons进程?
守护进程通常用于在后台运行服务,而不直接与用户交互。守护进程的目的是处理周期性请求,然后将请求转发给适当的程序执行。
16、Linux中的进程状态有哪些?
进程状态如下:
- Ready:进程已创建并准备运行
- 运行中: 进程正在执行
- 阻塞或等待: 进程正在等待用户输入
- 终止或完成: 进程完成执行,或被操作系统终止
- Zombie: 进程终止,但进程表中仍然存在信息
17. 解释 grep 命令。
grep 代表Global Regular Expression Print。grep 命令基于正则表达式的模式匹配来搜索文件中的文本。
语法: grep [options] pattern [files]
示例:
$ grep -c "linux" interview.txt
Code language: JavaScript (javascript)
该命令将打印“ interview.txt ”文件中单词“ linux ”的计数。
18.解释Linux中的进程管理系统调用
管理进程的系统调用是:
- fork():用于创建新进程
- exec() : 执行一个新程序
- wait() : 等待进程完成执行
- exit() : 退出进程
用于获取进程 ID 的系统调用是:
- getpid() :- 获取进程的唯一进程 id
- getppid() :- 获取父进程唯一 ID
19.解释Linux中的’ls’命令
ls命令用于列出指定目录中的文件。 一般语法是:
$ ls <options> <directory>
Code language: HTML, XML (xml)
例如,如果要列出 Example 目录中的所有文件,则命令如下:
$ ls Example/
ls 命令可以使用不同的选项。这些选项提供有关文件/文件夹的附加信息。例如:
- -l 列出长格式(显示文件的权限)
- -a 列出所有文件,包括隐藏文件
- -i 列出文件及其 inode 编号
- -s 列出文件及其大小
- -S 列出文件及其大小并按文件大小对列表进行排序
- -t 按时间和日期对列出的文件进行排序
20. 解释重定向操作符。
重定向运算符用于将特定命令的输出重定向为另一个命令或文件的输入。
有两种使用方法:
- ‘>’覆盖文件的现有内容或创建一个新文件。
- ‘>>’ 将新内容附加到文件末尾或创建一个新文件。
假设文件内容如下:
现在,当你使用“>” 重定向运算符时,文件的内容将被覆盖
当你使用“>>”时,将附加内容:
21、为什么要用tar命令?
tar 命令用于提取或创建归档文件。
假设你要从名为 sample.tar.gz 的存档中提取所有文件,那么命令将是:
$ tar -xvzf sample.tar.gz
假设你要创建存储在路径 /home/linux/ 中的所有文件的存档,那么命令将是:
$ tar -cvzf filename.tar.gz
其中c:创建存档,x:提取,v:详细,f:文件
22. 什么是Latch?
Latch 是一种由时序信号控制的临时存储设备,可以存储 0 或 1。Latch 有两种稳定状态(高输出或 1,低输出或 0),主要用于存储状态信息。Latch 只要上电,就可以存储一位数据。
23. 什么是微处理器?
微处理器是执行指令的设备。它是一个单芯片设备,从内存中取出指令,解码并执行。微处理器可以执行 3 个基本功能:
- 数学运算,如加法、减法、乘法和除法
- 将数据从一个内存位置移动到另一个内存位置
- 根据条件做出决定,并根据决定跳转到新的不同指令。
24.解释正则表达式和Grep
正则表达式用于搜索具有特定模式的数据。与常规模式一起使用的一些命令是: tr、sed、vi 和 grep。
正则表达式中使用的一些常见符号是:
- . 匹配任意字符
- ^ 匹配字符串的开头
- $ 匹配字符串的结尾
- * 匹配零个或多个字符
- ? 只匹配一个字符
假设一个文件的内容如下:
如果要列出以字符“a”开头的条目,则命令为:
$ cat linux.txt | grep ^a
如果要列出以字符“n”开头的条目,则命令为:
$ cat linux.txt | grep n
25. 安装 Linux 最少需要多少个磁盘分区?
所需的最小分区数为 2。
一个分区用作存储所有文件的本地文件系统。
另一个分区用作交换空间,用作 RAM 的扩展内存。
基于场景的问题
面试官会问基于场景的问题和理论问题,以检查你有多少实践知识
1. 如何在 Linux 中复制文件?
你可以使用 cp命令在 Linux 中复制文件。一般语法是:
$ cp <source> <destination>
Code language: HTML, XML (xml)
假设你想将一个名为questions.txt
的文件从目录/new/linux
复制到/linux/interview
, 那么命令将是:
$ cp questions.txt /new/linux /linux/interview
Code language: JavaScript (javascript)
2. 如何终止Linux中正在运行的进程?
每个进程都有一个唯一的 进程 ID。 要终止进程,我们首先需要找到进程 ID。ps
命令将列出所有正在运行的进程以及进程 ID。然后用 kill
终止 进程。
列出所有进程的命令:
$ ps
假设你要终止的进程的进程 ID 是 3849,那么你将不得不像这样终止它:
$ kill 3849
3. 如何在 Linux 中重命名文件?
mv
$ mv <oldname> <newname>
Code language: HTML, XML (xml)
cp
$ cp <oldname> <newname>
$ rm <oldname>
Code language: HTML, XML (xml)
4. 如何将命令的输出写入文件?
你可以使用重定向运算符 (>) 来执行此操作。
$ (command) > (filename)
5. 如何查看Linux上挂载的设备列表?
通过运行以下命令:
$ mount -l
6. 如何在 Linux 中查找文件的存储位置?
你可以使用 locate
命令查找文件的路径。
假设你要查找文件名 sample.txt 的位置,那么你的命令将是:
$ locate sample.txt
7、如何查找两个配置文件的不同之处?
你可以为此使用 diff
命令:
$ diff abc.conf xyz.conf
8、编写一个bash脚本,删除当前目录下所有包含“linux”字样的文件。
for i in *linux*; do rm $i; done
Code language: PHP (php)
9. 如何在不打开的情况下创建文本文件?
touch
命令可用于创建文本文件而无需打开它。 touch
命令将创建一个空文件。语法如下:
$ touch <filename>
Code language: HTML, XML (xml)
假设你要创建一个名为 sample.txt 的文件,那么命令将是:
$ touch sample.txt
10. 如何在 Linux 中删除目录?
在 Linux 中有两个命令可用于删除目录。
rmdir
$ rmdir <directory name>
Code language: HTML, XML (xml)
rm -rf
$ rm -rf <directory name>
Code language: HTML, XML (xml)
11. 你会如何在 Linux 中设置定时任务?
Linux 中有两个用于调度任务的命令: cron
和 at
。
cron
命令用于在 特定时间重复调度任务。任务存储在cron文件中,然后使用 cron命令执行。cron命令从该 文件中读取字符串并安排任务。在cron 文件中输入的字符串的语法 如下:
<minute> <hour> <day> <month> <weekday> <command>
Code language: HTML, XML (xml)
假设你想在每周日下午 4 点运行一个命令,那么字符串将是:
0 16 * * 0 <command>
Code language: HTML, XML (xml)
at
命令用于在 指定时间仅安排一次任务。
假设你想在今天下午 6 点关闭系统,那么执行此操作的命令将是:
$ echo "shutdown now" | at -m 18:00
Code language: PHP (php)
12. 假设你尝试使用 rm 命令删除文件,但删除失败。可能的原因是什么?
指定给文件的路径或提到的文件名可能是错误的
尝试删除文件的用户可能没有删除文件的权限。
13. 如何查看名为 sample.z 的文件的内容?
.z 扩展名表示该文件已被压缩。 要查看压缩文件的内容,可以使用 zcat 命令。例子:
$ zcat sample.z
14. 如何安全地将文件复制到U盘?
请按照以下步骤安全地将文件复制到U盘:
- 挂载U盘
- 复制文件
- 卸载U盘
15.如何识别你使用的是哪个shell?
打开终端并运行:
$ echo $SHELL
Code language: PHP (php)
这将打印正在使用的 Shell 的名称。
16. 如何从你的系统登录到你网络中的另一个系统?
SSH可用于此。语法如下:
ssh <username>@<ip address>
Code language: HTML, XML (xml)
假设你想以用户“mike”的身份登录 IP 地址为 192.168.5.5 的系统,那么命令将是:
$ ssh mike@192.168.5.5
17. 如何使用 vim 编辑器以只读模式打开文件?
$ vim -R <filename>
Code language: HTML, XML (xml)
18. 如何使用 vim 编辑器在文件中搜索特定的员工 ID?
$ vim +/<employee id to be searched> <filename>
Code language: HTML, XML (xml)
19. 如何使用 vim 编辑器跳转到文件中的特定行?
$ vim +<line number> <filename>
Code language: HTML, XML (xml)
20. 如何按升序对文本文件中的条目进行排序?
可以使用 sort 命令来完成。
$ sort sample.txt
21. 导出命令是做什么用的?
export
命令用于设置和重新加载环境变量。 例如,如果要设置 Java 路径,则命令为:
$ export JAVA_HOME = /home/user/Java/bin
Code language: JavaScript (javascript)
22.如何检查特定服务是否在运行?
$ service <servicename> status
Code language: HTML, XML (xml)
23. 如何查看所有服务的状态?
$ service --status-all
24. 如何启动和停止服务?
启动:
$ service <servicename> start
Code language: HTML, XML (xml)
停止:
$ service <servicename> start
Code language: HTML, XML (xml)
25.解释free命令。
此命令用于显示系统中可用的空闲、已用、交换内存。
$ free