由於工作的關係,收集了很多的shell面試題,有些比較有意思,比如我在
shell圖形化監控網路流量中所應用的例項。有些純粹是為折磨人用的題目。有的看完會心一笑,有的看了之後會以為是幾年前開發的面試題。不知道是會的人多了,還是有意的為難,想起一句話,廟小妖風大,水淺那個啥多。
多說一句,解決的方法有很多種,也許這裡給出的答案並不是最優的,但應該是比較容易解釋,容易理解的。具體是什麼公司的面試題就不說了,畢竟是人家的隱私。
這篇內容中所涉及的知識點比較多,設定的陷阱更是不少,可以感覺到出題人的挖空心思,可以考驗出答題人對於系統,對於實際環境的管理能力及功底。
1.如下是對api介面日誌的擷取,存放在check.log檔案中
22:57:36|check|por1|117.136.15.67|4|username|fail|5|29|
22:57:36|check|por1|183.1.94.215|4|username|succ|1644841971|14|
22:57:36|check|pro2|0.0.0.0| |username|succ|162885433|6|
22:57:36|check|por2|0.0.0.0|9|username|fail|-4038|0|
22:57:36|check|por3|120.11.82.19|2|username|fail|5|49|
22:57:36|check|por4|172.16.86.82|0|username|succ|1548062613|1|
22:57:36|check|por2|123.125.156.135|9| |succ|1632786393|1|
22:57:36|check|por5|124.231.21.100|5|username|succ|224803739|3|
22:57:36|check|por4|172.16.86.82|0|username|succ|1505887155|1|
22:57:36|check|por2|0.0.0.0|9|username|succ|1343846051|1|
22:57:36|check|por6|113.193.202.138|8|username|succ|1729273615|1|
22:57:36|check|por6|116.75.149.20|8|username|succ|1729981552|1|
22:57:36|check|por5|116.5.164.94|5|username|succ|214405328|1|
22:57:36|check|por2|0.0.0.0|9|username|succ|1433162137|1|
22:57:36|check|por3|218.69.6.30|5|username|succ|28725136|42|
22:57:36|check|por2|0.0.0.0|8| |fail|5|4|
22:57:36|check|por5|123.115.102.222|5|243905232|succ|243905232|1|
22:57:36|check|por4|172.16.86.82|0|1011711900|succ|1011711900|39|
日誌各欄位代表的意義如下:
時間|介面名稱|使用該介面的產品名稱|呼叫介面的ip位址|使用者型別|使用者賬號名稱|介面返回結果(succ or fail)|當介面返回結果為「succ」時,該字段為用
戶唯一編號;當介面返回結果為「fail」時,該字段為介面返回的錯誤代號|介面執行時間(毫秒級別)
問題:請使用shell命令的組合得到每個產品呼叫該介面成功時介面的平均執行速度,並按照執行速度由低到高排序(注:使用者型別和使用者賬號名稱為空的訪問不
計算在內),以如下格式輸出:
pro1 :0.0714286
pro2 :0.3333333
pro3 :0.0238095
pro4 :0.0731707
pro5 :0.6
pro6 :1
一句話思路:有計算、有排序,awk是唯一選擇。統計總數的同時,還要統計出現次數,最後進行計算。
awk -f "|" '$(nf-3)~/succ/end' check.log
知識點:awk陣列,awk管道,為避免不等長使用nf變數
2.用一行命令實現:查詢當前目錄下(含子目錄),檔案內容中含有sina且檔名以".config"結尾的檔案
一句話思路:批量按規則查詢檔案內容grep
grep -lr "sina" ./ | grep -p "(.*)(\.config$)"
知識點:grep -r 遞迴查詢,-p支援perl正規表示式
3.用shell查詢以「.」結尾的檔案,並加上字尾「.ts」
一句話思路:在之前的曾經有過批量修改副檔名的例項,但這次有所不同,使用find命令就可以搞定
find ./ -name "*." -exec mv {} {}ts \;
知識點:find命令
4.假定某個web伺服器訪問log其中一行如下:
該log檔案超過10萬行,如果列出最後的10萬行中請求最多前十位ip,顯示如下的結果:
119 211.101.169.200
103 211.101.169.206
50 61.149.38.249
11 202.106.138.194
請用一行命令顯示出上面的結果
一句話思路:之前有過類似的,這裡不再贅述
awk 'end' log
5.linux下ifconfig命令顯示結果如下:
eth0 link encap:ethernet hwaddr 00:0c:29:aa:e6:44
inet addr:192.168.213.128 bcast:192.168.213.255 mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feaa:e644/64 scope:link
up broadcast running multicast mtu:1500 metric:1
rx packets:39962 errors:0 dropped:0 overruns:0 frame:0
tx packets:27038 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
rx bytes:35108954 (33.4 mib) tx bytes:6573610 (6.2 mib)
base address:0x2000 memory:c9020000-c9040000
lo link encap:local loopback
inet addr:127.0.0.1 mask:255.0.0.0
inet6 addr: ::1/128 scope:host
up loopback running mtu:16436 metric:1
rx packets:1833 errors:0 dropped:0 overruns:0 frame:0
tx packets:1833 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
rx bytes:4840659 (4.6 mib) tx bytes:4840659 (4.6 mib)
執行如下命令
/sbin/ifconfig eth0|grep 'inet '|sed 's/^.*addr://g'|sed 's/ bcast.*$//g'
請寫出命令的輸出結果
ip位址 猶豫了一下這個要不要寫,在命令列裡執行一下就行了。
6.多執行緒/多程序 程式同時訪問相同的資源(例如:同時向乙個檔案裡寫資料)需要注意些什麼?
至少注意檔案鎖,讀鎖與寫鎖
7.寫指令碼實現,可以用shell,perl等。把檔案b中有的,但是檔案a中沒有的所有行,儲存為檔案c,並統計c的行數
diff b a | grep "<" | sed 's/< //' > c
8.指令碼實現把/tmp/目錄下所有建立超過7天的檔案刪除
find /tmp -mtime +7 -exec rm -rf {} \;
9.把1 2 3 4 5 6按如下格式輸出 1
2 3
4 5
6如何實現
echo 1 2 3 4 5 6 | sed "s# #\n#g"
10.設計乙個shell程式,在2023年12月23日凌晨3點備份並壓縮前一天/svn目錄的所有內容,存放在/root/bak目錄裡,且檔名為如下形式svn.2008.05.06.tar.gz,試寫指令碼。
at 201212230300
at> find /svn -mtime +1 -and -mtime -2 -exec cp -r {} /root/bak \;
at> tar -czf svn.2008.05.06.tar.gz /root/bak
感謝何運濤同學,已經畢業的同學,薪水也不錯。現在我們是同行了,這些題目是他幫忙整理的,原始版本都是**,都是他乙個乙個字打上去的,尤其是第一題!
linux shell面試題 之三
由於工作的關係,收集了很多的shell面試題,有些比較有意思,比如我在 shell圖形化監控網路流量中所應用的例項。有些純粹是為折磨人用的題目。有的看完會心一笑,有的看了之後會以為是幾年前開發的面試題。不知道是會的人多了,還是有意的為難,想起一句話,廟小妖風大,水淺那個啥多。多說一句,解決的方法有很...
面試題總結 Linux Shell相關
序號命令 命令解釋 1top 檢視記憶體 2df h 檢視磁碟儲存情況 3iotop 檢視磁碟io讀寫 4iotop o 直接檢視比較高的磁碟讀寫程式 5netstat tunlp grep 埠號 檢視埠占用情況 6uptime 檢視報告系統執行時長及平均負載 7ps aux 檢視程序 序號工具注釋...
C C 面試題之三(每次10題)
說說框架與設計模式的區別 c 和c定義結構的分別是什麼?建構函式可否是虛函式,為什麼?析構函式呢,可否是純虛的呢?拷貝建構函式相關問題,說說深拷貝,淺拷貝,臨時物件分別是什麼意思?結合1個你認為比較能體現oop思想的專案,用uml來描述。最好這個專案繼承,多型,虛函式都有體現 這個問題大概會佔面試時...