首先,獵頭或者公司的人力資源會把公司的介紹和工作要求發到妳的郵箱(或者QQ、微信)。以下是獵頭發給我的職位描述。出於職業道德考慮,我不貼公司介紹和面試通知信息,但是我會貼職位要求:
工作描述:
1,負責應用服務器的安裝、配置、優化和維護;
2.負責應用系統日誌信息的備份、管理、維護和分析;
3.負責應用系統的日常監控、維護、故障處理、性能分析和優化;
4.負責應用部署系統、環境配置系統和監控系統的開發、部署、升級和維護,搭建高性能的運維平臺。
工作要求:
1,熟悉Linux操作系統基礎知識,熟練使用Linux常用操作命令;
2.熟練配置Nginx、HAproxy等應用相關軟件的部署、配置和優化維護;
3、熟悉網絡的基礎知識,熟悉TCP/IP的工作原理,能配備交換機或路由器,並能熟練分析網絡情況。
4.熟悉shell/perl/python中的壹種或多種開發運維程序;
5、熟悉Nagios、Ganglia等監控軟件。
看上面的要求,妳覺得要求不高嗎?仔細看會發現這家公司要求挺多的,不僅是網絡知識(好像每個熟悉TCP/IP的公司都會寫這樣的要求),還有技能開發。我相信很多做運維的兄弟都是網絡中的頭疼事,不太會配置和管理交換機和路由器。
然後,作者詳細了解他們公司,了解崗位要求,突然復習可能會問到的知識點和技術點。面試當天,早起刷牙,特別是有口臭的兄弟。最好在到達面試公司之前準備壹些口香糖,嚼壹塊口香糖,以免因為口氣熏到面試官,讓妳在面試官心中失分。記得早點吃,如果是下午面試,也要吃午飯。如果妳早點吃,妳會有精力。還要註意,帶好簡歷和筆,雖然他們那裏會有妳的簡歷,所以準備好簡歷以防萬壹。
最後,重點是和面試官溝通。有筆試的公司會讓妳做壹些面試題。如果沒有筆試,可以直接找面試官談。以下是我和面試官交流後想起的壹些問題。我將與妳分享它們。作者已經背了7道題,但好像還有兩道題記不住。如果妳有更合適的答案,壹定要貼出來討論,共同進步:
1,自我介紹壹下?幾乎每個公司都會讓妳先介紹自己,好像這是必修課壹樣。
作者回復:此處省略作者自我介紹。我建議自我介紹的時間不要太長,3-4分鐘為宜。說多了面試官會覺得妳太啰嗦。說的太少沒什麽好處,因為會讓人覺得妳的體驗太簡單,沒空間。壹般情況下,妳自我介紹的時候,面試官這個時候正在看妳的簡歷。他需要壹邊聽妳介紹自己,壹邊看妳的簡歷。三言兩語介紹自己,他肯定恢復不了,形象會降低。同時,妳在思維和邏輯上要清晰。最好根據簡歷上寫的經歷來介紹,這樣可以把面試官的想法帶給妳,讓他跟著妳走。別扯壹個字,扯壹個字。少跟我說妳的性格和愛好(最好什麽都不要說)。妳可以簡單的列出妳工作過的幾家公司(最多列出三家/包括妳現在的公司,註意順序),妳在那些公司負責什麽工作,妳用過什麽技術。重點介紹壹下妳現在的公司負責哪些工作,可以稍微詳細介紹壹下,不至於讓面試官感到困惑。
2.如何實現灰度發布?
作者回答:其實這個問題我沒答好,就不寫誤導大家了。每個人都有享受的好方法。不過事後在知乎上看到壹個網友的建議,不錯。可以參考壹下:/question/20584476
3.Mongodb熟悉嗎?通常部署多少單位?
作者回答:有,已經部署了,但是沒有深入研究。壹般mongodb部署主從或者mongodb分段集群;建議部署三到五臺服務器。MongoDB切片的基本思想是將集合切割成小塊。這些塊被分散成幾個切片,每個切片只負責總數據的壹部分。對於客戶端來說,不需要知道數據是拆分的,也不需要知道服務器的哪個片段對應哪個數據。在數據分片之前,需要運行壹個名為mongos的路由過程。這個路由器知道所有數據的存儲位置,知道數據和芯片的對應關系。對於客戶端,它只知道連接了壹個普通的mongod。在請求數據的過程中,通過路由器上數據與芯片的對應關系,路由到目標數據所在的芯片。如果請求有響應,路由器會收集響應並將其發送回客戶端。
4.如何發布和回滾,如何用jenkins實現?
作者回答:Release: jenkins配置代碼路徑(SVN或GIT),然後拉代碼並標記。根據需要編譯,編譯後推送到發布服務器(在jenkins中可以調整腳本),然後從分發服務器向下分發到業務服務器。
回滾:根據版本號找到對應的版本推送到發布服務器。
5.Tomcat工作模式?
作者回答:Tomcat是壹個JSP/Servlet容器。作為Servlet容器,它有三種工作模式:獨立Servlet容器、進程內Servlet容器和進程外Servlet容器。
根據Tomcat的工作模式,進入Tomcat的請求可以分為以下兩類:
Tomcat作為應用服務器:請求來自前端web服務器,可能是Apache、IIS、Nginx等。
Tomcat是壹個獨立的服務器:請求來自web瀏覽器;
6.監控實現了什麽?
作者回復:現在公司的業務都在阿裏雲上運行,我們首選的監控是阿裏雲監控。阿裏雲監控自帶ECS、RDS等服務的監控模板,可以結合自定義報警規則觸發監控項目。最後壹家公司的業務托管在IDC,它使用的是zabbix監控方案。zabbix有豐富的圖形界面和許多監控模板,尤其是自動發現和監控多個分區和網卡。但是需要在每個客戶端(被監控端)安裝zabbix代理。
7.您如何備份數據,包括數據庫備份?
作者回答:在生產環境中,無論是應用數據還是數據庫數據,在部署時都會有壹個主從架構或者集群,這本身就是數據的熱備份;其實可以考慮冷備份,使用專用服務器作為備份服務器。比如可以使用rsync+inotify實現數據的冷備份。如果是分布式包備份,壹般情況下是有發布服務器的,分布式包每次分發都會保存。
摘要
總結壹下面試中的壹些註意點,作者可能也不對。為了運維工作的兄弟們能拿高薪,我們必須壹起作證,壹起進步,壹起討論:
首先,妳要熟悉妳的簡歷,妳必須能說出壹兩件關於簡歷上寫作技巧的事情,因為面試官會挑妳簡歷上寫的問題。比如妳的簡歷上說妳熟悉mysql數據庫的部署、安裝和原理。妳立馬寫了這麽壹個技能。如果不熟悉,也要了解壹下mysql的原理,給出壹個大概的思路。如果面試官問妳這篇文章,妳答不上來,妳在他心目中就失分了,基本上這次面試希望不大。
第二,如果面試官問妳壹個妳聽不懂的問題,就說不熟悉,沒有詳細研究過。不要裝懂,扯壹堆沒用的話題來掩飾,只會讓面試官反感妳。
第三,準備充分,盡量多記原理知識。壹般面試問的比較原則。很少有人問具體配置文件是怎麽配置的。面試前,還要了解“職位描述”和“職位要求”。雖然有時候大部分人不會問工作要求的問題,但是要了解,要熟悉。
第四,面試結束後壹定要總結,盡量記住面試官問的每壹個問題,回去記錄。如果妳問了壹個妳不會的問題,妳應該在事後馬上去百度或者找朋友了解壹下,了解壹下,這樣妳就能記住這個工作,下次面試的時候再問同樣的問題。
面試結束後,面試官找我談工資,問我多少錢能滿足我的要求,我不能透露。可以私聊,哈哈。後面作者會陸續更新之前的面試經歷和問題,有需要的朋友可以轉載或者收藏起來壹起討論。
基於大家的熱烈氣氛,筆者又花了壹個下午的時間回憶整理了2065438+2007年2月24日在壹家傳媒公司的采訪經歷,地點在東三環附近(過去沒有地鐵,到四會要換乘公交車)。好在作者有做筆記的習慣,把之前面試的所有問題都記錄下來。這段采訪記憶猶新,因為這家公司已經發給筆者了。以下是對該公司工作要求的描述:
工作職責:
1,負責公司產品的版本控制、建設和發布管理;
2.負責公司統壹配置庫的管理,準確及時地管理和分配權限,定期完成配置備份;
3.負責公司內部開發/測試服務器的運行和管理;
4.負責Linux操作系統的安裝、配置、監控和維護、問題處理、軟件升級、數據備份、應急響應、故障排除等。,確保在線環境的穩定運行;
5.負責支持平臺24×7的穩定運行,並進行前瞻性的容量規劃;
6.負責公司機房服務器的日常維護以及網絡系統的安裝、部署和維護。
工作要求:
1,計算機相關專業本科以上學歷,2年以上運維或配置管理工作經驗;
2.熟悉至少壹個監控系統,如Nagios/Zabbix/;
3.熟悉至少壹個集群管理工具,如ansi ble/salt stack;
4.有使用集成發布工具進行發布和構建的經驗者優先。比如:竹子或者詹金斯;;
5、熟悉Unix/Linux操作系統,熟悉Weblogic/tomcat等中間件,能夠編寫shell腳本,熟悉軟件開發流程和流程產品,有壹定的網絡基礎;
6.熟悉日誌收集和處理系統,如rsyslog、flume
7.具有較強的安全意識,較強的溝通、協調和學習能力,良好的團隊合作精神,工作積極主動。
過去之後,前臺的姑娘帶我去了他們公司的地下室。我掃了壹眼周圍,旁邊好像有機房,因為我聽到了服務器的聲音。等了幾分鐘,面試官下來了。目測面試官比較瘦,看起來和我差不多大(應該不到120)。他說他是負責運維部門的,然後讓我先自我介紹壹下。這是例行公事,不可避免地要自我介紹,所以兄弟們必須練習自我介紹。然後開始問我問題,和面試官聊天還可以,問我的問題超過10個,我記得以下10個問題:
1的原理與LVS負載和Nginx負載有什麽區別?
作者回答:我覺得采訪官司沒有對這個問題打招呼。通常,我會問,“LVS的負載均衡技術和調度算法是什麽?”。我的回答是根據我說的問題。反正他頻頻點頭。當然,作者的回答可能沒有我下面整理的那麽詳細,我已經說清楚了。
LVS是Liunx虛擬服務器的縮寫。利用LVS和linux操作系統提供的負載均衡技術,可以實現高性能、高可用性的服務器集群。壹般來說,LVS位於整個集群系統的前端,由壹個或多個負載調度器組成,分布在應用服務器上。它工作在第4層(即TCP/IP中的傳輸層),LVS是基於IP負載均衡技術的IPVS模塊實現的,IPVS有三種負載均衡機制,分別是NAT、TUN和DR,具體如下:
VS/NAT:即(通過網絡地址轉換的虛擬服務器)
即網絡地址轉換技術實現了虛擬服務器。當用戶請求到達調度器時,調度器將請求報文的目標地址(即虛擬IP地址)重寫為選擇的真實服務器地址,同時報文的目標端口也改為選擇的真實服務器的對應端口,最終將報文請求發送到選擇的真實服務器。從服務器獲取數據後,真實服務器在向用戶返回數據時,需要再次通過負載調度器將報文的源地址和端口更改為虛擬IP地址和對應的端口,然後將數據發送給用戶,完成整個負載調度過程。
可以看到,在NAT模式下,用戶請求和響應消息都必須由Director服務器地址重寫。當用戶請求越來越多時,調度器的處理能力就會被稱為瓶頸。
VS/TUN:即(通過IP隧道的虛擬服務器)
即IP隧道技術實現虛擬服務器。其連接調度和管理與VS/NAT相同,但其消息轉發方式不同。在VS/TUN中,調度器使用IP隧道技術將用戶的請求轉發到壹個真實的服務器,該服務器將直接響應用戶的請求,而不經過前端調度器。另外,對真實服務器的地理位置沒有要求,可以和Director服務器位於同壹個網段,也可以是獨立的網絡。因此,在TUN模式下,調度器將只處理用戶的消息請求,集群系統的吞吐量大大提高。
VS/DR:即(通過直接路由的虛擬服務器)
也就是說,虛擬服務器是通過直接路由技術實現的。它的連接調度和管理與VS/NAT和VS/TUN中的相同,但它的消息轉發方法不同。VS/DR通過重寫請求消息的MAC地址將請求發送給Real Server,Real Server直接將響應返回給客戶,從而避免了VS/TUN中的IP隧道開銷。這種方法在三種負載調度機制中性能最高,但它必須要求Director Server和Real Server都有壹個網卡連接到同壹個物理網段。
回答負載調度算法,IPVS在八種負載調度算法中實現,常用的調度算法有四種(循環調度、加權循環調度、最少鏈路調度、加權最少鏈路調度)。壹般來說,說這四種算法就夠了,不需要詳細解釋這四種算法。只要妳把以上三種負載均衡技術解釋清楚,面試官對這個問題就滿意了。接下來就簡單說說和nginx的區別:
LVS的優勢:
抗負載能力強,工作在第四層只做分發,不產生流量,這也決定了它在負載均衡軟件中性能最強;沒有流量,同時保證均衡器IO的性能不受大流量的影響;
工作穩定,有自己完整的熱備方案,如LVS+Keepalived、LVS+heart beat;;
應用範圍比較廣,所有應用都可以負載均衡;
配置比較低,這是缺點也是優點。因為沒有太多需要配置,所以不需要過多的接觸,大大降低了人為失誤的概率。
LVS的缺點:
軟件本身不支持常規處理,做不到動靜分離,這就凸顯了Nginx/HAProxy+Keepalived的優勢。
如果網站應用龐大,LVS/DR+Keepalived會更復雜,尤其是後面有Windows Server應用的機器,實現、配置、維護過程會更麻煩。相對來說,Nginx/HAProxy+Keepalived要簡單壹點。
Nginx的優勢:
在OSI第7層工作,我們可以為http應用程序制定壹些分流策略。例如,對於域名和目錄結構。它的正則化比HAProxy更強大、更靈活;
Nginx對網絡的依賴性很小。理論上可以通過ping來執行加載功能,這也是它的優勢。
Nginx安裝配置簡單,測試方便。
能承受高負載壓力和穩定性,壹般能支持數萬以上的並發;
Nginx可以通過端口檢測服務器的內部故障,比如根據服務器處理網頁返回的狀態碼,超時等。,並重新提交將錯誤返回到另壹個節點的請求;
Nginx不僅是壹個優秀的負載均衡器/反向代理軟件,還是壹個強大的Web應用服務器。LNMP也是現在很流行的web環境,和LAMP環境很有競爭力。Nginx在處理靜態頁面方面比apache有優勢,尤其是在抵抗高並發方面。
Nginx作為Web反向加速緩存越來越成熟,比傳統的Squid服務器更快。有需要的朋友可以考慮用它做反向代理加速器。
Nginx的缺點:
Nginx不支持url檢測。
Nginx只能支持http和Email,這是它的軟肋。
Nginx的會話維護,Cookie的引導能力相對欠缺。
2.redis集群的原理,如何實現redis碎片化,貴公司的redis在哪些環境下使用?
作者回答道:reids集群原理:
其實它的原理不是三言兩語能解釋清楚的。在Redis 3.0版之前,不支持集群。官方推薦的最大節點數是1000,構建壹個集群至少需要3(主)+3(從)。它是壹種去中心化的分布式存儲架構,數據可以在多個節點之間共享,從而解決了redis 3.0的高可用性和可擴展性問題。集群可以自動將數據拆分到多個節點,當集群中的壹個節點出現故障時,redis可以繼續處理客戶端的請求。
Redis碎片:
分區是將數據分成多個Redis實例的過程,因此每個實例只包含所有鍵的子集。當數據量較大時,數據存儲在多個數據庫中,減少了單個節點的連接壓力,實現了海量數據存儲。分段部署方法壹般分為以下三種:
(1)在客戶端切片;該方法在客戶端確定要連接的redis實例,然後直接訪問對應的redis實例;
(2)切片試劑;這樣,客戶端不直接訪問redis實例,也不知道要訪問哪個redis實例,而是由代理轉發請求和結果;工作過程如下:客戶端先向代理發送請求,代理通過切片算法確定訪問哪個redis實例,然後將請求發送給對應的redis實例,redis實例將結果返回給代理,代理最終將結果返回給客戶端。
(3)在redis服務器上切片;這種方法稱為“查詢路由”。這樣,客戶機隨機選擇壹個redis實例來發送請求。如果請求的內容不在當前redis實例中,它將負責將請求轉發到正確的redis實例。在壹些實現中,redis實例不會轉發請求,而是將正確的redis的信息發送給客戶端,客戶端將請求發送給正確的redis實例。
redis在什麽環境中使用:
Redis在java和php環境下使用,主要緩存登錄用戶信息數據、設備詳情數據、會員簽到數據等。
3.妳如何統計和分類當前訪問的IP?
作者回復:統計用戶的訪問IP,使用awk結合uniq和sort過濾訪問. log日誌可以很好的統計和排序。壹般這樣回答就夠了。當然,妳也可以說出其他的統計方式,這些都是妳的加分項。
4.您將使用哪些虛擬化技術?
作者回答:vmware vsphere和kvm,我用vmware vsphere虛擬化的比較多,有幾本書在生產環境用vmware vsphere和kvm,我在測試環境用。Vmware是壹種原生架構虛擬化技術,即可以直接在硬件上運行。Kvm屬於常駐架構的虛擬化技術,運行在系統之上。vmware vcenter
管理方便,圖形化管理界面強大穩定,壹般適合企業使用。KVM的管理界面有點差,需要管理人員花壹些時間學習它的維護和管理技術。
5.如果有人反應過來,檢索後端接口特別慢,妳會怎麽檢查?
作者回答:其實這個問題沒有具體的答案。只是看妳的回答和面試官的契合度了。妳能不能說到他想要的點,主要看妳排憂解難的思路。我是這樣說的:問清楚回應的人哪個服務應用或者接口訪問頁面慢,讓他把頁面或者相關網址發給妳。首先,最直觀的分析就是用瀏覽器按下F12,看哪塊內容太慢(DNS解析,網絡加載,大圖,或者壹個文件的內容等等。),而且如果有,對癥下藥解決(如果圖片慢,優化圖片,網絡慢)其次,看後端服務日誌。事實上,查看大多數問題的相關日誌才是最有效的分析。最好使用tail -f F跟蹤日誌。當然,您必須單擊Test來訪問接口日誌,然後才能將它們輸出。最後排除sql,找到sql並在mysql中執行,看是否需要很長時間。如果需要很長時間,就要優化SQL問題。expain SQL並查看索引,然後相應地優化它。如果數據量太大,可以分表,也可以分數據庫。如果SQL沒有問題,可能是寫的邏輯代碼有問題。逐行檢查代碼,找到耗時的地方來轉換和優化邏輯。
6.mysql數據庫采用主從讀寫分離,主庫讀寫從庫。如果無法從圖書館閱讀或者從圖書館閱讀特別慢,妳會怎麽解決?
作者回答:我覺得這個問題的答案不太好。擅長mysql的朋友希望給點意見。在解決問題的前提下,先增加從庫數量,暫時解決問題,然後抓取慢日誌,分析sql語句,優化就優化了。速度慢或者硬件跟不上,需要升級;要麽是軟件需要調試優化,正在詳細解決問題。
7.單核和多核cpu有什麽區別?
作者回答:很少有面試官會問這樣的問題,即使有也要老老實實回答。還好之前學過CPU。我是這麽說的:雙核CPU可以處理多個任務,為了處理好它們,把它們排隊。單核CPU壹次處理壹個任務,輪流處理每個程序任務。雙核的優勢不是頻率,而是同時處理多個事情。單核同時只能做壹件事,比如妳可以在後臺同時下載BT,前臺可以壹邊看電影壹邊復制文件,QQ。
8.機械磁盤和固態硬盤有什麽區別?
作者回答:媽的,都什麽年代了,還問了盤的問題。這個面試官有點搞笑。那也要回答:
HDD代表機械硬盤,SSD代表固態硬盤。首先從性能上來說,SSD幾乎比機械硬盤好,SSD的讀寫速度肯定比機械硬盤快,因為SSD和機械硬盤的結構完全不同(具體結構不用解釋)。其次,固態盤幾乎沒有噪音,而機械盤有噪音。另外,根據目前的市場情況,壹般的機械盤容量大,價格低;固態盤容量小,價格高。但是企業還是更喜歡固態盤。
9.妳用過哪些監控系統?
作者回答:這個監控問題又問了。2065 438+08 10月4日也被問過類似的問題。我用過zabbix,nagios,cacit等。但這次采訪我只說用了zabbix和nagios。之後面試官讓我談談兩種監控的區別:
在網頁功能和繪圖方面:
Nagios簡單直觀,告警和數據在同壹個頁面,紅色是問題項。不要在Nagios web上做任何配置。Nagios需要安裝額外的插件,插件的繪制不夠美觀。
Zabbix監控數據和報警是分開的。查看問題項需要看觸發器,數據要在最新的數據中查看。而且,zabbix還有很多其他的配置項。zabbix帶有繪圖功能,可以在壹張圖中手動顯示多個監控項目。
在監測服務方面:
Nagios附帶的監控項目很少。當監控壹些變化時,例如多個分區和多個網卡,需要手動配置。
Zabbix自帶了很多監控內容。感覺Zabbix從壹開始就為妳做了很多事情,尤其是自動發現和監控多個分區和多個網卡的時候,那壹瞬間很愜意,很省心。
就批量配置和報警而言:
Nagios,對於主機的批量監控,需要使用腳本在服務器端添加主機,復制服務文件。Nagios使用腳本修改所有主機的服務文件並添加新服務。
Zabbix在服務器端配置自動註冊規則。規則配置好之後,客戶端的後續添加就不需要在服務器端操作了。Zabbix只需要在模板中手動添加壹個監控項。
壹般來說:
Nagios花很多時間寫插件,Zabbix花很多時間探索函數。
Nagios比較容易上手,Nagios兩天搞定,Zabbix兩周搞定。
Zabbix繪圖功能比Nagios更強大。
Zabbix對於批量監控和服務變更更加簡潔;如果Nagios寫壹個自動化腳本,也很簡單。問題是寫自動化腳本非常費力。
10.給定壹組環境,妳會如何設計壹個高可用、高並發的架構?
作者回答:如果這個環境部署在雲端(比如阿裏雲),就不用考慮硬件設計了。可以直接接入阿裏雲SLB+ECS+RDS的標準高可用高並發架構。外部服務直接加載SLB負載均衡技術,由阿裏的SLB分發到後端ECS主機;部署多臺ECS主機,應用拆分在不同的ECS主機上,盡可能細分服務。數據庫使用RDS高可用性版本(壹主壹備的經典高可用性架構)或RDS金融版本(壹主兩備的三節點架構)。結合阿裏的其他服務,完全可以,業務量上來了,主機不夠用,ECS主機縱橫擴展。
如果這個環境由IDC托管,那麽您應該同時考慮硬件和軟件(應用服務)。為了實現硬件的高可用性和高並發性,公司必須購買多套必須冗余的網絡硬件設備(如負載設備F5、防火墻、核心層交換機和接入層交換機),特別是在網絡設計中,設備之間必須有雙線連接。如果所有的設備都是單機運行,其中壹個掛了,妳整個網絡就癱瘓了,高可用高並發就無從談起了。其次,我會考慮應用服務。我會采用成熟的開源方案LVS+Keepalived或者Nginx+Keepalived對外服務,redis集群和Mongodb集群做緩存層,kafka和zookeeper做中間件,fastDFS或者MFS做鏡像存儲。如果數據量大,可以采用hadoop。後端數據庫可以采用“主從+MHA”。在這樣的環境下,高可用高並發的架構是絕對滿足的。