CentOS 系统、数据库、网络面试知识点总结
文章目录
- Linux CentOS 面试知识点整理
- 一、Linux 基础命令
- (一)文件和目录操作
- (二)文件查看和编辑
- (三)系统信息和进程管理
- (四)网络相关命令
- (五)用户和权限管理
- (六)其他常用命令
- 二、数据库安装与配置
- (一)MySQL 安装
- (二)MySQL 配置
- (三)MySQL 文件路径
- 三、计算机网络
- 各层详细知识点总结
- 一、链路层(Link Layer)
- 1. **核心概念**
- 2. **常见协议**
- 3. **面试问题**
- 二、网络层(Internet Layer)
- 1. **核心概念**
- 2. **常见协议**
- 3. **面试问题**
- 三、传输层(Transport Layer)
- 1. **核心概念**
- 2. **常见协议**
- TCP/IP 协议
- UDP 协议
- 3. **面试问题**
- 四、应用层(Application Layer)
- 1. **核心概念**
- 2. **常见协议**
- HTTP协议
- 3. **面试问题**
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
(交互模式)进行删除,或者在脚本中添加额外的检查逻辑。cp
和mv
的区别:cp
用于复制文件或目录,而mv
用于移动或重命名文件或目录。面试中可能会问到它们的区别以及使用场景。cp
适用于需要保留原始文件的情况,而mv
适用于需要移动文件或重命名文件的情况。
(二)文件查看和编辑
命令 | 功能 | 示例 |
---|---|---|
cat | 查看文件内容 | cat file.txt |
more 和 less | 分页查看文件内容 | less file.txt |
head 和 tail | 查看文件头部和尾部内容 | head -n 5 file.txt 、tail -f file.log |
vi 或 vim | 文本编辑器 | 命令模式(i 进入插入模式,Esc 退出,:wq 保存退出) |
面试知识点补充:
vim
编辑器的高级用法:在面试中,可能会被问到vim
编辑器的一些高级功能,例如使用正则表达式批量替换文本。可以使用:s/old/new/g
命令替换文件中的所有old
为new
,或者使用:g/pattern/s/old/new/g
命令只替换匹配pattern
的行。- 日志文件的实时监控:
tail -f
命令用于实时查看文件的新增内容,常用于监控日志文件。面试中可能会问到如何结合grep
命令过滤特定内容。例如,tail -f file.log | grep "error"
可以实时显示包含error
的日志内容。 less
和more
的区别:less
比more
更强大,支持上下翻页和搜索功能。面试中可能会问到如何在less
中搜索特定内容,可以使用/pattern
向前搜索,使用?pattern
向后搜索。
(三)系统信息和进程管理
命令 | 功能 | 示例 |
---|---|---|
uname | 显示系统信息 | uname -a |
df | 显示磁盘空间使用情况 | df -h |
du | 显示目录或文件的磁盘使用情况 | du -sh /dir |
ps | 显示当前运行的进程 | ps aux |
top | 实时显示系统中资源占用最高的进程 | top |
kill | 终止进程 | kill -9 PID |
nice 和 renice | 调整进程优先级 | nice -n 10 command |
systemctl | 管理服务和系统状态 | systemctl restart service |
面试知识点补充:
- 查找占用磁盘空间最大的目录:面试中可能会问到如何查找占用磁盘空间最大的前几个目录。可以使用
du -sh /dir/* | sort -rh | head -n 5
命令。这个命令会列出指定目录下所有子目录的大小,并按降序排列,显示前5个最大的目录。 - 使用
ps
和grep
查找特定进程:面试中可能会问到如何查找特定进程。可以使用ps aux | grep process_name
命令。例如,查找名为httpd
的进程,可以使用ps aux | grep httpd
。 kill
命令的信号类型:kill
命令可以发送不同的信号给进程。面试中可能会问到常见的信号类型,例如SIGTERM
(默认信号,请求进程终止)、SIGKILL
(强制终止进程,kill -9
)和SIGINT
(中断信号,通常由Ctrl+C
产生)。
(四)网络相关命令
命令 | 功能 | 示例 |
---|---|---|
ifconfig 或 ip | 查看和配置网络接口 | ip a |
ping | 测试网络连通性 | ping -c 4 8.8.8.8 |
netstat 或 ss | 查看网络连接和监听端口 | ss -tuln |
curl 或 wget | 下载文件或测试HTTP请求 | curl -O http://example.com/file.zip |
面试知识点补充:
- 查看所有监听端口:面试中可能会问到如何查看当前系统的所有监听端口。可以使用
ss -tuln
命令。这个命令会列出所有TCP、UDP和监听状态的端口。 - 使用
ping
和traceroute
定位网络故障点:面试中可能会问到如何排查网络问题。可以使用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
可以批量创建user1
到user10
。 - 设置目录的特殊权限:面试中可能会问到如何设置目录的特殊权限,例如
setuid
、setgid
和sticky 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 安装
- 使用
yum
安装MySQLsudo yum install -y mysql-community-server
- 启动MySQL服务并设置开机自启
sudo systemctl start mysqld sudo systemctl enable mysqld
- 检查MySQL服务状态
sudo systemctl status mysqld
面试知识点补充:
- 查看MySQL服务是否已经安装成功:面试中可能会问到如何查看MySQL服务是否已经安装成功。可以使用
rpm -q mysql-community-server
命令。如果返回mysql-community-server-版本号
,则表示已安装成功。 - 服务管理:面试中可能会问到如何查看服务的依赖关系。可以使用
systemctl list-dependencies service
命令。例如,systemctl list-dependencies mysqld
可以查看MySQL服务的依赖关系。
(二)MySQL 配置
- 安全配置
sudo mysql_secure_installation
- 修改配置文件
- 配置文件路径:
/etc/my.cnf
- 常见配置项:
datadir
、port
、bind-address
- 配置文件路径:
- 字符集配置
[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 文件路径
- 数据文件路径:
/var/lib/mysql
- 配置文件路径:
/etc/my.cnf
- 日志文件路径:
/var/log/mysql/
面试知识点补充:
- 查看MySQL的错误日志文件路径:面试中可能会问到如何查看MySQL的错误日志文件路径。可以使用
SHOW VARIABLES LIKE 'log_error';
命令。 - 日志文件的自动轮转:面试中可能会问到如何设置日志文件的自动轮转。可以使用
logrotate
工具。例如,可以编辑/etc/logrotate.d/mysql
文件,配置日志轮转策略。
三、计算机网络
各层详细知识点总结
一、链路层(Link Layer)
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
,提供更多的地址空间。
- IPv4:32位地址,格式为
- 子网掩码:
- 用于将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 -n
或ip route
命令查看路由表。
- 答案:在Linux系统中,可以使用
- 问题4:什么是CIDR(无类别域间路由)?它的作用是什么?
- 答案:CIDR是一种IP地址的表示方法,通过子网掩码的位数来表示网络部分和主机部分。例如,
192.168.1.0/24
表示网络部分为192.168.1.0
,子网掩码为255.255.255.0
。CIDR的作用是提高IP地址的利用率,减少路由表的大小。
- 答案: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 协议
- 定义:TCP/IP 是一组用于互联网及相关网络的通信协议,包括 TCP 和 IP。
- 层次结构:
- 链路层:负责物理链路的管理,如以太网。
- 网络层:负责数据包的路由和转发,主要协议是 IP。
- 传输层:负责端到端的数据传输和可靠性保证,主要协议是 TCP 和 UDP。
- 应用层:负责处理特定的应用程序之间的通信,主要协议是 HTTP、FTP、SMTP 等。
- TCP 协议特点:
- 面向连接:在数据传输之前,必须建立一个可靠的连接。
- 可靠传输:通过确认(ACK)、重传机制、滑动窗口等技术,确保数据的完整性和顺序性。
- 应用场景:文件传输、网页浏览、邮件传输等。
面试知识点补充:
- TCP 的三次握手和四次挥手过程:面试中可能会问到 TCP 的三次握手和四次挥手过程。三次握手过程如下:
- 客户端发送一个 SYN 包到服务器,请求建立连接。
- 服务器收到 SYN 包后,回复一个 SYN-ACK 包,确认客户端的请求。
- 客户端收到 SYN-ACK 包后,发送一个 ACK 包到服务器,完成连接建立。
四次挥手过程如下: - 客户端发送一个 FIN 包到服务器,请求关闭连接。
- 服务器收到 FIN 包后,回复一个 ACK 包,确认客户端的请求。
- 服务器发送一个 FIN 包到客户端,请求关闭连接。
- 客户端收到 FIN 包后,发送一个 ACK 包到服务器,完成连接关闭。
- 查看本机的 IP 地址:面试中可能会问到如何查看本机的 IP 地址。可以使用
ifconfig
或ip a
命令。ip a
命令是现代 Linux 系统中推荐使用的命令。
UDP 协议
- 定义:UDP 是一种无连接的、不可靠的传输层协议。
- 特点:
- 无连接:不需要建立连接,开销较小。
- 不可靠:不提供确认和重传机制。
- 应用场景:视频流、语音通话、游戏、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的三次握手和四次挥手过程是什么?
- 答案:
- 三次握手:
- 客户端发送一个SYN包到服务器,请求建立连接。
- 服务器收到SYN包后,回复一个SYN-ACK包,确认客户端的请求。
- 客户端收到SYN-ACK包后,发送一个ACK包到服务器,完成连接建立。
- 四次挥手:
- 客户端发送一个FIN包到服务器,请求关闭连接。
- 服务器收到FIN包后,回复一个ACK包,确认客户端的请求。
- 服务器发送一个FIN包到客户端,请求关闭连接。
- 客户端收到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):
- 定义:HTTP 是一种应用层协议,用于在客户端和服务器之间传输超文本数据。
- 特点:
- 无状态:每次请求都是独立的。
- 基于 TCP:确保数据的可靠传输。
- 请求/响应模型:客户端发送请求,服务器返回响应。
- 请求和响应:
- 请求行:包含请求方法(GET、POST、PUT、DELETE等)、请求的URL和HTTP版本。
- 请求头:包含附加信息,如
Host
、User-Agent
、Content-Type
等。 - 请求体:对于POST请求,包含要提交的数据。
- 响应行:包含HTTP版本、状态码和状态消息。
- 响应头:包含附加信息,如
Content-Type
、Content-Length
等。 - 响应体:包含服务器返回的数据,如HTML页面、JSON数据等。
- 状态码:
- 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:服务不可用。
- 答案:HTTP状态码是服务器对客户端请求的响应状态的描述。常见的状态码包括:
- 问题3:DNS的作用是什么?它是如何工作的?
- 答案:DNS的作用是将域名解析为IP地址。当客户端请求一个域名时,DNS服务器会查找该域名对应的IP地址,并将结果返回给客户端。DNS解析过程包括递归查询和迭代查询。
- 问题4:什么是RESTful API?它的特点是什么?
- 答案:RESTful API是一种基于HTTP协议的网络应用程序接口,遵循REST(Representational State Transfer)架构风格。它的特点包括无状态、统一接口、资源导向、超媒体作为应用状态的引擎(HATEOAS)。
- 问题5:什么是Web缓存?它的作用是什么?
- 答案:Web缓存是一种存储机制,用于临时存储Web资源的副本。它的作用是减少对服务器的请求次数,提高响应速度,降低网络带宽的使用。