前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。

前后端面试题-专栏总目录

在这里插入图片描述

文章目录

一、本文面试题目录

76. ifconfigip 命令的区别是什么?如何查看和配置网络接口?

  • 区别说明

    • ifconfig:传统传统网络配置命令,属于net-tools工具包,功能有限,部分Linux发行版已弃用。
    • ip:新一代新一代网络管理命令,属于iproute2工具包,功能更强大,支持现代网络技术(如VLAN、隧道),是ifconfig的替代者。
  • 查看网络接口

    # ifconfig 方式(查看所有激活的接口)
    ifconfig
    ifconfig eth0  # 查看指定接口
    # ip 方式(推荐)
    ip addr show  # 查看所有接口详细信息
    ip link show  # 查看接口链路状态
  • 配置网络接口

    # 临时设置IP地址(重启失效)
    # ifconfig 方式
    ifconfig eth0 192.168.1.100 netmask 255.255.255.0
    ifconfig eth0 up  # 激活接口
    # ip 方式
    ip addr add 192.168.1.100/24 dev eth0
    ip link set eth0 up  # 激活接口
    # 临时设置网关
    route add default gw 192.168.1.1  # ifconfig配套命令
    ip route add default via 192.168.1.1  # ip方式
  • 永久配置
    需修改配置文件(因发行版而异):

    • Debian/Ubuntu:/etc/network/interfaces
    • CentOS/RHEL:/etc/sysconfig/network-scripts/ifcfg-eth0

77. 如何查看系统的路由表?route 命令和 ip route 命令的使用方法?

  • 路由表作用
    记录网络数据包的转发路径,决定数据从源主机到目标主机的传输路线。

  • 查看路由表

    # route 命令(传统方式)
    route -n  # -n 表示显示IP地址而非主机名
    # ip route 命令(推荐,功能更全面)
    ip route show
    ip route list
  • 路由表主要字段说明

    • Destination/default:目标网络或默认路由(所有未匹配的流量)
    • Gateway:网关IP地址(数据转发的下一跳)
    • Genmask:子网掩码
    • Iface:出口网络接口
  • 添加/删除路由

    # 添加路由(到10.0.0.0/24网段,通过eth0接口和网关192.168.1.1)
    route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
    ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0
    # 删除路由
    route del -net 10.0.0.0 netmask 255.255.255.0
    ip route del 10.0.0.0/24
  • 设置默认路由

    route add default gw 192.168.1.1
    ip route add default via 192.168.1.1

78. ping 命令的作用是什么?-c-i 选项的含义是什么?如何检测与目标主机的连通性?

  • 作用
    通过发送ICMP Echo Request数据包并等待回应,检测与目标主机的网络连通性,评估网络延迟和丢包率。

  • 常用选项

    • -c <次数>:指定发送数据包的次数(默认无限次)
    • -i <间隔秒数>:指定数据包发送间隔(默认1秒)
    • -s <字节数>:指定数据包大小
    • -W <超时秒数>:指定等待回应的超时时间
  • 检测连通性示例

    # 检测与百度的连通性(默认无限次,按Ctrl+C停止)
    ping www.baidu.com
    # 发送4个数据包后停止
    ping -c 4 192.168.1.1
    # 每2秒发送一个数据包,共5次,超时等待3秒
    ping -c 5 -i 2 -W 3 www.google.com
  • 输出解读

    • 64 bytes from ...:收到回应,包含字节数、目标IP、TTL(生存时间)和往返时间(RTT)
    • Request timeout:超时未收到回应(可能网络不通或被防火墙拦截)
    • 最终统计:包含发送/接收数量、丢包率、RTT平均值等

79. traceroutemtr 命令的作用是什么?如何排查网络路径中的故障?

  • 命令作用

    • traceroute:追踪数据包从本地到目标主机的路由路径,显示经过的每一跳(路由器)的IP和延迟。
    • mtr:结合pingtraceroute的功能,实时显示路径中各节点的连续状态,更适合长期监控。
  • 使用方法

    # traceroute 示例(追踪到百度的路径)
    traceroute www.baidu.com
    # 选项:-n 显示IP而非主机名;-w 设置超时时间
    traceroute -n -w 2 114.114.114.114
    # mtr 示例(实时监控到谷歌的路径)
    mtr www.google.com
    # 选项:-n 显示IP;-r 生成报告模式(非交互)
    mtr -n -r www.github.com
  • 故障排查

    1. 若某一跳开始无回应,但后续节点有回应:该节点可能禁用了ICMP,但路径仍通。
    2. 某一跳后完全无回应:该节点或其与下一跳的链路可能存在故障。
    3. 延迟突然增大的节点:可能存在网络拥堵或路由问题。

80. netstatss 命令的作用是什么?如何查看系统的网络连接状态?

  • 命令作用
    两者均用于查看网络连接、端口监听、路由表等网络信息,ssnetstat的现代替代者,速度更快,支持更多协议。

  • 常用选项及示例

    # 查看所有网络连接(包括TCP、UDP)
    netstat -tuln  # -t:TCP, -u:UDP, -l:监听中, -n:显示IP和端口
    ss -tuln       # 等效的ss命令
    # 查看所有已建立的TCP连接
    netstat -ant | grep ESTABLISHED
    ss -ant | grep ESTAB
    # 查看特定端口的连接(如80端口)
    netstat -tuln | grep :80
    ss -tuln | grep :80
    # 查看进程与端口的关联(需root权限)
    netstat -tulnp
    ss -tulnp
  • 连接状态说明(TCP)

    • LISTEN:端口处于监听状态,等待连接
    • ESTABLISHED:连接已建立,数据可传输
    • SYN_SENT:正在发起连接请求
    • TIME_WAIT:连接已关闭,等待超时回收

81. 如何查看系统的DNS配置?/etc/resolv.conf 文件的作用是什么?

  • 查看DNS配置

    # 方法1:查看resolv.conf文件(最直接)
    cat /etc/resolv.conf
    # 方法2:使用nmcli(NetworkManager管理的系统)
    nmcli device show eth0 | grep DNS
    # 方法3:使用systemd-resolve(systemd系统)
    systemd-resolve --status
  • /etc/resolv.conf 的作用
    存储DNS服务器的IP地址和域名解析配置,系统进行域名解析时会优先参考此文件。

  • 文件内容示例

    nameserver 114.114.114.114  # 首选DNS服务器
    nameserver 8.8.8.8          # 备用DNS服务器
    search example.com          # 域名搜索后缀(当输入短域名时自动补全)
  • 注意
    部分系统(如使用NetworkManager或systemd-resolved)中,resolv.conf可能是自动生成的,手动修改会被覆盖。永久修改需通过网络管理工具(如nmcli)配置。

82. hostdig 命令的作用是什么?如何查询域名对应的IP地址?

  • 命令作用
    两者均用于DNS查询,host更简单直观,dig功能更强大,支持详细的DNS记录查询。

  • 查询域名对应的IP地址

    # host 命令(简单查询)
    host www.baidu.com  # 输出IPv4和IPv6地址
    host -t A www.baidu.com  # 只查询A记录(IPv4)
    # dig 命令(详细查询)
    dig www.baidu.com
    dig +short www.baidu.com  # 只输出IP地址(简洁模式)
  • 查询其他DNS记录

    # 查询MX记录(邮件服务器)
    host -t MX gmail.com
    dig -t MX gmail.com +short
    # 查询NS记录(域名服务器)
    host -t NS github.com
    dig -t NS github.com +short
  • 指定DNS服务器查询

    host www.baidu.com 8.8.8.8  # 使用谷歌DNS查询
    dig www.baidu.com @114.114.114.114  # 使用114DNS查询

83. 什么是防火墙?Linux中常用的防火墙工具是什么?(如 iptablesfirewalld

  • 防火墙概念
    一种网络安全机制,通过制定规则允许或禁止网络数据包的进出,保护系统免受未授权访问。

  • Linux常用防火墙工具

    1. iptables

      • 底层防火墙工具,直接操作内核的netfilter模块。
      • 基于规则链(chain)和表(table)工作,配置复杂但灵活。
      • 规则需要手动保存,否则重启后失效。
    2. firewalld

      • 动态防火墙管理工具,是iptables的前端(底层仍依赖netfilter)。
      • 支持 zones(区域)和 services(服务)概念,配置更简单。
      • 默认随系统启动,规则可动态生效(无需重启服务)。
    3. ufw(Uncomplicated Firewall):

      • Ubuntu等发行版默认的简化防火墙工具,是iptables的封装。
      • 命令简单,适合入门用户。
  • 基本操作示例

    # iptables:查看规则
    iptables -L
    # firewalld:查看状态
    systemctl status firewalld
    # ufw:启用防火墙
    sudo ufw enable

84. iptables 的基本规则组成是什么?如何添加一条允许SSH连接的规则?

  • 基本规则组成

    • 表(Table):按功能分类,常用的有:
      • filter:默认表,处理数据包的过滤(允许/拒绝)。
      • nat:处理网络地址转换(如端口转发)。
      • mangle:修改数据包的标记。
    • 链(Chain):表中包含的规则集合,按数据包流向分类:
      • INPUT:进入本机的数据包。
      • OUTPUT:从本机发出的数据包。
      • FORWARD:经过本机转发的数据包。
    • 规则(Rule):每条规则包含匹配条件(如端口、IP)和动作(如ACCEPT、DROP)。
    • 动作(Target)
      • ACCEPT:允许数据包通过。
      • DROP:丢弃数据包(不回应)。
      • REJECT:拒绝数据包(返回错误信息)。
  • 添加允许SSH连接的规则
    SSH默认使用22端口,规则如下:

    # 允许来自任何IP的SSH连接(22端口)
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    # 只允许特定IP(如192.168.1.100)的SSH连接
    iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
    # 保存规则(Debian/Ubuntu)
    iptables-save > /etc/iptables/rules.v4
    # 保存规则(CentOS/RHEL)
    service iptables save

85. firewalldiptables 的区别是什么?如何开放80端口?

  • 主要区别

    特性iptablesfirewalld
    配置方式直接编写规则链基于区域(zones)和服务(services)
    规则生效修改后需重启服务或手动刷新动态生效(无需重启)
    持久性需手动保存规则规则默认持久化
    复杂度较高(需了解链和表)较低(适合快速配置)
    依赖直接操作netfilter作为iptables的前端,底层仍用netfilter
  • 开放80端口(HTTP服务)

    # 方法1:通过端口号开放
    sudo firewall-cmd --add-port=80/tcp  # 临时开放(重启失效)
    sudo firewall-cmd --add-port=80/tcp --permanent  # 永久开放
    sudo firewall-cmd --reload  # 重新加载配置(使永久规则生效)
    # 方法2:通过服务名开放(firewalld已定义http服务对应80端口)
    sudo firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --reload
    # 验证规则是否生效
    sudo firewall-cmd --list-ports
    sudo firewall-cmd --list-services

86. 什么是NAT(网络地址转换)?iptables 如何配置SNAT和DNAT?

  • NAT概念
    网络地址转换(NAT)用于将一个IP地址空间转换为另一个IP地址空间,常见于私有网络访问公网(如家庭路由器)或端口转发场景。

  • SNAT和DNAT

    • SNAT(源地址转换)
      修改数据包的源IP地址,通常用于私有网络内的主机通过网关访问公网(共享公网IP)。
    • DNAT(目的地址转换)
      修改数据包的目的IP地址或端口,通常用于将公网IP的某个端口转发到内网主机(如将公网80端口转发到内网服务器的8080端口)。
  • iptables 配置示例

    # 配置SNAT(假设公网接口为eth0,公网IP为203.0.113.1)
    iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1
    # 配置DNAT(将公网203.0.113.1的80端口转发到内网192.168.1.100的8080端口)
    iptables -t nat -A PREROUTING -d 203.0.113.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
    # 允许转发(默认可能禁用)
    iptables -A FORWARD -p tcp --dport 8080 -d 192.168.1.100 -j ACCEPT

87. 如何查看系统的网络带宽使用情况?(如 iftopnload

  • 常用工具及用法
    1. iftop
      实时显示网络接口的带宽使用情况,按连接显示流量。

      sudo iftop  # 监控默认接口
      sudo iftop -i eth0  # 监控指定接口eth0

      界面说明:左侧为源IP,右侧为目标IP,中间为实时带宽。

    2. nload
      以图形化方式显示总带宽、流入和流出速率。

      sudo nload  # 交互式显示所有接口
      sudo nload eth0  # 只显示eth0接口
    3. vnstat
      记录历史带宽使用情况,支持按小时/天/月统计。

      sudo vnstat  # 显示总统计
      sudo vnstat -h  # 按小时统计
      sudo vnstat -d  # 按天统计
    4. sar(系统自带):
      系统活动报告工具,可查看历史和实时带宽。

      sar -n DEV 1 5  # 每1秒统计一次,共5次

88. 什么是SSH?如何通过SSH远程连接Linux服务器?ssh 命令的常用选项有哪些?

  • SSH概念
    SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中远程登录服务器,替代了明文传输的Telnet。

  • 远程连接方法

    # 基本语法:ssh 用户名@服务器IP/域名
    ssh user@192.168.1.100
    ssh admin@example.com
  • 常用选项

    • -p <端口>:指定SSH端口(默认22)
      ssh -p 2222 user@192.168.1.100  # 连接到2222端口
    • -i <密钥文件>:使用指定的私钥文件登录(密钥认证)
      ssh -i ~/.ssh/id_rsa user@example.com
    • -X:启用X11转发(可运行图形程序)
      ssh -X user@192.168.1.100  # 连接后可运行xclock等图形程序
    • -t:强制分配伪终端(用于在远程执行需要交互的命令)
      ssh -t user@host "sudo bash"  # 在远程主机上获取root终端

89. 如何配置SSH密钥登录?相比密码登录有什么优势?

  • 密钥登录配置步骤

    1. 在本地生成密钥对

      ssh-keygen -t rsa -b 4096  # 生成RSA密钥对,默认存于~/.ssh/
      # 按回车默认即可,可设置密码保护私钥(增强安全性)
    2. 将公钥上传到远程服务器

      # 方法1:使用ssh-copy-id(推荐)
      ssh-copy-id user@192.168.1.100
      # 方法2:手动复制公钥
      cat ~/.ssh/id_rsa.pub | ssh user@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
    3. 测试密钥登录

      ssh user@192.168.1.100  # 无需输入密码即可登录
    4. (可选)禁用密码登录(增强安全性):
      编辑远程服务器的/etc/ssh/sshd_config

      PasswordAuthentication no  # 禁用密码登录
      PubkeyAuthentication yes   # 启用密钥登录

      重启SSH服务:sudo systemctl restart sshd

  • 相比密码登录的优势

    • 更安全:避免密码被暴力破解,私钥可设置密码保护。
    • 更便捷:无需每次输入密码,适合脚本自动化操作。
    • 可审计:通过密钥管理追踪登录来源。

90. scpsftp 命令的作用是什么?如何在服务器之间传输文件?

  • 命令作用

    • scp(Secure Copy):基于SSH的文件复制命令,用于在本地与远程服务器或服务器之间传输文件。
    • sftp(Secure FTP):基于SSH的文件传输协议,提供交互式的文件传输环境(类似FTP)。
  • scp 使用示例

    # 本地文件复制到远程服务器
    scp localfile.txt user@192.168.1.100:/remote/path/
    # 远程文件复制到本地
    scp user@192.168.1.100:/remote/file.txt /local/path/
    # 复制目录(-r 递归选项)
    scp -r localdir/ user@192.168.1.100:/remote/dir/
    # 指定端口(-P 端口号)
    scp -P 2222 file.txt user@host:/path/
  • sftp 使用示例

    # 连接远程服务器
    sftp user@192.168.1.100
    # 常用交互命令
    put localfile.txt  # 上传本地文件到远程当前目录
    get remotefile.txt  # 下载远程文件到本地当前目录
    ls  # 列出远程目录内容
    cd  # 切换远程目录
    lls  # 列出本地目录内容
    lcd  # 切换本地目录
    exit  # 退出sftp

91. 什么是端口?如何查看某个端口被哪个进程占用?(如 lsof -i :端口

  • 端口概念
    端口是计算机网络中用于区分不同服务的数字标识(0-65535),配合IP地址可唯一确定网络中的某个服务。

    • 0-1023:知名端口(如80=HTTP,443=HTTPS,22=SSH)。
    • 1024-49151:注册端口。
    • 49152-65535:动态/私有端口。
  • 查看端口占用的方法

    1. lsof 命令

      sudo lsof -i :80  # 查看80端口占用情况
      sudo lsof -i tcp:22  # 查看TCP 22端口
    2. netstat 命令

      netstat -tulnp | grep :80  # -t:TCP, -u:UDP, -l:监听, -n:数字, -p:进程
    3. ss 命令(推荐,更高效):

      ss -tulnp | grep :80
    4. fuser 命令

      sudo fuser 80/tcp  # 显示占用80端口(TCP)的进程ID
  • 示例输出解读

    # lsof -i :80 输出示例
    COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   1234   root    6u  IPv4  12345      0t0  TCP *:http (LISTEN)

    表示nginx进程(PID=1234)正在监听80端口(http服务)。

92. 什么是网关(Gateway)?它在网络通信中起到什么作用?

  • 网关概念
    网关是连接两个不同网络的设备(如路由器),负责在不同网络之间转发数据包,是网络层的设备。

  • 作用

    1. 跨网络通信:当主机需要与不同网段的主机通信时,数据包通过网关转发。
    2. 协议转换:可在不同协议的网络间转换数据格式(如以太网与WiFi)。
    3. 路由选择:根据路由表选择最优路径转发数据包。
    4. NAT功能:实现私有IP与公网IP的转换,使内网主机能访问互联网。
  • 查看系统网关

    # 方法1:ip route
    ip route show | grep default  # 输出:default via 192.168.1.1 dev eth0
    # 方法2:route
    route -n | grep UG  # UG表示默认网关(G)且已启用(U)
    # 方法3:netstat
    netstat -rn | grep UG

    输出中的192.168.1.1即为默认网关IP。

93. 如何临时和永久修改主机名?(hostname 命令和 /etc/hostname 文件)

  • 临时修改主机名(立即生效,重启后失效):

    sudo hostname newhostname  # 将主机名改为newhostname
  • 永久修改主机名

    1. 方法1:修改 /etc/hostname 文件(适用于大多数Linux):

      sudo vim /etc/hostname  # 编辑文件,替换为新主机名

      重启后生效,或执行sudo hostname -F /etc/hostname立即生效。

    2. 方法2:使用 hostnamectl 命令(systemd系统,推荐):

      sudo hostnamectl set-hostname newhostname  # 永久修改

      无需重启,立即生效,同时更新/etc/hostname/etc/machine-info

  • 验证主机名

    hostname  # 查看当前主机名
    hostnamectl  # 查看详细主机信息(systemd系统)
  • 注意
    建议同时在/etc/hosts中更新主机名与IP的映射,避免本地解析问题:

    sudo vim /etc/hosts
    # 添加或修改:127.0.1.1  newhostname

94. /etc/hosts 文件的作用是什么?它与DNS的关系是什么?

  • /etc/hosts 的作用
    存储IP地址与主机名的映射关系,用于本地域名解析,优先级高于DNS。系统在解析域名时,会先查询/etc/hosts,若未找到再查询DNS服务器。

  • 文件内容示例

    127.0.0.1   localhost  # 本地回环地址
    127.0.1.1   myserver   # 本机主机名映射
    192.168.1.100 server1  # 自定义IP与主机名映射
    203.0.113.5  example.com  # 自定义域名映射
  • 与DNS的关系

    • 相同点:均用于将域名解析为IP地址。
    • 不同点
      • hosts:本地文件,仅对本机有效,修改简单,无缓存。
      • DNS:分布式网络服务,对全网有效,修改需通过DNS服务器,有缓存机制。
    • 优先级:系统解析域名时,通常先查hosts,再查DNS(可通过/etc/nsswitch.confhosts配置调整)。
  • 应用场景

    • 测试环境中临时绑定域名与IP(无需修改DNS)。
    • 屏蔽恶意网站(将其域名指向127.0.0.1)。
    • 加速本地常用域名的解析。

95. 什么是DHCP?如何配置Linux系统使用DHCP获取IP地址?

  • DHCP概念
    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用于自动分配IP地址、子网掩码、网关、DNS等网络参数,避免手动配置的繁琐。

  • 配置Linux使用DHCP获取IP地址

    1. 临时配置(立即生效,重启失效):

      # 使用dhclient获取IP(适用于大多数系统)
      sudo dhclient eth0  # 为eth0接口获取IP
      # 释放IP
      sudo dhclient -r eth0
    2. 永久配置(不同发行版配置文件不同):

      • Debian/Ubuntu/etc/network/interfaces):

        sudo vim /etc/network/interfaces
        # 添加:
        auto eth0
        iface eth0 inet dhcp

        重启网络:sudo systemctl restart networking

      • CentOS/RHEL/etc/sysconfig/network-scripts/ifcfg-eth0):

        sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
        # 设置:
        BOOTPROTO=dhcp
        ONBOOT=yes

        重启网络:sudo systemctl restart network

      • 使用NetworkManager(现代Linux):

        sudo nmcli connection modify eth0 ipv4.method auto
        sudo nmcli connection up eth0
  • 验证配置

    ip addr show eth0  # 查看是否获取到IP
    cat /etc/resolv.conf  # 查看是否获取到DNS

二、120道Linux面试题目录列表

文章序号Linux面试题120道
1Linux面试题及详细答案120道(01-15)
2Linux面试题及详细答案120道(16-30)
3Linux面试题及详细答案120道(31-45)
4Linux面试题及详细答案120道(46-60)
5Linux面试题及详细答案120道(61-75)
6Linux面试题及详细答案120道(76-95)
7Linux面试题及详细答案120道(96-110)
8Linux面试题及详细答案120道(111-120)
posted on 2025-09-30 08:32  lxjshuju  阅读(14)  评论(0)    收藏  举报