linux面試題基礎(linux常見面試問題)

Linux 概述

詳細教程資料關注+后臺私信;資料;兩個字可以免費視頻領取+文檔+各大廠面試題 資料內容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,嵌入式 等。

什么是LinuxC/C++Linux服務器開發/后臺架構師【零聲教育】-學習視頻教程-騰訊課堂

Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。

Linux的基本組件是什么?

就像任何其他典型的操作系統一樣,Linux擁有所有這些組件:內核,shell和GUI,系統實用程序和應用程序。Linux比其他操作系統更具優勢的是每個方面都附帶其他功能,所有代碼都可以免費下載。

Linux 的體系結構C/C++Linux服務器開發/后臺架構師【零聲教育】-學習視頻教程-騰訊課堂

從大的方面講,Linux 體系結構可以分為兩塊:

用戶空間(User Space) :用戶空間又包括用戶的應用程序(User Applications)、C 庫(C Library) 。

內核空間(Kernel Space) :內核空間又包括系統調用接口(System Call Interface)、內核(Kernel)、平臺架構相關的代碼(Architecture-Dependent Kernel Code) 。

為什么 Linux 體系結構要分為用戶空間和內核空間的原因?

1、現代 CPU 實現了不同的工作模式,不同的工作模式下 CPU 可以執行的指令和訪問的寄存器不同。

2、Linux 從 CPU 的角度出發,為了保護內核的安全,把系統分成了兩部分。

用戶空間和內核空間是程序執行的兩種不同的狀態,我們可以通過兩種方式完成用戶空間到內核空間的轉移:1)系統調用;2)硬件中斷。

BASH和DOS之間的基本區別是什么?

BASH和DOS控制臺之間的主要區別在于3個方面:

BASH命令區分大小寫,而DOS命令則不區分;

在BASH下,/ character是目錄分隔符,\作為轉義字符。在DOS下,/用作命令參數分隔符,\是目錄分隔符

DOS遵循命名文件中的約定,即8個字符的文件名后跟一個點,擴展名為3個字符。BASH沒有遵循這樣的慣例。

Linux 開機啟動過程?

詳細教程資料關注+后臺私信;資料;兩個字可以免費視頻領取+文檔+各大廠面試題 資料內容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,嵌入式 等。

了解即可。

1、主機加電自檢,加載 BIOS 硬件信息。

2、讀取 MBR 的引導文件(GRUB、LILO)。

3、引導 Linux 內核。

4、運行第一個進程 init (進程號永遠為 1 )。

5、進入相應的運行級別。

6、運行終端,輸入用戶名和密碼。

Linux系統缺省的運行級別?

關機。

單機用戶模式。

字符界面的多用戶模式(不支持網絡)。

字符界面的多用戶模式。

未分配使用。

圖形界面的多用戶模式。

重啟。

Linux 使用的進程間通信方式?

了解即可,不需要太深入。

1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。

2、信號(signal) 。

3、消息隊列。

4、共享內存。

5、信號量。

6、套接字(socket) 。

Linux 有哪些系統日志文件?

比較重要的是 /var/log/messages 日志文件。

該日志文件是許多進程日志文件的匯總,從該文件可以看出任何入侵企圖或成功的入侵。

另外,如果胖友的系統里有 ELK 日志集中收集,它也會被收集進去。

Linux系統安裝多個桌面環境有幫助嗎?

通常,一個桌面環境,如KDE或Gnome,足以在沒有問題的情況下運行。盡管系統允許從一個環境切換到另一個環境,但這對用戶來說都是優先考慮的問題。有些程序在一個環境中工作而在另一個環境中無法工作,因此它也可以被視為選擇使用哪個環境的一個因素。

什么是交換空間?

交換空間是Linux使用的一定空間,用于臨時保存一些并發運行的程序。當RAM沒有足夠的內存來容納正在執行的所有程序時,就會發生這種情況。

磁盤、目錄、文件

簡單 Linux 文件系統?

在 Linux 操作系統中,所有被操作系統管理的資源,例如網絡接口卡、磁盤驅動器、打印機、輸入輸出設備、普通文件或是目錄都被看作是一個文件。

也就是說在 Linux 系統中有一個重要的概念**:一切都是文件**。其實這是 Unix 哲學的一個體現,而 Linux 是重寫 Unix 而來,所以這個概念也就傳承了下來。在 Unix 系統中,把一切資源都看作是文件,包括硬件設備。UNIX系統把每個硬件都看成是一個文件,通常稱為設備文件,這樣用戶就可以用讀寫文件的方式實現對硬件的訪問。

Linux 支持 5 種文件類型,如下圖所示:

Linux 的目錄結構是怎樣的?

這個問題,一般人不會問。更多的是實際使用時,需要知道。

Linux 文件系統的結構層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:

常見目錄說明:

/bin: 存放二進制可執行文件(ls,cat,mkdir等),常用命令一般都在這里; /etc: 存放系統管理和配置文件; /home: 存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示;**/usr **: 用于存放系統應用程序; /opt: 額外安裝的可選應用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里; /proc: 虛擬文件系統目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息; /root: 超級用戶(系統管理員)的主目錄(特權階級o); /sbin: 存放二進制可執行文件,只有root才能訪問。這里存放的是系統管理員使用的系統級別的管理命令和程序。如ifconfig等; /dev: 用于存放設備文件; /mnt: 系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其他的文件系統; /boot: 存放用于系統引導時使用的各種文件;**/lib **: 存放著和系統運行相關的庫文件 ; /tmp: 用于存放各種臨時文件,是公用的臨時文件存儲點; /var: 用于存放運行時需要改變數據的文件,也是某些大文件的溢出區,比方說各種服務的日志文件(系統啟動日志等。)等; /lost+found: 這個目錄平時是空的,系統非正常關機而留下無家可歸的文件(windows下叫什么.chk)就在這里。

什么是 inode ?

一般來說,面試不會問 inode 。但是 inode 是一個重要概念,是理解 Unix/Linux 文件系統和硬盤儲存的基礎。

理解inode,要從文件儲存說起。

文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當于0.5KB)。

操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。

文件數據都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。

每一個文件都有對應的inode,里面包含了與該文件有關的一些信息。

簡述 Linux 文件系統通過 i 節點把文件的邏輯結構和物理結構轉換的工作過程?

如果看得一臉懵逼,也沒關系。一般來說,面試官不太會問這個題目。

Linux 通過 inode 節點表將文件的邏輯結構和物理結構進行轉換。

inode 節點是一個 64 字節長的表,表中包含了文件的相關信息,其中有文件的大小、文件所有者、文件的存取許可方式以及文件的類型等重要信息。在 inode 節點表中最重要的內容是磁盤地址表。在磁盤地址表中有 13 個塊號,文件將以塊號在磁盤地址表中出現的順序依次讀取相應的塊。

Linux 文件系統通過把 inode 節點和文件名進行連接,當需要讀取該文件時,文件系統在當前目錄表中查找該文件名對應的項,由此得到該文件相對應的 inode 節點號,通過該 inode 節點的磁盤地址表把分散存放的文件物理塊連接成文件的邏輯結構。

什么是硬鏈接和軟鏈接?

1)硬鏈接

由于 Linux 下的文件是通過索引節點(inode)來識別文件,硬鏈接可以認為是一個指針,指向文件索引節點的指針,系統并不為它重新分配 inode 。每添加一個一個硬鏈接,文件的鏈接數就加 1 。

不足:1)不可以在不同文件系統的文件間建立鏈接;2)只有超級用戶才可以為目錄創建硬鏈接。

2)軟鏈接

軟鏈接克服了硬鏈接得不足,沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網絡對文件進行鏈接。

不足:因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到了,而硬鏈接就沒有這個缺陷,你想怎么移就怎么移;還有它要系統分配額外的空間用于建立新的索引節點和保存原文件的路徑。

實際場景下,基本是使用軟鏈接??偨Y區別如下:

硬鏈接不可以跨分區,軟件鏈可以跨分區。

硬鏈接指向一個 inode 節點,而軟鏈接則是創建一個新的 inode 節點。

刪除硬鏈接文件,不會刪除原文件,刪除軟鏈接文件,會把原文件刪除。

一臺 Linux 系統初始化環境后需要做一些什么安全工作?

詳細教程資料關注+后臺私信;資料;兩個字可以免費視頻領取+文檔+各大廠面試題 資料內容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,嵌入式 等。

1、添加普通用戶登陸,禁止進入 root 用戶登陸,更改 SSH 端口號。

修改 SSH 端口不一定絕對哈。當然,如果要暴露在外網,建議改下。l

2、服務器使用密鑰登陸,禁止密碼登陸。

3、開啟防火墻,關閉 SElinux ,根據業務需求設置相應的防火墻規則。

4、裝 fail2ban 這種防止 SSH 暴力破擊的軟件。

5、設置只允許公司辦公網出口 IP 能登陸服務器(看公司實際需要)

也可以安裝 VPN 等軟件,只允許連接 VPN 到服務器上。

6、修改歷史命令記錄的條數為 10 條。

7、只允許有需要的服務器可以訪問外網,其它全部禁止。

8、做好軟件層面的防護。

8.1 設置 nginx_waf 模塊防止 SQL 注入。

8.2 把 Web 服務使用 www 用戶啟動,更改網站目錄的所有者和所屬組為 www

總結

詳細教程資料關注+后臺私信;資料;兩個字可以免費視頻領取+文檔+各大廠面試題 資料內容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,嵌入式 等。

轉載注明出處:華峰博客網

內容版權聲明:除非注明,否則皆為本站原創文章。