Linux CentOS 面试知识点整理

一、Linux 基础命令

(一)文件和目录操作

命令功能常用选项示例
ls列出目录内容-l(长格式)、-a(显示隐藏文件)、-h(易读格式)ls -lh
cd切换目录cd /etc
pwd显示当前工作目录pwd
mkdir创建目录-p(递归创建)mkdir -p dir1/dir2/dir3
rm删除文件或目录-r(递归删除)、-f(强制删除)rm -rf file.txt
cp复制文件或目录-r(递归复制)cp -r file1 file2
mv移动或重命名文件或目录mv file1 /dir

面试知识点补充

  • 批量删除特定文件类型:在实际工作中,可能需要批量删除某个目录下的特定文件类型。例如,删除所有.log文件,可以使用rm -f *.log。面试中可能会问到如何删除多个目录下的特定文件类型,可以使用find命令结合rm命令,例如find /path/to/directory -type f -name "*.log" -exec rm -f {} \;
  • rm -rf的谨慎使用rm -rf命令非常强大,但也非常危险,因为它会强制删除文件或目录,且不会提示确认。面试官可能会问到如何避免误删除重要文件。一个常见的做法是使用rm -i(交互模式)进行删除,或者在脚本中添加额外的检查逻辑。
  • cpmv的区别cp用于复制文件或目录,而mv用于移动或重命名文件或目录。面试中可能会问到它们的区别以及使用场景。cp适用于需要保留原始文件的情况,而mv适用于需要移动文件或重命名文件的情况。

(二)文件查看和编辑

命令功能示例
cat查看文件内容cat file.txt
moreless分页查看文件内容less file.txt
headtail查看文件头部和尾部内容head -n 5 file.txttail -f file.log
vivim文本编辑器命令模式(i进入插入模式,Esc退出,:wq保存退出)

面试知识点补充

  • vim编辑器的高级用法:在面试中,可能会被问到vim编辑器的一些高级功能,例如使用正则表达式批量替换文本。可以使用:s/old/new/g命令替换文件中的所有oldnew,或者使用:g/pattern/s/old/new/g命令只替换匹配pattern的行。
  • 日志文件的实时监控tail -f命令用于实时查看文件的新增内容,常用于监控日志文件。面试中可能会问到如何结合grep命令过滤特定内容。例如,tail -f file.log | grep "error"可以实时显示包含error的日志内容。
  • lessmore的区别lessmore更强大,支持上下翻页和搜索功能。面试中可能会问到如何在less中搜索特定内容,可以使用/pattern向前搜索,使用?pattern向后搜索。

(三)系统信息和进程管理

命令功能示例
uname显示系统信息uname -a
df显示磁盘空间使用情况df -h
du显示目录或文件的磁盘使用情况du -sh /dir
ps显示当前运行的进程ps aux
top实时显示系统中资源占用最高的进程top
kill终止进程kill -9 PID
nicerenice调整进程优先级nice -n 10 command
systemctl管理服务和系统状态systemctl restart service

面试知识点补充

  • 查找占用磁盘空间最大的目录:面试中可能会问到如何查找占用磁盘空间最大的前几个目录。可以使用du -sh /dir/* | sort -rh | head -n 5命令。这个命令会列出指定目录下所有子目录的大小,并按降序排列,显示前5个最大的目录。
  • 使用psgrep查找特定进程:面试中可能会问到如何查找特定进程。可以使用ps aux | grep process_name命令。例如,查找名为httpd的进程,可以使用ps aux | grep httpd
  • kill命令的信号类型kill命令可以发送不同的信号给进程。面试中可能会问到常见的信号类型,例如SIGTERM(默认信号,请求进程终止)、SIGKILL(强制终止进程,kill -9)和SIGINT(中断信号,通常由Ctrl+C产生)。

(四)网络相关命令

命令功能示例
ifconfigip查看和配置网络接口ip a
ping测试网络连通性ping -c 4 8.8.8.8
netstatss查看网络连接和监听端口ss -tuln
curlwget下载文件或测试HTTP请求curl -O http://example.com/file.zip

面试知识点补充

  • 查看所有监听端口:面试中可能会问到如何查看当前系统的所有监听端口。可以使用ss -tuln命令。这个命令会列出所有TCP、UDP和监听状态的端口。
  • 使用pingtraceroute定位网络故障点:面试中可能会问到如何排查网络问题。可以使用ping命令测试网络连通性,使用traceroute命令查看数据包的传输路径。例如,traceroute 8.8.8.8可以显示到达目标IP的路径。
  • curl命令的高级用法curl命令不仅可以下载文件,还可以用于测试HTTP请求。面试中可能会问到如何使用curl发送POST请求。例如,curl -X POST -d "key=value" http://example.com/api可以发送一个POST请求。

(五)用户和权限管理

命令功能示例
whoami显示当前登录用户whoami
who显示当前登录的用户信息who
su切换用户su -
useradd创建用户useradd username
passwd设置用户密码passwd username
chmod修改文件或目录的权限chmod 755 file.txt
chown修改文件或目录的所有者chown user:group file.txt

面试知识点补充

  • 批量创建用户:面试中可能会问到如何批量创建用户。可以使用useradd命令结合循环脚本实现。例如,使用for i in {1..10}; do useradd user$i; done可以批量创建user1user10
  • 设置目录的特殊权限:面试中可能会问到如何设置目录的特殊权限,例如setuidsetgidsticky bit。可以使用chmod命令。例如,chmod +s file.txt可以设置setuid权限,chmod g+s dir可以设置setgid权限,chmod +t dir可以设置sticky bit权限。
  • 用户组管理:面试中可能会问到如何管理用户组。可以使用groupadd命令创建用户组,使用usermod命令将用户添加到用户组。例如,groupadd groupname可以创建一个用户组,usermod -aG groupname username可以将用户添加到用户组。

(六)其他常用命令

命令功能示例
grep在文件中搜索文本grep "pattern" file.txt
find查找文件或目录find / -name "file.txt"
history显示命令历史history
man查看命令的手册页man ls

面试知识点补充

  • 使用find命令查找特定权限的文件:面试中可能会问到如何查找具有特定权限的文件。可以使用find命令结合权限选项。例如,find / -perm 777可以查找权限为777的文件。
  • 清空命令历史:面试中可能会问到如何清空命令历史。可以使用history -c命令。此外,还可以通过编辑~/.bash_history文件来手动清空历史记录。
  • man命令的高级用法:面试中可能会问到如何查看特定章节的手册页。可以使用man命令的章节选项。例如,man 1 ls可以查看ls命令的手册页,man 5 crontab可以查看crontab文件格式的手册页。

二、数据库安装与配置

(一)MySQL 安装

  1. 使用yum安装MySQL
1
sudo yum install -y mysql-community-server
  1. 启动MySQL服务并设置开机自启
1
2
sudo systemctl start mysqld
sudo systemctl enable mysqld
  1. 检查MySQL服务状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo systemctl status mysqld
```


**面试知识点补充**:

- **查看MySQL服务是否已经安装成功**:面试中可能会问到如何查看MySQL服务是否已经安装成功。可以使用`rpm -q mysql-community-server`命令。如果返回`mysql-community-server-版本号`,则表示已安装成功。
- **服务管理**:面试中可能会问到如何查看服务的依赖关系。可以使用`systemctl list-dependencies service`命令。例如,`systemctl list-dependencies mysqld`可以查看MySQL服务的依赖关系。

#### (二)MySQL 配置

1. **安全配置**

```bash
sudo mysql_secure_installation
  1. 修改配置文件
    • 配置文件路径:/etc/my.cnf
    • 常见配置项:datadirportbind-address
  2. 字符集配置
1
2
3
4
5
6
7
8
9
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

面试知识点补充

  • 查看MySQL的当前字符集:面试中可能会问到如何查看MySQL的当前字符集。可以使用SHOW VARIABLES LIKE 'character_set_server';命令。
  • 动态修改MySQL配置:面试中可能会问到如何动态修改MySQL配置而无需重启服务。可以使用SET GLOBAL命令。例如,SET GLOBAL max_connections = 1000;可以动态修改最大连接数。

(三)MySQL 文件路径

  1. 数据文件路径/var/lib/mysql
  2. 配置文件路径/etc/my.cnf
  3. 日志文件路径/var/log/mysql/

面试知识点补充

  • 查看MySQL的错误日志文件路径:面试中可能会问到如何查看MySQL的错误日志文件路径。可以使用SHOW VARIABLES LIKE 'log_error';命令。
  • 日志文件的自动轮转:面试中可能会问到如何设置日志文件的自动轮转。可以使用logrotate工具。例如,可以编辑/etc/logrotate.d/mysql文件,配置日志轮转策略。

三、计算机网络


各层详细知识点总结

1. 核心概念

  • 功能
    • 将数据封装成帧(Frame)。
    • 负责物理传输,包括信号的编码和解码。
    • 错误检测和纠正(通过CRC校验等)。
    • 流量控制(如滑动窗口机制)。
    • 提供硬件地址(MAC地址)。
  • 硬件地址(MAC地址)
    • 48位的唯一标识符,用于在局域网内识别设备。
    • 格式:XX:XX:XX:XX:XX:XX

2. 常见协议

  • 以太网(Ethernet)
    • 最常用的链路层协议,支持多种物理介质(如双绞线、光纤)。
    • 以太网帧结构:
      • 前导码(Preamble):用于同步。
      • 目标MAC地址(Destination MAC Address):6字节。
      • 源MAC地址(Source MAC Address):6字节。
      • 类型/长度字段(Type/Length):2字节。
      • 数据负载(Payload):46-1500字节。
      • 帧校验序列(FCS):4字节。
  • 无线局域网(WLAN)
    • 使用无线信号进行通信,遵循IEEE 802.11标准。
    • 支持多种加密方式(如WEP、WPA、WPA2)。
  • 点对点协议(PPP)
    • 用于点对点连接,常用于拨号上网。
    • 提供链路控制协议(LCP)和多种网络控制协议(NCP)。

3. 面试问题

  • 问题1:以太网帧的结构是什么?
    • 答案:以太网帧包括前导码、目标MAC地址、源MAC地址、类型/长度字段、数据负载和帧校验序列(FCS)。
  • 问题2:如何检测和纠正链路层的错误?
    • 答案:使用循环冗余校验(CRC)进行错误检测,通过重传机制进行错误纠正。
  • 问题3:什么是MAC地址?它的作用是什么?
    • 答案:MAC地址是网络设备的唯一标识符,用于在链路层识别设备。它是一个48位的地址,通常以十六进制表示。
  • 问题4:以太网中的最小帧大小是多少?
    • 答案:以太网中的最小帧大小是64字节,包括8字节的前导码和4字节的FCS。
  • 问题5:什么是碰撞检测(CSMA/CD)?它在以太网中的作用是什么?
    • 答案:CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是一种介质访问控制方法,用于检测和避免数据冲突。在以太网中,当多个设备尝试同时发送数据时,CSMA/CD机制可以检测到冲突并重新发送数据。

二、网络层(Internet Layer)

1. 核心概念

  • 功能
    • 寻址:为每个网络设备分配一个唯一的IP地址。
    • 路由:根据IP地址将数据包从源主机发送到目标主机。
    • 分片和重组:将大数据包分割成小片段,以便在不同网络中传输。
    • 提供逻辑地址(IP地址)。
  • IP地址
    • IPv4:32位地址,格式为A.B.C.D,分为A、B、C、D、E五类。
    • IPv6:128位地址,格式为A:B:C:D:E:F:G:H,提供更多的地址空间。
  • 子网掩码
    • 用于将IP地址划分为网络部分和主机部分。
    • 常见的子网掩码:255.255.255.0(/24)。

2. 常见协议

  • IP(Internet Protocol)
    • 网络层的核心协议,负责数据包的寻址和路由。
    • IPv4:32位地址,格式为A.B.C.D
    • IPv6:128位地址,格式为A:B:C:D:E:F:G:H
  • ICMP(Internet Control Message Protocol)
    • 用于发送错误消息和操作信息。
    • 常见的ICMP消息类型:回显请求(ping)、回显应答、目的不可达。
  • ARP(Address Resolution Protocol)
    • 将IP地址解析为MAC地址。
    • 常见的ARP消息类型:ARP请求、ARP应答。

3. 面试问题

  • 问题1:IPv4和IPv6的主要区别是什么?
    • 答案:IPv4使用32位地址,而IPv6使用128位地址,提供了更多的地址空间。IPv6还支持无状态地址自动配置(SLAAC)和更好的安全性。
  • 问题2:什么是子网掩码?它的作用是什么?
    • 答案:子网掩码用于将IP地址划分为网络部分和主机部分。它帮助路由器确定数据包是否属于同一网络或需要转发到其他网络。
  • 问题3:如何查看当前主机的路由表?
    • 答案:在Linux系统中,可以使用route -nip route命令查看路由表。
  • 问题4:什么是CIDR(无类别域间路由)?它的作用是什么?
    • 答案:CIDR是一种IP地址的表示方法,通过子网掩码的位数来表示网络部分和主机部分。例如,192.168.1.0/24表示网络部分为192.168.1.0,子网掩码为255.255.255.0。CIDR的作用是提高IP地址的利用率,减少路由表的大小。
  • 问题5:什么是NAT(网络地址转换)?它的作用是什么?
    • 答案:NAT是一种将一个IP地址空间转换为另一个IP地址空间的技术,常用于将私有IP地址转换为公共IP地址。NAT的作用是节省公共IP地址资源,提高网络安全性。

三、传输层(Transport Layer)

1. 核心概念

  • 功能
    • 提供可靠的、面向连接的传输服务(如TCP)。
    • 提供无连接的、不可靠的传输服务(如UDP)。
    • 流量控制和拥塞控制。
    • 提供端到端的通信。
  • 端口号
    • 用于标识主机上的应用程序。
    • 范围:0-65535。
    • 常见的端口号:80(HTTP)、443(HTTPS)、22(SSH)、25(SMTP)。

2. 常见协议

TCP/IP 协议
  1. 定义:TCP/IP 是一组用于互联网及相关网络的通信协议,包括 TCP 和 IP。
  2. 层次结构
    • 链路层:负责物理链路的管理,如以太网。
    • 网络层:负责数据包的路由和转发,主要协议是 IP。
    • 传输层:负责端到端的数据传输和可靠性保证,主要协议是 TCP 和 UDP。
    • 应用层:负责处理特定的应用程序之间的通信,主要协议是 HTTP、FTP、SMTP 等。
  3. TCP 协议特点
    • 面向连接:在数据传输之前,必须建立一个可靠的连接。
    • 可靠传输:通过确认(ACK)、重传机制、滑动窗口等技术,确保数据的完整性和顺序性。
    • 应用场景:文件传输、网页浏览、邮件传输等。

面试知识点补充

  • TCP 的三次握手和四次挥手过程:面试中可能会问到 TCP 的三次握手和四次挥手过程。三次握手过程如下:
    1. 客户端发送一个 SYN 包到服务器,请求建立连接。
    2. 服务器收到 SYN 包后,回复一个 SYN-ACK 包,确认客户端的请求。
    3. 客户端收到 SYN-ACK 包后,发送一个 ACK 包到服务器,完成连接建立。
      四次挥手过程如下:
    4. 客户端发送一个 FIN 包到服务器,请求关闭连接。
    5. 服务器收到 FIN 包后,回复一个 ACK 包,确认客户端的请求。
    6. 服务器发送一个 FIN 包到客户端,请求关闭连接。
    7. 客户端收到 FIN 包后,发送一个 ACK 包到服务器,完成连接关闭。
  • 查看本机的 IP 地址:面试中可能会问到如何查看本机的 IP 地址。可以使用ifconfigip a命令。ip a命令是现代 Linux 系统中推荐使用的命令。
UDP 协议
  1. 定义:UDP 是一种无连接的、不可靠的传输层协议。
  2. 特点
    • 无连接:不需要建立连接,开销较小。
    • 不可靠:不提供确认和重传机制。
    • 应用场景:视频流、语音通话、游戏、DNS 查询等。

面试知识点补充

  • UDP 和 TCP 的主要区别:面试中可能会问到 UDP 和 TCP 的主要区别。TCP 是面向连接的、可靠的传输协议,而 UDP 是无连接的、不可靠的传输协议。TCP 适用于对可靠性要求较高的场景,如文件传输和网页浏览;UDP 适用于对实时性要求较高的场景,如视频流和语音通话。
  • 使用 UDP 协议实现简单的数据传输:面试中可能会问到如何使用 UDP 协议实现简单的数据传输。可以使用netcat工具。例如,服务器端可以使用nc -u -l 1234监听 UDP 端口 1234,客户端可以使用nc -u server_ip 1234发送数据到服务器。

3. 面试问题

  • 问题1:TCP和UDP的主要区别是什么?
    • 答案:TCP是面向连接的、可靠的传输协议,提供流量控制和拥塞控制,适用于对可靠性要求较高的应用。UDP是无连接的、不可靠的传输协议,适用于对实时性要求较高的应用。
  • 问题2:TCP的三次握手和四次挥手过程是什么?
    • 答案
      • 三次握手
        1. 客户端发送一个SYN包到服务器,请求建立连接。
        2. 服务器收到SYN包后,回复一个SYN-ACK包,确认客户端的请求。
        3. 客户端收到SYN-ACK包后,发送一个ACK包到服务器,完成连接建立。
      • 四次挥手
        1. 客户端发送一个FIN包到服务器,请求关闭连接。
        2. 服务器收到FIN包后,回复一个ACK包,确认客户端的请求。
        3. 服务器发送一个FIN包到客户端,请求关闭连接。
        4. 客户端收到FIN包后,发送一个ACK包到服务器,完成连接关闭。
  • 问题3:什么是滑动窗口协议?它的作用是什么?
    • 答案:滑动窗口协议是一种流量控制机制,用于控制发送方在等待确认之前可以发送的数据量。它通过动态调整窗口大小来优化网络利用率,防止发送方发送过多数据导致接收方溢出。
  • 问题4:TCP的拥塞控制机制有哪些?
    • 答案:TCP的拥塞控制机制包括慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)和快速恢复(Fast Recovery)。
  • 问题5:UDP适用于哪些应用场景?
    • 答案:UDP适用于对实时性要求较高的应用,如视频流、语音通话、游戏和DNS查询。这些应用对延迟敏感,可以容忍一定程度的数据丢失。

四、应用层(Application Layer)

1. 核心概念

  • 功能
    • 提供应用程序之间的通信接口。
    • 支持多种应用层协议,如HTTP、FTP、SMTP、DNS等。
    • 提供用户界面和应用程序逻辑。

2. 常见协议

HTTP协议
  • HTTP(HyperText Transfer Protocol)
  1. 定义:HTTP 是一种应用层协议,用于在客户端和服务器之间传输超文本数据。
  2. 特点
    • 无状态:每次请求都是独立的。
    • 基于 TCP:确保数据的可靠传输。
    • 请求/响应模型:客户端发送请求,服务器返回响应。
  3. 请求和响应
    • 请求行:包含请求方法(GET、POST、PUT、DELETE等)、请求的URL和HTTP版本。
    • 请求头:包含附加信息,如HostUser-AgentContent-Type等。
    • 请求体:对于POST请求,包含要提交的数据。
    • 响应行:包含HTTP版本、状态码和状态消息。
    • 响应头:包含附加信息,如Content-TypeContent-Length等。
    • 响应体:包含服务器返回的数据,如HTML页面、JSON数据等。
  4. 状态码
    • 1xx:信息性状态码。
    • 2xx:成功状态码,如 200(请求成功)、201(资源已创建)。
    • 3xx:重定向状态码,如 301(永久重定向)、302(临时重定向)。
    • 4xx:客户端错误状态码,如 400(请求格式错误)、404(未找到资源)。
    • 5xx:服务器错误状态码,如 500(服务器内部错误)、503(服务不可用)。

面试知识点补充

  • 查看 HTTP 请求的详细信息:面试中可能会问到如何查看HTTP 请求的详细信息。可以使用curl -v命令。例如,curl -v http://example.com可以显示 HTTP 请求和响应的详细信息。

  • 常见的 404 和 500 错误的原因及解决方法:面试中可能会问到常见的 404 和 500 错误的原因及解决方法。404 错误表示请求的资源未找到,可能是因为 URL 错误或文件不存在。500 错误表示服务器内部错误,可能是因为服务器配置错误或代码问题。解决方法包括检查 URL、检查服务器日志、检查应用程序代码等。

  • HTTPS(HTTP Secure)

    • 特点:在HTTP基础上添加了SSL/TLS加密。
    • 应用场景:安全的网页浏览、电子商务、在线银行。
  • FTP(File Transfer Protocol)

    • 特点:用于文件传输,支持文件上传和下载。
    • 应用场景:文件服务器、文件共享。
  • SMTP(Simple Mail Transfer Protocol)

    • 特点:用于发送电子邮件。
    • 应用场景:邮件服务器。
  • DNS(Domain Name System)

    • 特点:将域名解析为IP地址。
    • 应用场景:域名解析、负载均衡。

3. 面试问题

  • 问题1:HTTP和HTTPS的主要区别是什么?
    • 答案:HTTPS在HTTP的基础上添加了SSL/TLS加密,确保数据传输的安全性。HTTPS使用端口443,而HTTP使用端口80。
  • 问题2:什么是HTTP状态码?常见的状态码有哪些?
    • 答案:HTTP状态码是服务器对客户端请求的响应状态的描述。常见的状态码包括:
      • 200:请求成功。
      • 301/302:重定向。
      • 400:请求格式错误。
      • 401:未授权。
      • 403:禁止访问。
      • 404:未找到资源。
      • 500:服务器内部错误。
      • 503:服务不可用。
  • 问题3:DNS的作用是什么?它是如何工作的?
    • 答案:DNS的作用是将域名解析为IP地址。当客户端请求一个域名时,DNS服务器会查找该域名对应的IP地址,并将结果返回给客户端。DNS解析过程包括递归查询和迭代查询。
  • 问题4:什么是RESTful API?它的特点是什么?
    • 答案:RESTful API是一种基于HTTP协议的网络应用程序接口,遵循REST(Representational State Transfer)架构风格。它的特点包括无状态、统一接口、资源导向、超媒体作为应用状态的引擎(HATEOAS)。
  • 问题5:什么是Web缓存?它的作用是什么?
    • 答案:Web缓存是一种存储机制,用于临时存储Web资源的副本。它的作用是减少对服务器的请求次数,提高响应速度,降低网络带宽的使用。