1、請寫出五種系統性能分析工具,并簡述其作用和特點
[我的答案] top、free、vmstat、iostat、perf等等等等,如果你想裝逼,可以回答fio,blktrace,oprofile。
2、請寫出web伺服器的調優要點
[我的答案]以nginx為例,個人總結有如下幾個要點:
1)盡可能的少用http,因為http是有開銷的;
2)盡可能的使用CDN;
3)添加Expire/Cache-Control頭,這個頭是緩存用的,可以緩存圖檔和flash那樣不輕易更改的檔案,減少通路時間;
4)啟動gzip壓縮,這個沒啥好說的了;
5)盡可能少的重定向,重定向是需要時間的,增加一次重定向就會多一次web需求;
6)如果可以,把ajax也做緩存;
7)減少dns查詢,很多網頁會有外站的廣告,這些廣告也是會啟動dns查詢的,是以如果不缺錢,減少這種廣告;
8)調好伺服器裡的TCP協定棧,這個無論是web伺服器還是應用伺服器都是必須的;
3、請寫出你知道或使用過的nginx擴充子產品(注意标注知道和使用)
[我的答案] 随便說幾個我使用過的,這玩意到時候結合工作過的情況說說吧:
Nginx負載均衡子產品:nginx-upstream-fair
非阻塞通路redis子產品:redis2-nginx-module
分布式圖檔實時動态壓縮:ngx-fastdfs
4、請簡述你了解的自動化配置管理工具特點和運作原理
[我的答案]我用的最多的就是ansible和saltstack,這倆都是python的,對于我這個半路出家的更親切。
ansible基于SSH協定傳輸資料,不用裝agent,配置比較簡單,對windows支援慘不忍睹;
saltstack使用消息隊列zeroMQ傳輸資料,如果1000台以上的話它速度比ansible還要快,要安裝agent,對windows支援同樣慘不忍睹;
5、目前,有一個檔案,内容如下:
172.16.100.1
172.16.100.2
172.16.100.3
172.16.100.4
請使用while和ssh指令,登入檔案内的ip并執行hostname指令
[我的答案]這個還真沒有什麼思路,不過我覺得是要搭配“<”輸入重定向的吧。
PS,為啥不用ansible...哪怕pssh也可以啊!
6、請使用awk指令将如下兩份檔案中名字相同的兩行合并起來
A檔案:
大廣州 21歲
廣州大 23歲
州廣大 22歲
廣州大 24歲
B檔案:
廣州大 男
大廣州 男
州廣大 男
輸出效果:
`大廣州 21歲 男`
[我的答案]#awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' B檔案名 A檔案名
PS,做完這道題,我已經不認識“廣”“州”這兩個字了...
7、請使用繪圖的方式簡述TCP/IP三次握手和四次斷開的互動過程
多說一句,網易招聘java的時候也問這個問題,不過他們問的是“為什麼要三次握手?”
8、請根據你的了解,簡述高可用服務體系的相關元件,并列舉該元件的具體實作服務名字
[我的答案] 我覺得這個題是要問一些架構上的東西,以我工作環境為例:
統一配置:zookeeper、Consul、Etcd+Confd(這倆比較常見于動态管理nginx)
前端展示:nginx
消息隊列:activemq、kafka
讀寫分離中間件:atlas
日志分析:elk
簡述我就不簡了,自己百度一下。
9、請根據你的了解,簡述負載均衡的實作方式
[我的答案]負載均衡主要分為兩種,硬體(F5)和軟體(NGINX、Haproxy、LVS),硬體效果比較牛逼,它是把4-7層的負載均衡功能做到一個硬體裡面,但是價格昂貴最近用的越來越少了。
軟體的負載均衡又分兩種,四層和七層:四層是在IP/TCP協定棧上把網絡包的IP位址和端口進行修改,達到轉發的目的;七層就是在應用層裡把HTTP請求、URL等具體的應用資料發送到具體的伺服器上。四層的效率比七層的高,四層一般安排在架構的前端,七層一般就是在具體伺服器的前端。
軟體負載均衡比較常見的幾個配置設定方式如下:
輪詢:通路請求依序分發給後端伺服器;
權重輪詢:通路請求依序分發後端伺服器,伺服器權重越高被分發的幾率也越大;
最小連接配接數: 将通路請求分發給目前連接配接數最小的一台後端伺服器,伺服器權重越高被分發的幾率也越大;
10、請根據你的了解,簡述資料遷移工具和資料存儲服務有哪些以及相關特點
[我的答案]由于我公司主要都放在了阿裡雲,資料庫用過的就這麼幾個:mysql、redis和elasticsearch。對于Storm和Hadoop這倆我還是初學者。
mysql:關系型資料庫;
elasticsearch:全文檢索架構,這玩意逐漸向一個資料庫靠攏了;
redis:鍵值儲存資料庫;
mysql的資料遷移最常見的就是mysqldump,但是要注意使用不當會鎖表;
redis的資料遷移最穩妥的方法就是主從同步:在slave端啟動redis,然後執行#slaveof master機器IP位址 6379,然後使用#info的時候檢視#master_link_status如果是up那就是OK了,再執行#slaveof no one,提示OK就是OK了;
Elasticsearch的資料遷移工具就是Elasticsearch-Exporter,不過我對它僅僅隻是了解,用的并不多;
最後的最後,如果您覺得本文對您升職加薪有幫助,那麼請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多的博文!
本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/2058818