初級運維(二)


       哎臥槽,,終於知道如何用代碼號排版了!準備運維工程師面試,固然得很全面了,網絡+MYSQL+linux+OS,找一些有水準的題目練練,分析深入點。html

       特麼的哪家公司會是我人生的第一家落腳地,反正勞資不將就,不甘心!前端



一、TCP爲何要進行三次握手?(考的頻率不是一點把點啊,命中率80%)node

答:主要是爲了防止已失效的鏈接請求報文段忽然又傳到了服務端,於是產生錯誤。mysql

分析:原本TCP鏈接已經斷開,可是因爲以前一個數據包在鏈接創建的過程當中,因爲網絡延遲問題遲遲沒有到達,當該失效報文到達服務端的時候,服務端又會認爲客戶端想要創建新的TCP鏈接,因而便會進行確認贊成創建鏈接,假如是2次握手,那麼鏈接創建成功,服務端就會一直等待客戶端傳輸數據,致使服務端浪費資源。linux


二、若是第三個ACK報文丟失了,會發生什麼狀況?(這算是比較不容易想到的了,命中率50%)ios

答:當客戶端收到服務端的SYN+ACK應答後,其狀態變爲ESTABLISHED,並會發送ACK包給服務端,準備發送數據了。若是此時ACK在網絡中丟失,過了超時計時器後,那麼Server端會從新發送SYN+ACK包,重傳次數根據/proc/sys/net/ipv4/tcp_synack_retries來指定,默認是5次。若是重傳指定次數到了後,仍然未收到ACK應答,那麼一段時間後,Server自動關閉這個鏈接。可是Client認爲這個鏈接已經創建,若是Client端向Server寫數據,Server端將以RST包響應,方能感知到Server的錯誤。web


三、TCP鏈接的時候,服務端在什麼狀況下會發送RST包?(這就是真的難了,沒學習過的不可能知道,命中率20%)面試

答:通常是發生錯誤,纔會發送RST包。(1)對方端口未打開sql

(2)TCP鏈接被終止(就是前面說的ACK包丟失,重傳次數到了,就要自動關閉)shell

(3)請求超時

(4)在一個已關閉的 socket 上收到數據


四、TCP和UDP區別(面試官最最最喜歡考的就是這個了,命中率高達90%)

答:(1)TCP稱爲傳輸控制協議,UDP稱爲用戶數據包協議,TCP是面向字節流的,而UDP是報文段

(2)TCP是經過三次握手以及序列號、重傳機制面向鏈接,從而保證可靠傳輸,而UDP沒有這些手段,只是將數據報簡單投遞給網絡層就算完成任務了,因此它是不可靠的。

(3)正由於TCP複雜的功能手段例如擁塞控制和流量控制,UDP跟他比起來,UDP系統開銷大大減少

(4)從數據包的格式來講,TCP不加填充選項的時候首部是20字節,而UDP固定首部8字節。同時,TCP具備很是複雜的報文格式,而UDP很簡單,好比源端口目的端口校驗和以及數據總長度

(5)TCP適合路由信息報文以及普通數據包的這樣的相似流量,而UDP適合傳輸大的流量,好比VOIP流量,視頻流量。


五、tcp爲何是可靠傳輸的?(這題也喜歡啊,網絡就考TCP協議和HTTP協議,變態一點出一個SSL協議, 讓你懵逼,命中率60%)

答:(1)自己面向鏈接的三次握手機制(2)序列號保證它無重複無遺漏。重傳機制用來對客戶端進行反饋,表示我已經收到你的信息了(3)TCP校驗和字段,若是在傳輸過程有錯誤,那麼到達目的端,進行校驗碼比對,就知道有無錯誤了


六、四次揮手釋放鏈接時,等待2MSL的意義?(四次揮手不常考,但考到不容易回答的漂亮,命中率30%)

第一,爲了保證A發送的最後一個ACK報文段可以到達B。這個ACK報文段有可能丟失,於是使處在LAST-ACK狀態的B收不到對已發送的FIN和ACK報文段的確認。B會超時重傳這個FIN和ACK報文段,而A就能在2MSL時間內收到這個重傳的ACK+FIN報文段。接着A重傳一次確認。

第二,就是防止上面提到的已失效的鏈接請求報文段出如今本鏈接中,A在發送完最後一個ACK報文段後,再通過2MSL,就可使本鏈接持續的時間內所產生的全部報文段都從網絡中消失。


七、網站打開太慢的緣由分析?(中檔題,命中率60%)

答:(1)網絡問題:ping、dig命令測試客戶機和服務端網絡狀況以及DNS解析問題,若是DNS能解析可是很慢的話,使用CDN

(2)前端問題:瀏覽器落後,頁面設計不佳

(3)服務端問題:(a)檢查系統負載、CPU、內存、網絡以及磁盤狀況。(b)PHP響應慢,依據資源狀況對FastCGI配置合適的參數(c)MySQL響應慢,SQL代碼效率低下,讀取慢,查詢慢查詢日誌,show processlist 查看當前數據庫狀態,看哪些請求停留較多,磁盤IO率太大,my.cnf配置文件優化不夠好(d)被***,

webserver進程數受限,甚至內網流量太高等緣由


參考文檔:http://www.wtoutiao.com/p/1a4rCZ2.html


八、tcp三次握手的過程當中,accept發生在三次握手哪一個階段?(騰訊題目)

答:accept發生在三次握手以後,accept只是把內核中的已完成鏈接隊列取出。

## connect纔是發生在三次握手階段,另外一個隊列是「未完成鏈接隊列,而且這兩個隊列總和的最大值是backlog


九、經常使用的HTTP方法有哪些?

GET: 用於請求訪問已經被URI(統一資源標識符)識別的資源,能夠經過URL傳參給服務器

POST:用於傳輸信息給服務器,主要功能與GET方法相似,但通常推薦使用POST方式。

PUT: 傳輸文件,報文主體中包含文件內容,保存到對應URI位置。

HEAD: 得到報文首部,與GET方法相似,只是不返回報文主體,通常用於驗證URI是否有效。

DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。

OPTIONS:查詢相應URI支持的HTTP方法。

TRACE:遠程診斷服務器


十、GET方法與POST方法的區別

區別一:

get重點在從服務器上獲取資源,post重點在向服務器發送數據;

區別二:

get傳輸數據是經過URL請求,以field(字段)= value的形式,置於URL後,並用"?"鏈接,多個請求數據間用"&"鏈接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,這個過程用戶是可見的;

post傳輸數據經過Http的post機制,將字段與對應值封存在請求實體中發送給服務器,這個過程對用戶是不可見的;

區別三:

Get傳輸的數據量小,由於受URL長度限制,但效率較高;

Post能夠傳輸大量數據,因此上傳文件時只能用Post方式;

區別四:

get是不安全的,由於URL是可見的,可能會泄露私密信息,如密碼等;

post較get安全性較高;

區別五:

get方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼。

post支持標準字符集,能夠正確傳遞中文字符。


十一、HTTP請求報文與響應報文格式

請求報文包含三部分:

a、請求行:包含請求方法、URI、HTTP版本信息

b、請求首部字段

c、請求內容實體

響應報文包含三部分:

a、狀態行:包含HTTP版本、狀態碼、狀態碼的緣由短語

b、響應首部字段

c、響應內容實體


十二、常見的HTTP相應狀態碼

200:請求被正常處理

204:請求被受理但沒有資源能夠返回

206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中經過Content-Range指定範圍的資源。

301:永久性重定向

302:臨時重定向

303:與302狀態碼有類似功能,只是它但願客戶端在請求一個URI的時候,能經過GET方法重定向到另外一個URI上

304:發送附帶條件的請求時,條件不知足時返回,與重定向無關

307:臨時重定向,與302相似,只是強制要求使用POST方法

400:請求報文語法有誤,服務器沒法識別

401:請求須要認證

403:請求的對應資源禁止被訪問

404:服務器沒法找到對應資源

500:服務器內部錯誤

503:服務器正忙


十一、HTTP1.1版本新特性

a、支持長鏈接

b、高併發鏈接請求

c、斷點續傳


1三、URL和URI的對比(這是好題)

答:(1)URL是統一資源定位符,URI是統一資源標識符,URL是URI的一種

(2)URL用來標識某一個資源的具體位置,而URI標識某一類資源,如html、jpg、mp4

(3)組成部分不一樣,URL由協議名稱、主機地址端口號、路徑名構成,而URI由訪問資源的命名機制、主機名、路徑名構成。

(4)絕對路徑和相對路徑的區別


1四、Cookie&Session的格式、傳輸的內容(網易題目,真尼瑪難啊,我還打算筆試經過就去面試,這尼瑪找死啊)

答:(1)Set-Cookie:NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN-NAME;SECURE

其中NAME是該Cookie的名稱,VALUE是該Cookie的值;Expires變量是一個只寫變量,它肯定了Cookie有效終止日期;Path屬性定義了Web服務器上哪些路徑下的頁面可獲取服務器設置的Cookie;Domain=DOMAIN-NAME它肯定了哪些Internet域中的Web服務器可讀取瀏覽器所存取的Cookie,即只有來自這個域的頁面纔可使用Cookie中的信息,Secure:在Cookie中標記該變量,代表只有當瀏覽器和WebServer之間的通訊協議爲加密認證協議時,瀏覽器才向服務器提交相應的Cookie。當前這種協議只有一種,即爲HTTPS。

  Cookies以鍵值的方式記錄會話跟蹤的內容

(2)session包含一個session ID, SessionID是一個由24個字符組成的隨機字符串。

當用戶首次與Web服務器創建鏈接的時候,服務器會給用戶分發一個SessionID做爲標識。SessionID是一個由24個字符組成的隨機字符串。用戶每次提交頁面,瀏覽器都會把這個SessionID包含在HTTP頭中提交給Web服務器,這樣Web服務器就能區分當前請求頁面的是哪個客戶端。這個SessionID就是保存在客戶端的,屬於客戶端Session


1五、數據庫的組合索引和單索引,查詢的時候有什麼區別 ?

答:在多條件查詢時,聯合索引效率要高,查詢條件中出現聯合索引第一列,或者所有,則能利用聯合索引。而單一索引只要條件中出現索引列,不管在什麼位置,都能利用索引查詢。


1六、進程與線程區別,何時採用多進程,何時採用多線程?

答:(1)進程是CPU分配的基本單位,線程是CPU調度的基本單位

(2)進程獨佔資源,而一個進程中的多個線程共享資源,如地址空間和進程代碼段等

(3)相對於進程而言,線程是一個更切近執行體的概念,線程產生和撤銷快,線程通訊和切換也快。

(3)須要頻繁建立銷燬的優先用線程、多線程適合在對稱多處理機上運行,而多進程適合在跨主機上運行。


1七、進程間通訊方式,共享內存方式如何實現?

答:消息隊列、信號、信號量、管道通訊、套接字、共享內存

共享內存方式:這段共享內存由一個進程建立,但多個進程均可以訪問。

<1>建立/打開共享內存

<2>映射共享內存,即把指定的共享內存映射到進程的地址空間用於訪問

<3>撤銷共享內存映射

<4>刪除共享內存對象


1八、進程的調度方式,進程何時被調度,何時會退出?

答:調度方式:先來先服務、最高優先級、時間片輪轉法、最高響應比、多級反饋隊列。

何時調度:從阻塞到就緒,從就緒到運行,三個基本態的變化都會涉及到調度

何時退出:執行完畢或終止則退出。


1九、線程太多有什麼問題,任務太多怎麼處理?

答:線程太多,同步是個麻煩問題,任務太多,就不斷建立線程



20、shell:終端輸入字符串如何一個字符一個字符地讀到終端?(若是現場作,確定作不出來的)

答:     

 

      1 #!/bin/bash
      2 read -p "please input the string: " STRING
      3 num=1
      4 while (( $num<=${#STRING} )) ##當num小於字符串總長度的時候
      5 do
      6 echo ${STRING}|cut -c $num ##截取第幾個字符
      7 let num=num+1
      8 done

                                                                          


2一、彙集索引與非彙集索引的區別?

答:(1)彙集索引的物理順序和索引順序一致,非彙集索引的物理順序和索引順序不一致

(2)先建立彙集索引,而後才能建立非彙集索引

(3)一個表只能有一個彙集索引,可是能夠有多個非彙集索引

(4)在彙集索引中,數據存儲在B+樹的葉子節點上,而非彙集索引的葉子節點存放的是索引值而不是數據


2二、事務特性

(1)一致性:將事務中所作的操做捆綁成一個原子單元,即對於事務所進行的數據修改等操做,要麼所有執行,要麼所有不執行。

(2)原子性:事務在完成時,必須使全部的數據都保持一致狀態,並且在相關數據中,全部規則都必須應用於事務的修改,以保持全部數據的完整性。事務結束時,全部的內部數據結構都應該是正確的。

(3)隔離性:由併發事務所作的修改必須與任何其餘事務所作的修改相隔離。事務查看數據時數據所處的狀態,要麼是被另外一併發事務修改以前的狀態,要麼是被另外一併發事務修改以後的狀態,即事務不會查看由另外一個併發事務正在修改的數據。這種隔離方式也叫可串行性。

(4)持久性:事務完成以後,它對系統的影響是永久的,即便出現系統故障也是如此。


2三、匹配文本中的key,並打印出該行及下面的5行?

grep -A5 key filename


2四、源碼編譯安裝apache,要求爲:安裝目錄爲/usr/local/apache,需有壓縮模塊,rewrite,worker模式;並說明在apache的workerMPM中,爲何ServerLimit要放到配置段最前面?

答:./configure --prefix=/usr/local/apache --enable-so --with-rewrite --with-mpm-worker

ServerLimit指定了Maxclients最大配置數目的上限值


2五、A文件的內容是1.1.1.1,B文件的內容是2.2.2.2 要求shell編程實現C文件的內容是1.1.2.2 ?(這是個好題啊)

答:sed 'H;N;s#\(1.1.\).*\n\(2.2\).*#\1\2#' a.txt b.txt   ##徹底看不懂


2六、mysql中,給本地用戶webedit賦予webedit數據庫中test表的查詢權限,禁止其增長和刪除的權限

grant select on wededit.test to 'webedit'@'localhost';

revoke update,delete on webedit.text from 'webedit'@'localhost';


2七、目前,有一個文件,內容以下:

     172.16.100.1

     172.16.100.2

     172.16.100.3

     172.16.100.4

   請使用while和ssh命令,登陸文件內的ip並執行hostname命令

   

#!/bin/bash

while read line

do

ssh root@$line hostname 

done <test.txt   


2八、請使用awk命令將以下兩份文件中名字相同的兩行合併起來(臥槽,這題是真難啊,若是是當場要求當場作,很難的)

   A文件:

      韓海林 21歲

      海林韓 23歲

      韓林海 22歲

      林海韓 24歲

   B文件:

      韓林海 男

      海林韓 男

      韓海林 男

      林海韓 男

輸出效果:

    韓海林 21歲 男

awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 2.txt  1.txt > 3.txt

##NR是全部讀取的文件行數,而FNR是正在讀取文件的行數,NR最大值爲8,FNR則從新從1-4計數

參考文檔:http://www.linuxdiyf.com/linux/13007.html


2九、Linux查看某個進程的線程的3種方法

答:(1)ps -T -p 3306【進程pid】(2)top -H (3)htop


30、請寫出五種系統性能分析工具,並簡述其做用和特色

答:sysbench(磁盤IO性能)、Awstats(web服務日誌分析)、ab和httperf(測量web併發服務)、mysqlslap(mysql壓力測試)

 

3一、用什麼命令查詢指定IP地址的服務器端口?

nmap -p80,21,23 192.168.1.1

參考文檔:http://www.nxadmin.com/tools/600.html


3二、用什麼命令定義某個程序執行的優先級別?

nice renice


3三、如何讓history命令顯示具體時間?

vi ~/.bash_profile 

export HISTTIMEFORMAT='%F %T'

source ~/.bash_profile


3四、查看Linux系統當前指定用戶的郵件隊列命令是

mailq 或者mail -u root


3五、查看文件系統的類型

df -Th /dev/sda1


3六、Ext4文件系統如何恢復rm命令刪除文件 

Linux下刪除文件並非真實的刪除磁盤分區中的文件,而是將文件的inode節點中的扇區指針清除,同時釋放這些數據對應的數據塊,當釋放的數據塊被系統從新分配時,那些被刪除的數據就會被覆蓋,因此誤刪除數據後,應立刻卸載文件所在的分區,umount /dev/sda1

yum install e2fsprogs-devel  libcom_err-devel -y  、

tar -jxf extundelete-0.2.0.tar.bz2  

cd extundelete-0.2.0 2 && ./configure && make&& make install 

文件恢復:extundelete /dev/sda1 --restore-file 文件名

目錄恢復:extundelete /dev/sda1 --restore-directory 目錄名


3七、簡述linux下編譯內核的意義與步驟?

答:編譯內核的意義在於讓硬件設備更穩定的發揮其應有的效能。

(1)下載內核源碼包,解壓並進入該目錄

(2)make mrproper --清理內核源代碼樹(清理垃圾信息) 

(3)make menuconfig   --配置內核以及內核模塊   

(4)make dep --生成依賴關係

(5)make bzImage --生成新內核

(6)make moudulds --編譯新模塊

(7)make modules_install --安裝內核模塊

(8)make install --安裝內核


3八、你說下你技術的強項和不足?(50%要問)

答:強項:iptables、網絡基礎   不足:selinux和shell腳本


3九、若是給你300臺服務器,你該怎麼去管理?(對於一個應屆生來講,很難回答,但要是被問到了呢)

答:若是是linux服務器,那安裝的話使用kickstart,監控nagios少不了的,甚至zabbix,自動化部署用ansible或者puppet

若是是windows服務器,作域控和組策略


4九、簡述調整哪些內核參數?

答:主要分爲兩類:一類是core,一類是tcp,vi /etc/sysctl.conf,包括緩衝大小,窗口大小,tcp隊列大小,共享內存段


50、查看某個進程打開的文件數  

答:lsof -p 3306 |wc -l 

相關文章
相關標籤/搜索