【翻譯】Linux SRE常見面試問題

  • 2019 年 10 月 6 日
  • 筆記

參見 https://github.com/lycying/linux-sysadmin-interview-questions 5 年前的列表如今依然可用,就是有知識點有點老了。

一般問題

你昨天 / 或者本周學習了什麼新知識?

談一下你最擅長的開發環境 (OS, Editor, Browsers, Tools etc.)

談一下你最近完成的一個 linux 項目

談一下你在工作中犯過的最大錯誤,以及你後續的改進,得到了什麼經驗

我們為什麼要選擇你?

DNS 的功能是什麼?

什麼是 HTTP?

什麼是 HTTP 代理?都有哪些類型?它是怎麼工作的?

簡單描述一下 HTTPS 是怎麼工作的

SMTP 是什麼?簡單描述一下一個郵件是怎麼通過 SMTP 送達的

RAID 是什麼? RAID0, RAID1, RAID5, RAID10 呢?

什麼是 level0 備份?什麼是增量備份?

簡單描述下 Linux 系統的目錄結構

基本的 Linux 問題

超級管理員的用戶的 UID 和名稱是什麼

在一個目錄中怎麼查看所有文件,包括隱藏文件

如何刪除一個文件夾和裡面的所有內容

怎麼查看記憶體資訊

怎麼在一個目錄中遞歸的查找包含 「bj xxx" 的文件

通過 SSH 怎麼登錄一台遠程主機,怎麼配置免密登錄

怎麼查看你正在用到的所有環境變數

找不到 ifconfig 命令怎麼辦

按下 TAB-TAB 會發生什麼情況

怎麼查看硬碟容量的使用情況

用什麼命令能夠檢測 DNS 的情況

用什麼命令修改文件所屬組和文件許可權

chmod +x * 什麼意思

許可權為 0750 的文件表示什麼

許可權為 0750 的目錄表示什麼

怎麼加入一個沒有登錄許可權的系統用戶

怎麼將某用戶加入 / 取消加入某個組

alias 命令能夠做什麼

怎麼設置一個 linux 用戶的郵箱地址

CTRL-c 表明什麼?CTRL-d 呢

/etc/services 文件是幹什麼用的

怎麼重定向 STDOUT 和 STDERR (> /dev/null 2>&1)

UNIX 和 Linux 有什麼不同

Telnet 和 SSH 有什麼不同

說明一下 load averages 的含義

都有什麼命令能夠看到 load,怎麼保持到文件

什麼是 Linux 的內核模組

如何進入 "single user mode" 模式去排查問題

你如何去排查一個普通的 404 問題

中級的 Linux 問題

下面的命令都是幹什麼用的,請說明

tee   awk   tr   cut   tac   curl   wget   watch   head   tail

一個命令行後的 & 是做什麼用的,有什麼問題?

"packet filter" 是什麼?它是怎麼工作的?

什麼是 Virtual Memory?

SWAP 是什麼,如何禁用?

A record, NS record, PTR record, CNAME record, MX record 都表示什麼意思?

水平分割(Split-Horizon) DNS 是什麼意思?

linux 中的粘滯位 (sticky bit) 是什麼意思?

不可變位對一個文件是什麼影響?chattr 命令是做什麼的?

軟鏈和硬鏈有什麼區別?當你刪除它們的源時,會發生什麼?

inode 是什麼?裡面存放的是什麼內容?

如何在下次作業系統重啟時強制開啟文件系統檢測?

SNMP 是幹什麼的?

linux 的 "runlevel" 是什麼,如何查看當前的級別?

SSH 埠轉發是什麼?如何做?

怎麼手動添加一個用戶到系統中(不可以使用 useradd 等命令)?

Linux 系統設備 (device) 的 major 和 minor number 指的是什麼?

mknod 了解么?什麼時候用過?

當系統提示 "filesystem is full" ,是什麼原因引起的?

什麼時候當你刪除一個文件,但是 "df" 命令發現空間並沒有釋放?

ps 命令是如何工作的?

簡短說明一下進程的狀態意義(如 S、R、D)

怎麼查看是什麼進程在監聽某個埠?

殭屍進程是怎麼產生的?

如果你運行了一個命令,你看到執行結果輸出在終端,現在你想同時把執行結果保存到文件里,該如何去做?

echo "1" > /proc/sys/net/ipv4/ip_forward 是什麼意思

簡單描述下你如何給 sayhiai.com 安裝一個 https 證書

你能使用同一個 IP 配置多個虛擬 HTTPS 主機么

什麼是通配符證書?

你都知道哪些 linux 文件類型,如何查看?

linux 進程和執行緒有什麼區別?

exec 和 fork 命令有什麼區別?

nohup 是什麼命令?

下面連個命令的區別是什麼?

myvar=hello   export myvar=hello

ntp 是什麼?你配置了幾個 ntp 伺服器?

加入你要升級 1000 台伺服器的內核,你將如何做?

怎麼去限制某個進程的記憶體使用?

除了 bash 你還用過哪些 shell,有什麼特點?

從一台機器拷貝所有文件到另一台機器?包括軟硬鏈接、設備等

怎麼去判斷 apache 是否已經安裝?怎麼列出系統中已經安裝的軟體包?

高級 linux 問題

tunnel 是什麼?怎麼設置一個帶密碼的 http 代理

IDS 和 IPS 有什麼區別?

Linux 標準是什麼?

什麼是原子操作?

你剛配置好的 http 伺服器在系統重啟後沒有啟動,你後續會做什麼?

這個文件里存的是什麼 ~/.ssh/authorized_keys ?

I've added my public ssh key into authorized_keys but I'm still getting a password prompt, what can be wrong?

你創建過軟體包么?比如 RPM、DEB 等?

這條命令是什麼意思 :(){ :|:& };: ?

怎麼在 SHELL 腳本里捕捉 Linux 訊號?

你能捕捉 SIGKILL 訊號么?

當 Linux 啟動 OOM killer 以後,它會選擇哪個進程去殺死?

詳細描述一下 Linux 系統的啟動,越詳細越好,從你按動電源直到顯示登錄

chroot 是什麼用的

當 unmount 一個目錄時,提示正在使用,怎麼找出那個進程正在使用這個目錄?

LD_PRELOAD環境變數是幹什麼用的?

你嘗試啟動一個二進位文件,但是什麼都沒發生,接下來你如何進行調試?

cgroups 是什麼?

怎麼增加或者減少某個進程的優先順序?

專業 Linux 問題

A running process gets EAGAIN: Resource temporarily unavailable on reading a socket. 在不殺死進程的前提下,你怎麼關閉這個 socket/file 文件描述符?

swapiness 參數怎麼修改?有什麼影響?

怎麼去改變 TCP 的緩衝區?你什麼情況下去修改這些參數?

什麼是 hugepage,什麼時候會用到?你都做過哪些優化?

什麼是 LUMA 架構?對軟體有什麼影響?

LUKS 是什麼? 如何使用? (磁碟加密)

CPU 親和力是什麼,如何配置?

怎麼分析 I/O,怎麼判斷達到瓶頸?

網路問題

localhost 是什麼?如果 ping localhost 失敗是什麼情況?

用什麼命令看系統所有開啟的埠?

300.168.0.123 是一個合法的 ip 地址么?

VLAN 是什麼?

ARP 用來做什麼?

TCP 和 UDP 有什麼區別?

默認網關的作用是什麼?

怎麼看 linux 的網路路由表

怎麼給某塊網卡加 IPv6 地址?

SNAT 是什麼?有什麼作用?

怎麼防範 DDoS 攻擊?

怎麼查看或者 dump 網路包的內容?如何分析?

IPoAC (RFC 1149) 是什麼?

當你把埠 bind 到 0 上,會發生什麼 0?

Linux 支援的埠範圍?能支援多少連接?

MySQL 問題

怎麼創建一個用戶?

如何給某個用戶某個庫的讀許可權?

左連接和又連接有什麼區別?

InnoDB 和 MyISAM 有什麼區別?

簡單描述下如何做一個簡單的 MySQL 主從集群

MySQL Cluster 是什麼?那個版本支援?

mysqlsecureinstallation 是什麼意思?

怎麼查看 MySQL 正在運行哪些 job?

怎麼排查慢日誌?

你如何給 MySQL 做全量、增量備份?

DevOps 問題

你寫腳本一般怎麼寫?有哪些工具或者流程?

git 如何簡單使用?

動態鏈接和靜態鏈接有什麼區別?

"./configure && make && make install" 做了些啥?

puppet/chef/ansible 用過么?

Nagios/Zabbix/Telegraf 等做什麼用的?

接觸過 Influxdb、OpenTSDB 這些時序資料庫么?

CI/CD 工具接觸過什麼?Jenkins?

容器 Containers 和 VM 有什麼區別?

怎麼創建一個 postgres 用戶?

virtual IP 什麼意思?

python 里有 switch 語句么?

你怎麼控制雲端和本地環境的許可權?

你會給開發人員開放系統許可權么?到什麼程度?

用過跳板機么?有哪些?

為了增加開發和 SRE 的互動,你都引入過哪些工具?

有趣的問題

有個傻蛋運行了下面的命令 chmod 444 /bin/chmod,你該怎麼去修復它

我忘了我的 ROOT 密碼,怎麼找回來?

我遠程啟動了一台機器,10 分鐘過去了還沒給我響應,發生了什麼情況?

你被困在一個孤島上,僅有機會選擇 5 個命令,為了最大限對的掌控,你會選哪 5 個?

你隨機看到一台開著終端的機器,你首先想到的是想輸入啥?

你用 SSH 命令干過哪些創造性的事情?

當 reboot 命令沒有響應,你怎麼重啟機器?

實踐

解壓 test.tar.gz 並輸出內容.

在 test 文件夾內遞歸刪除所有 "*.pyc" 文件?

替換所有 *txt 中的 "window" 為 "linux"

檢測 IP X.X.X.X 的 443 埠是否開放

使用 telnet 或者 nc 獲取某網頁內容

使用命令行發送一個郵件

Other Great References:

Some questions are 'borrowed' from other great references like:

https://github.com/darcyclarke/Front-end-Developer-Interview-Questions

https://github.com/kylejohnson/linux-sysadmin-interview-questions/blob/master/test.md