大家好,我是摇光~,用大白话讲解所有你难懂的知识点
之前写了一篇关于 python 的面试题,感觉大家都很需要,所以打算出一个面试专栏。
【数据分析岗】Python金典面试题
这个专栏主要针对面试大数据岗位、数据分析岗位、数据运维等。
这是上半部分,下半部分链接:
【Linux金典面试题(下)】41道Linux金典面试问题+详细解答
我们都知道开发岗都会或多或少的接触到Linux、如果你掌握了Linux,就多一份技能。
我之前写过一篇Linux零基础入门的文章,很值得新手学习,收藏量都快 100 啦~大家有空可以看看。Linux零基础入门,覆盖Linux全部基础知识
好了,回归正题;下是这些题目及其答案,希望能为您的面试之路增添一份助力。
一、基础概念与操作
1. 简述Linux操作系统的特点及其与Windows的主要区别?
- Linux是一款开源、免费、多用户、多任务的操作系统,具有高度的稳定性和安全性。
- 与Windows相比,Linux系统更加灵活,支持广泛的硬件和软件,尤其擅长于服务器和嵌入式系统的应用。此外,Linux社区活跃,拥有大量的开源资源和开发工具。
2. 解释Linux文件系统的层次结构,并列举几个关键目录的作用。
Linux文件系统以根目录“/”为起点,采用树状结构组织文件和目录。
# 关键目录包括:
/bin # 存放基本的可执行文件,如ls、cp等。
/etc # 存放配置文件,如passwd、group等。
/home # 存放用户的主目录,每个用户都有一个以用户名命名的子目录。
/lib # 存放基本的库文件。
/root # 超级用户的主目录。
/tmp # 存放临时文件。
/usr # 存放用户级的应用程序、库文件和文档。
/var # 存放系统运行时需要改变数据的文件,如日志文件、邮件等。
3. 如何在Linux系统中查看当前登录的用户?
使用who命令可以查看当前登录的用户信息,包括用户名、登录终端、登录时间等。
4. 描述一下chmod和chown命令的功能及常用选项。
chmod命令:用于改变文件或目录的权限,常用选项包括-R(递归修改)和模式字符串(如u+rwx表示用户拥有读、写、执行权限)。
chown命令:用于改变文件或目录的所有者,常用选项包括-R(递归修改)和–reference=FILE(参考另一个文件的所有者)。
5. 解释硬链接与软链接(符号链接)的区别,并演示如何创建它们?
- 硬链接:是指通过文件系统的索引节点(inode)建立的文件链接,多个硬链接指向同一个文件内容,删除其中一个链接不会影响其他链接。
- 软链接:是指向另一个文件或目录的路径名,类似于Windows中的快捷方式。
# 软链接和硬链接的创建
ln source_file hard_link # 创建硬链接使用ln命令
ln -s source_file soft_link # 创建软链接也使用ln命令,但需要加上-s选项
6. 如何在Linux中查找文件内容?
使用grep命令可以搜索文件内容,匹配指定的正则表达式。
grep 搭配 管道符 | 进行筛选,就能准确定位需要找的内容。
7. 解释Linux中的进程状态,如R、S、D、T、Z等。
通过 ps -ef 查看进程状态:
- R:运行或在运行队列中等待。
- S:可中断的睡眠状态。
- D:不可中断的睡眠状态,通常是因为等待I/O操作。
- T:停止或被跟踪。
- Z:僵尸状态,进程已结束但父进程尚未回收其资源。
二、系统管理与维护
8. 描述一下Linux系统启动过程,并说明如何设置系统为单用户模式。
Linux系统启动过程:BIOS自检、加载内核、初始化系统环境、启动init进程(或systemd)、加载必要的服务、启动用户登录界面等步骤。
系统设置为单用户模式:在GRUB引导菜单中进行。在GRUB菜单中选择要启动的内核版本,按e键编辑启动参数,在linux行末尾添加single或1(表示运行级别1),然后按Ctrl+X或F10启动系统。
9. 如何使用cron和at进行任务调度?
cron:是Linux下用于定时执行任务的工具,通过编辑crontab文件来定义任务和时间。使用crontab -e命令编辑当前用户的crontab文件,添加任务条目。
at命令:用于一次性定时执行任务,使用echo “command” | at time语法来定义任务和时间。
10. 解释Linux中的inode概念?
inode:是Linux文件系统中的一个数据结构,用于存储文件的元数据,如文件类型、权限、所有者、大小、时间戳以及指向文件数据块的指针。每个文件都有一个唯一的inode号,通过inode可以访问文件的数据。
11. 面对磁盘空间不足的情况,你会采取哪些措施进行排查和处理?
- 1、使用df -h查看各文件系统的磁盘使用情况。
- 2、使用du -sh /path/to/directory查看特定目录的磁盘使用情况。
- 3、根据输出结果,找出占用空间较大的文件或目录,进行删除或压缩处理。
12. 如何备份和恢复Linux系统?
常见备份方法:是使用rsync命令将系统目录(如/home、/etc、/var等)同步到远程服务器或外部存储设备。
恢复:只需将备份的数据重新同步回系统目录即可。
13. 解释SELinux(安全增强型Linux)的作用及其基本配置方法。
- SELinux是一种安全模块,用于增强Linux系统的安全性。它通过强制访问控制(MAC)策略来限制进程对文件和资源的访问权限。
- SELinux有三种模式:Enforcing(强制模式)、Permissive(宽容模式)和Disabled(禁用模式)。
基本配置方法包括使用setenforce命令切换SELinux模式,使用semanage、chcon、restorecon等工具管理SELinux策略、上下文和恢复默认上下文。
三、网络配置与服务管理
14. 如何在Linux系统中配置静态IP地址?
- 1、编辑网络配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0)
- 2、设置BOOTPROTO为none或static,添加IPADDR、NETMASK、GATEWAY和DNS1等参数。
- 3、然后重启网络服务或重启系统使配置生效。
15. 使用netstat或ss命令查看网络连接状态,解释输出中的关键字段。
netstat和ss命令用于显示网络连接、路由表、接口统计等信息。关键字段包括:
- Proto:协议类型(如TCP、UDP)。
- Recv-Q和Send-Q:接收和发送队列的长度。
- Local Address和Foreign Address:本地和远程地址及端口号。
- State:连接状态(如ESTABLISHED、LISTEN等)。
16. 描述一下Linux下的防火墙工具iptables的基本工作原理?
iptables是Linux下用于配置防火墙的工具,它基于内核的netfilter模块实现。iptables通过定义一系列的规则来过滤和转发数据包。每个规则都有一个匹配条件和一个动作(如ACCEPT、DROP、REJECT等)。
17. 如何安装和配置Apache/Nginx服务器?
安装Apache:可以使用包管理器(如yum、apt等)执行yum install httpd或apt-get install
apache2命令。配置Apache:需要编辑配置文件(如/etc/httpd/conf/httpd.conf),设置服务器端口、根目录、虚拟主机等参数。
安装Nginx:也可以使用包管理器执行yum install nginx或apt-get install nginx命令。
配置Nginx:需要编辑配置文件(如/etc/nginx/nginx.conf),设置服务器块、监听端口、位置块等参数。
18. MySQL数据库在Linux上的安装、启动及基本管理命令有哪些?
- 安装MySQL:可以使用包管理器执行yum install mysql-server或apt-get install
mysql-server命令。- 启动MySQL服务:可以使用systemctl start mysqld或service mysqld
start命令。
基本管理命令包括:
mysql -u root -p # 登录MySQL数据库。
CREATE DATABASE database_name; # 创建数据库。
USE database_name; # 选择数据库
CREATE TABLE table_name (...); # 创建表。
INSERT INTO table_name VALUES (...); # 插入数据。
SELECT * FROM table_name; # 查询数据。
19. 简述SSH服务的配置与安全的优化措施?
- 修改默认SSH端口:设置Port参数为其他非标准端口,减少被扫描和攻击的风险。
- 使用基于密钥的认证方式:禁用密码登录(设置PasswordAuthentication no),强制用户使用SSH密钥对进行认证。
- 限制可登录的用户:通过AllowUsers参数指定允许登录的用户名列表。
- 配置登录失败次数限制:设置MaxAuthTries参数,限制用户登录失败的尝试次数。
- 定期更新SSH版本和补丁:确保SSH服务使用的版本是最新的,且已应用所有安全补丁。
20. 在Linux系统中,如何通过防火墙规则限制特定IP地址的访问?
可以使用iptables或firewalld等防火墙工具来限制特定IP地址的访问。
以iptables为例,可以使用以下命令:
bash iptables -A INPUT -s <IP_ADDRESS> -j DROP
# 其中,<IP_ADDRESS>为要限制的IP地址。这条规则表示将来自该IP地址的所有数据包丢弃。
21. 描述一下Linux系统中的服务管理机制,并解释systemctl命令的作用。
Linux系统中的服务管理机制负责启动、停止、重启和管理系统服务。传统的init系统使用/etc/inittab和/etc/rc.d等脚本来管理服务。而现代的systemd系统则提供了更加灵活和强大的服务管理机制。
systemctl是systemd的命令行工具,用于管理服务单元(如服务、挂载点、设备等)。它允许用户启动、停止、重启、启用、禁用和检查服务状态等操作。例如,systemctl
start httpd命令用于启动httpd服务。
22. 在Linux系统中,如何配置和管理NTP(网络时间协议)服务?
NTP服务用于同步网络中各个计算机的时间。在Linux系统中,可以使用ntp或chrony等NTP客户端软件来配置和管理NTP服务。
以ntp为例,安装ntp软件包后,编辑/etc/ntp.conf文件来配置NTP服务器地址和其他参数。然后,启动ntp服务,并设置其为开机自启动。使用ntpq
-p命令可以查看NTP同步状态。
23. 解释Linux系统中的虚拟内存机制,并描述swap分区的作用。
Linux系统中的虚拟内存机制允许进程使用比实际物理内存更多的内存空间。它通过分页和交换等技术将物理内存和磁盘空间结合起来,实现内存的动态分配和管理。
swap分区是Linux系统中用于扩展虚拟内存的一种磁盘空间。当物理内存不足时,系统会将部分不常用的内存页面交换到swap分区中,以释放物理内存给更需要的进程使用。这样可以避免内存溢出和进程崩溃等问题。
24. 在Linux系统中,如何配置和使用NFS(网络文件系统)?
- NFS是一种允许网络中的计算机共享文件的协议。在Linux系统中,可以使用nfs-utils软件包来配置和使用NFS服务。
- 1、首先,安装nfs-utils软件包。
- 2、然后,编辑/etc/exports文件来配置NFS导出目录和权限。
- 3、接下来,启动rpcbind和nfs-server服务,并设置它们为开机自启动。
- 4、最后,在客户端上安装nfs-common软件包,并使用mount -t nfs命令挂载NFS导出目录。
25. 解释Linux系统中的日志管理机制,并列举常见的日志文件及其作用。
Linux系统中的日志管理机制用于记录系统事件、用户操作、程序运行等信息。这些日志信息对于系统维护、故障排查和安全审计等方面非常重要。
常见的日志文件包括:
/var/log/messages # 记录系统整体信息,包括启动、运行和关闭过程中的重要事件。
/var/log/syslog # 与/var/log/messages类似,但用于基于syslog协议的日志记录系统。
/var/log/auth.log # 记录认证相关信息,如用户登录、注销和sudo操作等。
/var/log/kern.log # 记录内核相关的日志信息。
/var/log/boot.log # 记录系统启动过程中的日志信息。
26. 在Linux系统中,如何配置和使用SMTP服务器发送邮件?
在Linux系统中,可以使用sendmail、postfix或exim等SMTP服务器软件来发送邮件。
- 以postfix为例,安装postfix软件包后,编辑/etc/postfix/main.cf文件来配置SMTP服务器参数,如邮件服务器地址、域名和认证方式等。
- 然后,启动postfix服务,并设置其为开机自启动。最后,使用mail、sendmail或mutt等邮件客户端软件来发送邮件。
27. 解释Linux系统中的LVM(逻辑卷管理)机制,并描述其优点。
LVM是Linux系统中的一种逻辑卷管理机制,它允许用户将多个物理磁盘或分区组合成一个或多个逻辑卷组,并在这些逻辑卷组上创建和管理逻辑卷。LVM提供了灵活的磁盘空间管理和扩展能力。
LVM的优点包括:
灵活的磁盘空间管理:用户可以根据需要动态地调整逻辑卷的大小,而无需重新分区或格式化磁盘。
高效的磁盘空间利用:LVM可以跨多个物理磁盘或分区分配磁盘空间,实现了磁盘空间的最佳利用。
易于管理和维护:LVM提供了强大的管理工具和命令,使得磁盘空间的管理和维护变得更加简单和方便。
28. 在Linux系统中,如何配置和使用iSCSI(Internet Small Computer System Interface)存储?
iSCSI是一种基于IP网络的块级存储协议,它允许用户通过网络将远程的存储设备连接到本地系统中。在Linux系统中,可以使用iscsi-initiator-utils软件包来配置和使用iSCSI存储。
- 首先,安装iscsi-initiator-utils软件包。
- 然后,编辑/etc/iscsi/initiatorname.iscsi文件来设置iSCSI发起者名称。
- 接下来,使用iscsiadm命令来发现、登录和挂载iSCSI目标设备。
- 最后,可以在/dev/目录下找到挂载的iSCSI磁盘设备,并对其进行分区、格式化和挂载等操作。
29. 解释Linux系统中的SELinux(安全增强型Linux)机制,并描述其工作原理。
SELinux是Linux系统中的一种安全增强机制,它提供了强制访问控制(MAC)功能,以限制进程对文件和资源的访问权限。SELinux通过策略来定义访问控制规则,并在内核级别强制执行这些规则。
SELinux的工作原理包括:
策略加载:在系统启动时,SELinux加载预定义的策略文件,并解析其中的访问控制规则。
上下文分配:SELinux为每个进程、文件和资源分配一个安全上下文(如用户、角色和类型等)。
访问控制决策:当进程尝试访问文件或资源时,SELinux根据安全上下文和策略文件中的规则来做出访问控制决策。如果决策结果为允许,则进程可以访问该文件或资源;否则,访问将被拒绝。
30. 在Linux系统中,如何配置和使用SNMP(简单网络管理协议)服务?
SNMP是一种用于网络管理和监控的协议。在Linux系统中,可以使用net-snmp软件包来配置和使用SNMP服务。
- 首先,安装net-snmp软件包。
- 然后,编辑/etc/snmp/snmpd.conf文件来配置SNMP服务的参数,如社区字符串、监听地址和端口等。接下来,启动snmpd服务,并设置其为开机自启动。
- 最后,使用snmpwalk、snmpget或snmpset等SNMP命令来查询、获取和设置网络设备的信息。
这是上篇,下篇:【Linux金典面试题(下)】41道Linux金典面试问题+详细解答
这就是全部的 41 道金典题,有些可能对新手比较难,但是能够理解到位就ok,毕竟面试都是靠自己讲述。