0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

一名運維工程師面試的經(jīng)歷

工程師人生 ? 來源:工程師吳畏 ? 2019-02-18 14:49 ? 次閱讀

筆者其實沒有想到去面試,只是在智聯(lián)上更新了一下簡歷,就陸陸續(xù)續(xù)接到很多獵頭的郵件和電話,實在是沒準備好要去面試,就推掉了幾家公司的面試了。正因為筆者也很久沒有面試了,筆者也想去面試學習一下,閑話少說,下面就分享給大家筆者在2018年1月4號上午10點30分的面試經(jīng)歷:

首先,獵頭或者公司人資會把公司的介紹及崗位要求發(fā)到你郵箱(或者QQ、微信),下面這份是獵頭發(fā)給我的崗位說明,為了職業(yè)道德操守,公司的介紹和面試通知信息我就不貼出來了,我就把崗位要求貼出來:

職位描述:

1、 負責應用服務器的安裝、配置、優(yōu)化與維護;

2、 負責應用系統(tǒng)的日志信息備份、管理、維護與分析;

3、 負責應用系統(tǒng)的日常監(jiān)測于維護、故障處理、性能分析與優(yōu)化;

4、 負責應用部署系統(tǒng)、環(huán)境配置系統(tǒng)、監(jiān)控系統(tǒng)的開發(fā)、部署、升級與維護,建設高性能的運維平臺。

崗位要求:

1、 熟悉Linux操作系統(tǒng)的基礎知識,熟練使用Linux常用操作命令;

2、 熟練配置Nginx、HAproxy 等應用相關(guān)軟件的部署、配置與優(yōu)化維護;

3、 熟悉網(wǎng)絡基礎知識、熟悉TCP/IP的工作原理,會配交換機或路由器,能熟練的對網(wǎng)絡情況進行分析

4、 熟悉shell/perl/python中的一種或多種進行運維程序的開發(fā);

5、 熟悉Nagios,Ganglia等監(jiān)控軟件

看著上面的要求大家是不是覺得要求也不高啊,你要細看就會發(fā)現(xiàn),這家公司要求的還挺多,不僅要會網(wǎng)絡知識(熟悉TCP/IP好像是每家單位的都會寫這樣的要求),還要會開發(fā)技能。相信很多做運維的兄弟在網(wǎng)絡這一塊是個頭疼的事情,都對交換機和路由器不怎么會配置和管理。

然后,筆者詳細了解他們公司,了解崗位要求,在突擊復習一下可能會問到的知識點和技術(shù)點。到了面試的這天時間,早早的起床,把牙一定要刷干凈,特別是有口臭的兄弟,最好準備點口香糖,到達面試公司前嚼塊口香糖,以免因為口氣的原因熏到面試官,讓你在面試官心里減分。早點要記得吃,如果你是下午面試的話也要吃午飯,吃早點了精氣神就有了。還要注意,帶上你的簡歷和一支筆,雖然他們那邊也會有你的簡歷,為了以防萬一還是準備好簡歷。

最后,關(guān)鍵點來了,就是和面試官溝通了,有筆試的公司會讓你做些面試題,沒有筆試就直接和面試官聊了,下面是我和面試官溝通完之后記住的一些問題,分享給大家看一下,筆者一共記住了7個問題,好像還有兩個問題實在想不起來了,如果大家有更恰當?shù)幕卮鹨欢ㄒN出來一起探討和進步:

1、介紹下自己?(幾乎每家公司首先都會讓你做個自我介紹,好像是必修課一樣)

筆者回答:此處省略筆者的自我介紹,筆者建議介紹自己的時間不宜過長,3-4分鐘為宜,說多了面試官會覺得你太啰嗦了。說太少了也不行,那樣會讓人感覺你的經(jīng)歷太簡單了、太空了。正常情況下,一般你在做自我介紹的同時,面試官這個時候在看你的簡歷,他需要一邊看簡歷、一邊聽你介紹自己,如果你說個幾句話就把自己介紹完了,他肯定還沒緩過神來,對你的映像會減分的。在介紹的同時思維要清晰,邏輯要清楚,最好是根據(jù)你簡歷上寫的經(jīng)歷來介紹,這樣可以把面試官的思路帶到你這里來,讓他思路跟著你走。不要東扯一句,西扯一句。竟量少介紹自己的性格、愛好(最好能不說就不說),你可以簡單羅列干過幾家公司(最多羅列3家公司/也包含目前所在的公司,注意順序不要亂),都在那幾家公司負責什么工作,都用過什么技術(shù),在著重介紹一下你目前所在的公司是負責哪些工作的,可以稍微詳細一點介紹,不要讓面試官聽著暈頭轉(zhuǎn)向的感覺。

2、灰度發(fā)布如何實現(xiàn)?

筆者回答:其實對這個問題筆者也答的不好,就不寫出來誤導大家了。大家有好的方法可以共享出來。不過筆事后在知呼上看到了一位網(wǎng)友的建議覺得不錯,大家可以參考看一下 :https://www.zhihu.com/question/20584476

3、Mongodb熟悉嗎,一般部署幾臺?

筆者回答:部署過,沒有深入研究過,一般mongodb部署主從、或者mongodb分片集群;建議3臺或5臺服務器來部署。MongoDB分片的基本思想就是將集合切分成小塊。這些塊分散到若干片里面,每個片只負責總數(shù)據(jù)的一部分。 對于客戶端來說,無需知道數(shù)據(jù)被拆分了,也無需知道服務端哪個分片對應哪些數(shù)據(jù)。數(shù)據(jù)在分片之前需要運行一個路由進程,進程名為mongos。這個路由器知道所有數(shù)據(jù)的存放位置,知道數(shù)據(jù)和片的對應關(guān)系。對客戶端來說,它僅知道連接了一個普通的mongod,在請求數(shù)據(jù)的過程中,通過路由器上的數(shù)據(jù)和片的對應關(guān)系,路由到目標數(shù)據(jù)所在的片上,如果請求有了回應,路由器將其收集起來回送給客戶端。

4、如何發(fā)布和回滾,用jenkins又是怎么實現(xiàn)?

筆者回答:發(fā)布:jenkins配置好代碼路徑(SVN或GIT),然后拉代碼,打tag。需要編譯就編譯,編譯之后推送到發(fā)布服務器(jenkins里面可以調(diào)腳本),然后從分發(fā)服務器往下分發(fā)到業(yè)務服務器上。

回滾:按照版本號到發(fā)布服務器找到對應的版本推送

5、Tomcat工作模式?

筆者回答:Tomcat是一個JSP/Servlet容器。其作為Servlet容器,有三種工作模式:獨立的Servlet容器、進程內(nèi)的Servlet容器和進程外的Servlet容器。

進入Tomcat的請求可以根據(jù)Tomcat的工作模式分為如下兩類:

Tomcat作為應用程序服務器:請求來自于前端的web服務器,這可能是Apache, IIS, Nginx等;

Tomcat作為獨立服務器:請求來自于web瀏覽器;

6、監(jiān)控用什么實現(xiàn)的?

筆者回答:現(xiàn)在公司的業(yè)務都跑在阿里云上,我們首選的監(jiān)控就是用阿里云監(jiān)控,阿里云監(jiān)控自帶了ECS、RDS等服務的監(jiān)控模板,可結(jié)合自定義報警規(guī)則來觸發(fā)監(jiān)控項。上家公司的業(yè)務是托管在IDC,用的是zabbix監(jiān)控方案,zabbix圖形界面豐富,也自帶很多監(jiān)控模板,特別是多個分區(qū)、多個網(wǎng)卡等自動發(fā)現(xiàn)并進行監(jiān)控做得非常不錯,不過需要在每臺客戶機(被監(jiān)控端)安裝zabbix agent。

7、你是怎么備份數(shù)據(jù)的,包括數(shù)據(jù)庫備份?

筆者回答:在生產(chǎn)環(huán)境下,不管是應用數(shù)據(jù)、還是數(shù)據(jù)庫數(shù)據(jù)首先在部署的時候就會有主從架構(gòu)、或者集群,這本身就是屬于數(shù)據(jù)的熱備份;其實考慮冷備份,用專門一臺服務器做為備份服務器,比如可以用rsync+inotify配合計劃任務來實現(xiàn)數(shù)據(jù)的冷備份,如果是發(fā)版的包備份,正常情況下有臺發(fā)布服務器,每次發(fā)版都會保存好發(fā)版的包。

總結(jié)一下面試注意幾點事項,可能筆者也說得不太對,為了我們運維工作的兄弟們都能拿到高薪,大家一定要指證出來一起進步、一起探討:

第一,你要對自己的簡歷很熟悉,簡歷上的寫的技能自己一定要能說出個一二,因為面試官的很多問題都會挑你簡歷上寫的問。比如你簡歷上寫了這么一條技能“熟悉mysql數(shù)據(jù)庫的部署安裝及原理”。你即然寫了這么一條技能,你在怎么不熟悉你也要了解mysql的原理,能說出個大概意思。萬一面試官問到了你寫的這一條,你都答不上來,那在他心里你又減分了,基本上這次面試希望不大。

第二,如果面試官問到你不會的問題,你就說這個不太熟悉,沒有具體研究過,千萬別不懂裝懂,還扯一堆沒用的話題來掩飾,這樣只會讓面試官反感你。

第三,準備充分,竟可能多的記住原理性的知識,一般面試問的多的就是原理。很少問具體的配置文件是怎么配置的。面試前也要了解清楚“職位描述”和“崗位要求”,雖然有時候大多數(shù)不會問到崗位要求的問題,但也要了解和熟悉。

第四,面試完后一定要總結(jié),盡量記住面試官問的每一個問題,回去記錄下來,如果問到不會的問題,事后要立馬查百度或者找朋友搞清楚、弄明白,這樣你才能記勞,下次面試說不定又問到同樣的問題。

問完之后,面試官就跟我聊薪資待遇了,問我多少錢能達到自己的要求,我就不便透露了,可以私聊,哈哈,后續(xù)筆者會陸陸續(xù)續(xù)更新以前面試的經(jīng)歷和問題,有需要的朋友可以轉(zhuǎn)載或者收藏起來一起討論。

2017年2月24號面試

基于大家熱情高昂的氣氛,筆者又花了一個下午的時間回憶并整理在2017年2月24號筆者在東三環(huán)邊上(快到東四環(huán)了,沒有地鐵過去,到了四惠還要轉(zhuǎn)公交車)的一家傳媒公司的面試經(jīng)歷,還好筆者有做筆記的習慣,把之前面試的問題都記錄在案,這一次的面試筆者可是記憶猶新,因為這次這家公司都跟筆者發(fā)offer了,實在是真心不想去這家公司就找原因推掉了,大家可別學我這么不靠譜。下面是這家公司中的崗位要求說明:

崗位職責:

1、負責公司產(chǎn)品的版本控制、構(gòu)建和發(fā)布管理;

2、負責公司統(tǒng)一配置庫管理工作,權(quán)限管理與分配準確及時,定期完成配置備份;

3、負責公司內(nèi)部開發(fā)/測試服務器的運行管理工作;

4、負責Linux操作系統(tǒng)的安裝、配置、監(jiān)控和維護、問題處理、軟件升級、 數(shù)據(jù)備份、應急響應、故障排除等、保證線上環(huán)境的穩(wěn)定運行;

5、負責支撐平臺24×7穩(wěn)定運行,并進行前瞻性容量規(guī)劃;

6、負責公司機房服務器日常維護及網(wǎng)絡系統(tǒng)安裝、部署、維護工作。

崗位要求:

1、計算機相關(guān)專業(yè)本科及以上學歷,2年以上運維或配置管理工作經(jīng)驗;

2、至少熟悉一種監(jiān)控系統(tǒng)搭建,如Nagios/Zabbix/等;

3、至少熟悉一種集群管理工具,如Ansible/SaltStack等;

4、有使用集成發(fā)布工具發(fā)布構(gòu)建經(jīng)驗優(yōu)先。比如:bamboo或者Jenkins;

5、熟悉Unix/Linux操作系統(tǒng),熟悉Weblogic/tomcat等中間件,能夠編寫shell腳本,熟悉軟件開發(fā)過程及過程產(chǎn)品,有一定的網(wǎng)絡基礎;

6、熟悉rsyslog, flume等日志收集和處理系統(tǒng);

7、具有強烈的安全意識及較強的溝通協(xié)調(diào)和學習能力,良好的團隊合作精神,工作積極主動。

過去之后,前臺美眉把我?guī)У剿麄児镜牡叵率?,我掃視了一下周圍的環(huán)境,貌似旁邊就是機房,因為我聽到服務器的聲音。等了幾分鐘,面試官下來了,面試官目測比較瘦,看著跟我身材差不多(應該不到120),他說他是負責運維部的,然后開始就叫我先自我介紹,都是一個套路,免不了介紹的,所以兄弟們一定要把自我介紹練好。然后開始問我問題了,跟面試官聊得還行,問我應該有不下10個以上的問題,我記住了下面有10個問題:

1、LVS負載的原理,和Nginx負載有啥區(qū)別?

筆者回答:這個問題我覺得面試官司沒問好,正常都會這么問“LVS有哪些負載均衡技術(shù)和調(diào)度算法?“。我回答就是按我說的這種問法回答的,反正他也頻繁點頭,當然,筆者回答的可能沒有下面我整理出來的那么詳細,大概意思我都說明白了。

LVS是Liunx虛擬服務器的簡稱,利用LVS提供的負載均衡技術(shù)和linux操作系統(tǒng)可實現(xiàn)高性能、高可用的服務器集群,一般LVS都是位于整個集群系統(tǒng)的最前端,由一臺或者多臺負載調(diào)度器(Director Server)組成,分發(fā)給應用服務器(Real Server)。它是工作在4層(也就是TCP/IP中的傳輸層),LVS是基于IP負載均衡技術(shù)的IPVS模塊來實現(xiàn)的,IPVS實現(xiàn)負載均衡機制有三種,分別是NAT、TUN和DR,詳述如下:

? VS/NAT: 即(Virtual Server via Network Address Translation)

也就是網(wǎng)絡地址翻譯技術(shù)實現(xiàn)虛擬服務器,當用戶請求到達調(diào)度器時,調(diào)度器將請求報文的目標地址(即虛擬IP地址)改寫成選定的Real Server地址,同時報文的目標端口也改成選定的Real Server的相應端口,最后將報文請求發(fā)送到選定的Real Server。在服務器端得到數(shù)據(jù)后,Real Server返回數(shù)據(jù)給用戶時,需要再次經(jīng)過負載調(diào)度器將報文的源地址和源端口改成虛擬IP地址和相應端口,然后把數(shù)據(jù)發(fā)送給用戶,完成整個負載調(diào)度過程。

可以看出,在NAT方式下,用戶請求和響應報文都必須經(jīng)過Director Server地址重寫,當用戶請求越來越多時,調(diào)度器的處理能力將稱為瓶頸。

? VS/TUN :即(Virtual Server via IP Tunneling)

也就是IP隧道技術(shù)實現(xiàn)虛擬服務器。它的連接調(diào)度和管理與VS/NAT方式一樣,只是它的報文轉(zhuǎn)發(fā)方法不同,VS/TUN方式中,調(diào)度器采用IP隧道技術(shù)將用戶請求轉(zhuǎn)發(fā)到某個Real Server,而這個Real Server將直接響應用戶的請求,不再經(jīng)過前端調(diào)度器,此外,對Real Server的地域位置沒有要求,可以和Director Server位于同一個網(wǎng)段,也可以是獨立的一個網(wǎng)絡。因此,在TUN方式中,調(diào)度器將只處理用戶的報文請求,集群系統(tǒng)的吞吐量大大提高。

? VS/DR: 即(Virtual Server via Direct Routing)

也就是用直接路由技術(shù)實現(xiàn)虛擬服務器。它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,但它的報文轉(zhuǎn)發(fā)方法又有不同,VS/DR通過改寫請求報文的MAC地址,將請求發(fā)送到Real Server,而Real Server將響應直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負載調(diào)度機制中性能最高最好的,但是必須要求Director Server與Real Server都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。

回答負載調(diào)度算法,IPVS實現(xiàn)在八種負載調(diào)度算法,我們常用的有四種調(diào)度算法(輪叫調(diào)度、加權(quán)輪叫調(diào)度、最少鏈接調(diào)度、加權(quán)最少鏈接調(diào)度)。一般說了這四種就夠了,也不會需要你詳細解釋這四種算法的。你只要把上面3種負載均衡技術(shù)講明白面試官就對這道問題很滿意了。接下來你在簡單說下與nginx的區(qū)別:

LVS的優(yōu)點:

抗負載能力強、工作在第4層僅作分發(fā)之用,沒有流量的產(chǎn)生,這個特點也決定了它在負載均衡軟件里的性能最強的;無流量,同時保證了均衡器IO的性能不會受到大流量的影響;

工作穩(wěn)定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat;

應用范圍比較廣,可以對所有應用做負載均衡;

配置性比較低,這是一個缺點也是一個優(yōu)點,因為沒有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯的幾率。

LVS的缺點:

軟件本身不支持正則處理,不能做動靜分離,這就凸顯了Nginx/HAProxy+Keepalived的優(yōu)勢。

如果網(wǎng)站應用比較龐大,LVS/DR+Keepalived就比較復雜了,特別是后面有Windows Server應用的機器,實施及配置還有維護過程就比較麻煩,相對而言,Nginx/HAProxy+Keepalived就簡單一點

Nginx的優(yōu)點:

工作在OSI第7層,可以針對http應用做一些分流的策略。比如針對域名、目錄結(jié)構(gòu)。它的正則比HAProxy更為強大和靈活;

Nginx對網(wǎng)絡的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優(yōu)勢所在;

Nginx安裝和配置比較簡單,測試起來比較方便;

可以承擔高的負載壓力且穩(wěn)定,一般能支撐超過幾萬次的并發(fā)量;

Nginx可以通過端口檢測到服務器內(nèi)部的故障,比如根據(jù)服務器處理網(wǎng)頁返回的狀態(tài)碼、超時等等,并且會把返回錯誤的請求重新提交到另一個節(jié)點;

Nginx不僅僅是一款優(yōu)秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP現(xiàn)在也是非常流行的web環(huán)境,大有和LAMP環(huán)境分庭抗禮之勢,Nginx在處理靜態(tài)頁面、特別是抗高并發(fā)方面相對apache有優(yōu)勢;

Nginx現(xiàn)在作為Web反向加速緩存越來越成熟了,速度比傳統(tǒng)的Squid服務器更快,有需求的朋友可以考慮用其作為反向代理加速器;

Nginx的缺點:

Nginx不支持url來檢測。

Nginx僅能支持http和Email,這個它的弱勢。

Nginx的Session的保持,Cookie的引導能力相對欠缺。

2、redis集群的原理,redis分片是怎么實現(xiàn)的,你們公司redis用在了哪些環(huán)境?

筆者回答:reids集群原理:

其實它的原理不是三兩句話能說明白的,redis 3.0版本之前是不支持集群的,官方推薦最大的節(jié)點數(shù)量為1000,至少需要3(Master)+3(Slave)才能建立集群,是無中心的分布式存儲架構(gòu),可以在多個節(jié)點之間進行數(shù)據(jù)共享,解決了Redis高可用、可擴展等問題。集群可以將數(shù)據(jù)自動切分(split)到多個節(jié)點,當集群中的某一個節(jié)點故障時,redis還可以繼續(xù)處理客戶端的請求。

redis分片:

分片(partitioning)就是將你的數(shù)據(jù)拆分到多個 Redis 實例的過程,這樣每個實例將只包含所有鍵的子集。當數(shù)據(jù)量大的時候,把數(shù)據(jù)分散存入多個數(shù)據(jù)庫中,減少單節(jié)點的連接壓力,實現(xiàn)海量數(shù)據(jù)存儲。分片部署方式一般分為以下三種:

(1)在客戶端做分片;這種方式在客戶端確定要連接的redis實例,然后直接訪問相應的redis實例;

(2)在代理中做分片;這種方式中,客戶端并不直接訪問redis實例,它也不知道自己要訪問的具體是哪個redis實例,而是由代理轉(zhuǎn)發(fā)請求和結(jié)果;其工作過程為:客戶端先將請求發(fā)送給代理,代理通過分片算法確定要訪問的是哪個redis實例,然后將請求發(fā)送給相應的redis實例,redis實例將結(jié)果返回給代理,代理最后將結(jié)果返回給客戶端。

(3)在redis服務器端做分片;這種方式被稱為“查詢路由”,在這種方式中客戶端隨機選擇一個redis實例發(fā)送請求,如果所請求的內(nèi)容不再當前redis實例中它會負責將請求轉(zhuǎn)交給正確的redis實例,也有的實現(xiàn)中,redis實例不會轉(zhuǎn)發(fā)請求,而是將正確redis的信息發(fā)給客戶端,由客戶端再去向正確的redis實例發(fā)送請求。

redis用在了哪些環(huán)境:

java、php環(huán)境用到了redis,主要緩存有登錄用戶信息數(shù)據(jù)、設備詳情數(shù)據(jù)、會員簽到數(shù)據(jù)等

3、你會怎么統(tǒng)計當前訪問的IP,并排序?

筆者回答:統(tǒng)計用戶的訪問IP,用awk結(jié)合uniq、sort過濾access.log日志就能統(tǒng)計并排序好。一般這么回答就夠了,當然你還可以說出其它方式來統(tǒng)計,這都是你的加分項。

4、你會使用哪些虛擬化技術(shù)?

筆者回答:vmware vsphere及kvm,我用得比較多的是vmware vsphere虛擬化,幾本上生產(chǎn)環(huán)境都用的vmware vsphere,kvm我是用在測試環(huán)境中使用。vmware 是屬于原生架構(gòu)虛擬化技術(shù),也就是可直接在硬件上運行。kvm屬于寄居架構(gòu)的虛擬化技術(shù),它是依托在系統(tǒng)之上運行。vmware vcenter

管理上比較方便,圖形管理界面功能很強大,穩(wěn)定性強,一般比較適合企業(yè)使用。KVM管理界面稍差點,需要管理人員花費點時間學習它的維護管理技術(shù)。

5、假如有人反應,調(diào)取后端接口時特別慢,你會如何排查?

筆者回答:其實這種問題都沒有具體答案,只是看你回答的內(nèi)容與面試官契合度有多高,能不能說到他想要的點上,主要是看你排查問題的思路。我是這么說的:問清楚反應的人哪個服務應用或者頁面調(diào)取哪個接口慢,叫他把頁面或相關(guān)的URL發(fā)給你,首先,最直觀的分析就是用瀏覽器按F12,看下是哪一塊的內(nèi)容過慢(DNS解析、網(wǎng)絡加載、大圖片、還是某個文件內(nèi)容等),如果有,就對癥下藥去解決(圖片慢就優(yōu)化圖片、網(wǎng)絡慢就查看內(nèi)網(wǎng)情況等)。其次,看后端服務的日志,其實大多數(shù)的問題看相關(guān)日志是最有效分析,最好用tail -f 跟蹤一下日志,當然你也要點擊測試來訪問接口日志才會打出來。最后,排除sql,,找到sql去mysql執(zhí)行一下,看看時間是否很久,如果很久,就要優(yōu)化SQL問題了,expain一下SQL看看索引情況啥的,針對性優(yōu)化。數(shù)據(jù)量太大的能分表就分表,能分庫就分庫。如果SQL沒啥問題,那可能就是寫的邏輯代碼的問題了,一行行審代碼,找到耗時的地方改造,優(yōu)化邏輯。

6、mysql數(shù)據(jù)庫用的是主從讀寫分離,主庫寫,從庫讀,假如從庫無法讀取了、或者從庫讀取特別慢,你會如何解決?

筆者回答:這個問題筆者覺得回答的不太好,對mysql比較在行的朋友希望能給點建議。以解決問題為前提條件,先添加從庫數(shù)量,臨時把問題給解決,然后抓取slow log ,分析sql語句,該優(yōu)化就優(yōu)化處理。慢要不就是硬件跟不上,需要升級;要不就是軟件需要調(diào)試優(yōu)化,等問題解決在細化。

7、cpu單核和多核有啥區(qū)別?

筆者回答:很少有面試官會問這樣的問題,即然問到了,也要老實回答。還好筆者之前了解過CPU,我是這么說的:雙核CPU就是能處理多份任務,順序排成隊列來處理。單核CPU一次處理一份任務,輪流處理每個程序任務。雙核的優(yōu)勢不是頻率,而是對付同時處理多件事情。單核同時只能干一件事,比如你同時在后臺BT下載,前臺一邊看電影一邊拷貝文件一邊QQ。

8、機械磁盤和固態(tài)硬盤有啥區(qū)別?

筆者回答:我擦,啥年代了,還問磁盤的問題,這面試官有點逗啊。那也要回答?。?/p>

HDD代表機械硬盤,SSD代表固態(tài)硬盤。首先,從性能方面來說,固態(tài)硬盤幾乎完勝機械硬盤,固態(tài)硬盤的讀寫速度肯定要快機械硬盤,因為固態(tài)硬盤和機械硬盤的構(gòu)造是完全不同的(具體的構(gòu)造就沒必要解釋了)。其次,固態(tài)盤幾乎沒有噪音、而機械盤噪音比較大。還有就是,以目前的市場情況來看,一般機械盤容量大,價格低;固態(tài)盤容量小,價格偏高。但是企業(yè)還是首選固態(tài)盤。

9、說一下用過哪些監(jiān)控系統(tǒng)?

筆者回答:這個監(jiān)控的問題又問到了,筆者在2018年1月4號也被問到類似這樣的問題,筆者曾經(jīng)用過zabbix、nagios、 cacit等。但是在這次面試中只說用過zabbix和nagios。說完了之后,面試官就讓我說一下這兩個監(jiān)控有啥區(qū)別:

從web功能及畫圖來講:

Nagios簡單直觀,報警與數(shù)據(jù)都在同一頁面, 紅色即為問題項。Nagios web端不要做任何配置。 Nagios需要額外安裝插件,且插件畫圖不夠美觀。

Zabbix監(jiān)控數(shù)據(jù)與報警是分開的,查看問題項需要看觸發(fā)器,查看數(shù)據(jù)在最新數(shù)據(jù)查看。而且zabbix有很多其它配置項, zabbix攜帶畫圖功能,且能手動把多個監(jiān)控項集在一個圖中展示。

從監(jiān)控服務來講:

Nagios自帶的監(jiān)控項很少。對一些變動的如多個分區(qū)、多個網(wǎng)卡進行監(jiān)控時需要手動配置。

Zabbix自帶了很多監(jiān)控內(nèi)容,感覺zabbix一開始就為你做了很多事,特別是對多個分區(qū)、多個網(wǎng)卡等自動發(fā)現(xiàn)并進行監(jiān)控時,那一瞬間很驚喜,很省心的感覺。

從批量配置和報警來講:

Nagios對于批量監(jiān)控主機,需要用腳本在server端新增host,并拷貝service文件。 Nagios用腳本來修改所有主機的services文件,加入新增服務。

Zabbix在server端配置自動注冊規(guī)則,配置好規(guī)則后,后續(xù)新增client端不需要對server端進行操作。 Zabbix只需手動在模板中新增一監(jiān)控項即可。

總體來講:

Nagios要花很多時間寫插件,Zabbix要花很多時間探索功能。

Nagios更易上手,Nagios兩天弄會,Zabbix兩周弄會。

Zabbix畫圖功能比Nagios更強大

Zabbix對于批量監(jiān)控與服務更改,操作更簡潔;Nagios如果寫好自動化腳本后,也很簡單,問題在于寫自動化腳本很費神。

10、給你一套環(huán)境,你會如何設計高可用、高并發(fā)的架構(gòu)?

筆者回答:

如果這套環(huán)境是部署在云端(比如阿里云),你就不用去考慮硬件設計的問題??芍苯由习⒗镌频腟LB+ECS+RDS這套標準的高可用、高并發(fā)的架構(gòu)。對外服務直接上SLB負載均衡技術(shù),由阿里的SLB分發(fā)到后端的ECS主機;ECS主機部署多臺,應用拆分在不同的ECS主機上,盡量細分服務。數(shù)據(jù)庫用RDS高可用版本(一主一備的經(jīng)典高可用架構(gòu))、或者用RDS金融版(一主兩備的三節(jié)點架構(gòu))。在結(jié)合阿里其它的服務就完全OK,業(yè)務量上來了,主機不夠用了,直橫向擴容ECS主機搞定。

如果這套環(huán)境托管在IDC,那么你就要從硬件、軟件(應用服務)雙面去考慮了。硬件要達到高可用、高并發(fā)公司必須買多套網(wǎng)絡硬件設備(比如負載設備F5、防火墻、核心層交換、接入層交換)都必須要冗余,由其是在網(wǎng)絡設計上,設備之間都必須有雙線連接。設備如果都是跑的單機,其中一個設備掛了,你整個網(wǎng)絡都癱瘓了,就談不上高可用、高并發(fā)了。其次在是考慮應用服務了,對外服務我會采用成熟的開源方案LVS+Keepalived或者Nginx+Keepalived,緩存層可以考慮redis集群及Mongodb集群,中間件等其它服務可以用kafka、zookeeper,圖片存儲可以用fastDFS或MFS,如果數(shù)據(jù)量大、又非常多,那么可采用hadoop這一套方案。后端數(shù)據(jù)庫可采用 “主從+MHA”。這樣一套環(huán)境下來是絕對滿足高可用、高并發(fā)的架構(gòu)。

對了,在下周一(2018年1月8號)有個海外的電話面試、還有下周二(2018年1月9號)有個網(wǎng)絡運維經(jīng)理崗位的面試,其實這個網(wǎng)絡運維經(jīng)理職位的面試有點不太想去,主要是想了解一下都會問些啥問題,可以為大家分享出來,所以請大家敬請期待吧。。。

2018年1月8號海外電話面試

一次偶然的機會,筆者在一個招聘平臺中(我就不細說哪個平臺,免得有打廣告的意思)刷新崗位的時候突然看到一個新發(fā)布的崗位,仔細一看是海外的崗位,上面寫的待遇、福利、工作內(nèi)容筆者都有點興趣,由于筆者也沒有嘗試過海外面試的機會和感覺,所以就和發(fā)布這個崗位的獵頭聯(lián)系上了。

獵頭問我要了簡歷,并把個人信息詳細豐富了一下,比如有沒有護照、工作了多久、個人職業(yè)規(guī)劃、期望到手的薪資等等。獵頭就把我的簡歷和詳細的個人信息推薦出去了,過了幾天時間,獵頭通知我簡歷篩選通過了,約個時間可以進行技術(shù)面試(電話面試),然后就這樣約在了2018年1月8號上午。

雖然這次是海外面試,但是面試官是我們?nèi)A人,和面試官在電話中將近聊了2個小時左右,筆者聊的也口干舌燥。這一次面試官將近問了40個左右的問題,量實大有點大,筆者也沒記住這么多,大概記住了30多個問題,忘記開錄音了,不然這些問題都能分享出來。別看是海外的面試官,其實這次所問的問題在我們國內(nèi)的面試中也常常會問到的,我們先來看一下海外的公司的崗位要求吧:

崗位職責:

1、日常線上項目的需求處理;

2、新項目上線對接的相關(guān)工作;

3、日常運維工具開發(fā)、維護、優(yōu)化;

4、監(jiān)控業(yè)務的運行狀態(tài),及時處理項目運行中出現(xiàn)的故障,保障項目服務24x7穩(wěn)定運行;

5、分析排除系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡、應用等故障及錯誤;

6、負責服務器的資源調(diào)配和系統(tǒng)安全、數(shù)據(jù)備份。

任職要求:

1. 熟悉linux操作系統(tǒng), 熟練使用一種或多種腳本語 言(例如 Python/Perl/Shell);

2. 熟悉至少一種共有云技術(shù),多種運維平臺工具(Nagios, Zabbix,Puppet等)

3. 熟悉Nginx,Mysql, Redis, Keepalived, LVS等中間件的配置與調(diào)優(yōu);

4. 熟悉網(wǎng)絡部署,多種數(shù)據(jù)機房故障的發(fā)現(xiàn)和排除的工具,有做個跨機房數(shù)據(jù)同步的優(yōu)先;

5. 熟悉mysql、redis、mongoDB的安裝、維護、性能優(yōu)化;

6. 了解反向代理、負載均衡原理。

7. 有責任心,耐心,積極肯學的心態(tài)以及良好的溝通表達能力和團隊合作精神;

其實這個要求,我在上一篇文章也說到過,大多數(shù)公司都寫得差不多,很多公司自己懶的寫,直接照搬別的公司發(fā)出來崗位要求,所以我們只要了解它就可以了,面試的時候不一定會問到這些崗位的要求說明,你看這家公司沒有寫熟悉TCP/IP,其實面試官這一次有問到TCP/IP這個問題的。這次技術(shù)面試后總體面試官還是比較滿意,后來獵頭通知我一面過了,準備安排2018年1月11號下午進行二面(跟我談薪資、對海外工作的想法、人生規(guī)劃等話題)。好了,不多說了,大家自己慢慢看我和面試官聊的技術(shù)問題吧。

1、介紹下自己?

筆者回答:不管是電話面試還是現(xiàn)場面試,自我介紹是避免不了的,上一篇文章我有詳細介紹這塊的內(nèi)容,這里不做解釋了,感興趣的朋友參考我上一篇文章:

總結(jié)一下:運維工程師面試的經(jīng)歷及面試相關(guān)問題(會持續(xù)更新)

2、為什么想著要離開現(xiàn)在的公司?

筆者回答:雖然是面試技術(shù),但也會有很多面試官會不經(jīng)意的問你這個問題,看起來很隨意的問題,其實這個問題里面隱藏了很多信息,最直觀的就是看你這個人對企業(yè)的忠誠度、還能看你是不是心浮氣燥的性格等等。如果你曾經(jīng)頻繁跳過槽,不管出于什么原因,筆者個人都不建議寫在簡歷上,最好能夠合并一些工作時間和單位,企業(yè)是很擔心把你招來后會不會短時間你又跳槽了。當然如果都是因為企業(yè)經(jīng)營不善倒閉所至,就沒關(guān)系了。說到這里,就想起了筆者曾經(jīng)一位同事,連續(xù)在好幾家單位都干倒閉了,這我也不知道說啥好了。。。好了,咋們接著往下走。

3、TCP/IP原理說一下?TCP有哪幾個狀態(tài),分別是什么意思?

筆者回答:以tcp/ip協(xié)議為核心,分五層。tcp工作在第4層,主要有tcp和udp協(xié)議。其中tcp是可靠協(xié)議,udp是不可靠協(xié)議。 tcp傳輸之前,需要建立連接,通過三次握手實現(xiàn)。

TCP三次握手狀態(tài):首先是closed狀態(tài),當發(fā)起連接后,進入Listen狀態(tài),當三次握手之后,進入EST狀態(tài)。三次握手中間還有一個臨時狀態(tài):SYN_SENT。SYN_SENT 當應用程序發(fā)送ack之后,進入EST狀態(tài),如果沒有發(fā)送,就關(guān)閉closed.

總結(jié):大家一定要熟記tcp狀態(tài)轉(zhuǎn)換圖,參考 http://blog.csdn.net/wenqian1991/article/details/40110703 如下圖:

image.png

4、有個客戶說訪問不到你們的網(wǎng)站,但是你們自己測試內(nèi)網(wǎng)和外網(wǎng)訪問都沒問題。你會怎么排查并解決客戶的問題?

筆者回答:我們自己測了都沒問題,只是這個客戶訪問有問題,那肯定是要先聯(lián)系到這個客戶,能遠程最好,問一下客戶的網(wǎng)絡是不是正常的,訪問其它的網(wǎng)站有沒有問題(比如京東、百度什么的)。如果訪問其它網(wǎng)站有問題,那叫客戶解決本身網(wǎng)絡問題。如果訪問其它網(wǎng)站都沒問題,用ping和nslookup解析一下我們的網(wǎng)站是不是正常的,讓客戶用IP來訪問我們的網(wǎng)站是否可行,如果IP訪問沒問題,那就是客戶的DNS服務器有問題或者DNS服務器解析不到我們的網(wǎng)站。還有一種可能就是跨運營商訪問的問題,比如我們的服務器用的是北方聯(lián)通、而客戶用的是南方移動,就也有可能突然在某個時間段訪問不到,這種情況在龐大的中國網(wǎng)絡環(huán)境中經(jīng)常發(fā)生(一般是靠CDN解決)。還有可能就是我們的網(wǎng)站沒有SSL證書,在公網(wǎng)是使用的是http協(xié)議,這種情況有可能就是沒有用https協(xié)議網(wǎng)站被運營商劫持了。

5、redhat 6.X版本系統(tǒng) 和 centos 7.X版本有啥區(qū)別?

筆者回答:桌面系統(tǒng)(6/GNOE2.x、7/GNOME3.x)、文件系統(tǒng)(6/ext4、7/xfs)、內(nèi)核版本(6/2.6x、7/3.10x)、防火墻(6/iptables、7/firewalld)、默認數(shù)據(jù)庫(6/mysql、7/mariadb)、啟動服務(6/service啟動、7/systemctl啟動)、網(wǎng)卡(6/eth0、7/ens192)等。

6、你會用什么方法查看某個應用服務的流量使用情況?

筆者回答:如果是單一應用的服務器,只需要用iftop、sar等工具統(tǒng)計網(wǎng)卡流量就可以。如果服務器跑了多個應用,可以使用nethogs工具實現(xiàn),它的特別之處在于可以顯示每個進程的帶寬占用情況,這樣可以更直觀獲取網(wǎng)絡使用情況。

7、說一下你們公司怎么發(fā)版的(代碼怎么發(fā)布的)?

筆者回答:我說什么來著,這個問題又問到了。發(fā)布:jenkins配置好代碼路徑(SVN或GIT),然后拉代碼,打tag。需要編譯就編譯,編譯之后推送到發(fā)布服務器(jenkins里面可以調(diào)腳本),然后從分發(fā)服務器往下分發(fā)到業(yè)務服務器上。

8、elk中的logstash是怎么收集日志的,在客戶端的logstash配置文件主要有哪些內(nèi)容?

筆者回答:input、output兩大塊配置;input中指定日志(type、path)等,output指定日志輸出的目標(host、port)等。

9、ansible你用過它的哪些模塊,ansbile同時分發(fā)多臺服務器的過程很慢(它是逐臺分發(fā)的),你想過怎么解決嗎?

筆者回答:用過ansible的(copy file yum ping command shell)等模塊;ansible默認只會創(chuàng)建5個進程,所以一次任務只能同時控制5臺機器執(zhí)行。那如果你有大量的機器需要控制,或者你希望減少進程數(shù),那你可以采取異步執(zhí)行.ansible的模塊可以把task放進后臺,然后輪詢它。這使得在一定進程數(shù)下能讓大量需要的機器同時運作起來。

10、nginx有哪幾種調(diào)度算法,解釋一下ip hash和輪詢有啥不一樣?

筆者回答:常用的有3種調(diào)度算法(輪詢、ip hash、權(quán)重)。

輪詢:upstream按照輪詢(默認)方式進行負載,每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。

ip hash:每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。

權(quán)重:指定輪詢幾率,權(quán)重(weight)和訪問比率成正比,用于后端服務器性能不均的情況。

11、nginx你用到了哪些模塊,在proxy模塊中你配置過哪些參數(shù)

筆者回答:用到過(負載均衡upstream、反向代理proxy_pass、location、rewrite等)。

proxy模塊中配置過:proxy_set_header、proxy_connect_timeout、proxy_send_timeout、proxy_buffer_*

12、說一下iptables的原理,有哪些表、哪些鏈?怎么修改默認策略全部為DROP?

筆者回答:iptables是工作在TCP/IP的2、3、4層。你要說它的原理也不是幾話能概括的,當主機收到一個數(shù)據(jù)包后,數(shù)據(jù)包先在內(nèi)核空間中處理,若發(fā)現(xiàn)目的地址是自身,則傳到用戶空間中交給對應的應用程序處理,若發(fā)現(xiàn)目的不是自身,則會將包丟棄或進行轉(zhuǎn)發(fā)。

4張表(raw表、mangle表、net表、filter表)

5條鏈(INPUT鏈、OUTPUT鏈、PORWARD鏈、PREROUTING鏈、POSTROUTING鏈)。

全部設置為DROP:

#iptables -P INPUT DROP

#iptables -P OUTPUT DROP

#iptables -P FORWARD DROP

小結(jié):iptables遠不止這幾句話就能描述清楚的,也不是隨便在網(wǎng)上趴些資料就能學好的,需要自己用起來,經(jīng)過大量的實驗和實戰(zhàn)才能熟悉它,iptables真的很考驗運維人員的技術(shù)水平,大家一定要用心學好這個iptables。

13、如何開啟linux服務器路由轉(zhuǎn)發(fā)功能?

筆者回答:echo ”1“ 》 /proc/sys/net/ipv4/ip_forward

14、nginx中rewrite有哪幾個flag標志位(last、break、redirect、permanent),說一下都什么意思?

筆者回答:

last : 相當于Apache的[L]標記,表示完成當前的rewrite規(guī)則

break : 停止執(zhí)行當前虛擬主機的后續(xù)rewrite指令集

redirect : 返回302臨時重定向,地址欄會顯示跳轉(zhuǎn)后的地址

permanent : 返回301永久重定向,地址欄會顯示跳轉(zhuǎn)后的地址

301和302不能簡單的只返回狀態(tài)碼,還必須有重定向的URL,這就是return指令無法返回301,302的原因了。這里 last 和 break 區(qū)別有點難以理解:

last一般寫在server和if中,而break一般使用在location中

last不終止重寫后的url匹配,即新的url會再從server走一遍匹配流程,而break終止重寫后匹配

break和last都能組織繼續(xù)執(zhí)行后面的rewrite指令

總結(jié):關(guān)于nginx rewrite用法,筆者看到一篇文章總結(jié)的挺不錯 ,可以參考一下 https://www.jianshu.com/p/a1fce9358d44

15、你在shell腳本中用過哪些語法,case語法會用到哪些地方?

筆者回答:一般會用到if語句、for語句、while語句、case語句以及function函數(shù)的定義;case語句為多選擇語句,可以用case語句匹配一個值與一個模式,如果匹配成功,執(zhí)行相匹配的命令。最典型的case語法會用到啟動服務腳本的處理。

16、linux系統(tǒng)中你會用到什么命令查看硬件使用狀態(tài)信息?

筆者回答:這個命令就很多了,比如:lscpu(查看cpu信息)、free -m(查看內(nèi)存信息)、df -h(查看硬盤分區(qū)信息)、top(還可以動態(tài)查看cpu、內(nèi)存使用情況的信息),/proc/目錄下也可以查看很多硬件信息。

17、我要過濾一段文本(test.txt)中第二列的內(nèi)容?如果這段文件有很多特殊符號,比如用:(冒號)怎么過濾它的第二段?如果我要過濾這段文本中,其中有一行只有7個符如何實現(xiàn)?

筆者回答: awk ‘{print $2}’ tset.txt

awk -F‘:’ ‘{print $2}’ tset.txt

18、比如開發(fā)想找你查看tomcat日志,但是catalia.out特別大,你不可能用vi打開去看,你會怎么查看?如果你用 grep -i”error“ 過濾只是包含error的行,我想同時過濾error上面和下面的行如何實現(xiàn)?

筆者回答:grep -i ”error“ catalia.out

grep -C 1 -i ”error“ catalia.out

參數(shù)-C:是匹配前后的行,后面1是匹配前后各1行

19、 怎么編寫一個定時計劃任務?里面用到的最小單位是什么?

筆者回答:crontab -e,最小單位是分鐘

20、zabbix如何修改其中監(jiān)控的一臺服務器中內(nèi)存閾值信息,比如正常內(nèi)存使用到了80%報警,我想修改為60%報警?

筆者回答:正常來說,一般會把監(jiān)控的服務器統(tǒng)一加入到一個模板中,修改模板的其是某一項的監(jiān)控項參數(shù)和告警閾值后,加入模板中的所有主機都會同步。如果單獨想修改其中某一臺服務器內(nèi)存告警閾值,需要進入這臺主機,單獨創(chuàng)建一個告警Triggers,關(guān)聯(lián)這臺主機監(jiān)控內(nèi)存的項,配置好告警的閾值為60%即可實現(xiàn)。其實,zabbix一切都為圖形化操作,如果沒有接觸過zabbix的朋友,可能聽起來不太清楚。

21、mysql主從復制原理說一下?

筆者回答:mysql支持三種復制類型(基于語句的復制、基于行的復制、混合類開進的復制)。

如果你記不住太多內(nèi)容,可以簡單說明一下原理:

(1) master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件,binary log events);

(2) slave將master的binary log events拷貝到它的中繼日志(relay log);

(3) slave重做中繼日志中的事件,將改變反映它自己的數(shù)據(jù)。

20180112090827.jpg

如果你能詳細記住它的原理,可以這么回答:

該過程的第一部分就是master記錄二進制日志。在每個事務更新數(shù)據(jù)完成之前,master在二日志記錄這些改變。MySQL將事務串行的寫入二進制日志,即使事務中的語句都是交叉執(zhí)行的。在事件寫入二進制日志完成后,master通知存儲引擎提交事務。

下一步就是slave將master的binary log拷貝到它自己的中繼日志。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接,然后開始binlog dump process。Binlog dump process從master的二進制日志中讀取事件,如果已經(jīng)跟上master,它會睡眠并等待master產(chǎn)生新的事件。I/O線程將這些事件寫入中繼日志。

SQL slave thread(SQL從線程)處理該過程的最后一步。SQL線程從中繼日志讀取事件,并重放其中的事件而更新slave的數(shù)據(jù),使其與master中的數(shù)據(jù)一致。只要該線程與I/O線程保持一致,中繼日志通常會位于OS的緩存中,所以中繼日志的開銷很小。

22、用什么命令可以查看上一次服務器啟動的時間、上一次誰登錄過服務器?

筆者回答:w命令查看上次服務器啟動時間。last命令 查看登錄。

23、redis集群原理說一下,正常情況下mysql有多個庫,redis也有多個庫,我怎么進入redis集群中的第2個庫?還有,我想查看以BOSS開頭的值?redis持久化是如何實現(xiàn)(一種是RDS、一種是AOF),說一下他們有啥不一樣?

筆者回答:這個redis原理的問題又問到了,看樣子很多面試官都很關(guān)心這個redis,在上一篇文章筆者的一次面試也有這個面試問題。

【集群原理】:其實它的原理不是三兩句話能說明白的,redis 3.0版本之前是不支持集群的,官方推薦最大的節(jié)點數(shù)量為1000,至少需要3(Master)+3(Slave)才能建立集群,是無中心的分布式存儲架構(gòu),可以在多個節(jié)點之間進行數(shù)據(jù)共享,解決了Redis高可用、可擴展等問題。集群可以將數(shù)據(jù)自動切分(split)到多個節(jié)點,當集群中的某一個節(jié)點故障時,redis還可以繼續(xù)處理客戶端的請求。

【切庫】:單機情況下用select 2可以切換第2個庫,select 1可以切換第1個庫。但是集群環(huán)境下不支持select。可參考https://yq.aliyun.com/articles/69349

【redis持久化】:持久化通俗來講就是將內(nèi)存中的數(shù)據(jù)寫入硬盤中,redis提供了兩種持久化的功能(RDB、AOF),默認使用RDB的方式。

RDB:全量寫入持久化,而RDB持久化也分兩種(SAVE、BGSAVE)。

SAVE是阻塞式的RDB持久化,當執(zhí)行這個命令時redis的主進程把內(nèi)存里的數(shù)據(jù)庫狀態(tài)寫入到RDB文件(即上面的dump.rdb)中,直到該文件創(chuàng)建完畢的這段時間內(nèi)redis將不能處理任何命令請求。

BGSAVE屬于非阻塞式的持久化,它會創(chuàng)建一個子進程專門去把內(nèi)存中的數(shù)據(jù)庫狀態(tài)寫入RDB文件里,同時主進程還可以處理來自客戶端的命令請求。但子進程基本是復制的父進程,這等于兩個相同大小的redis進程在系統(tǒng)上運行,會造成內(nèi)存使用率的大幅增加。

AOF:與RDB的保存整個redis數(shù)據(jù)庫狀態(tài)不同,AOF的持久化是通過命令追加、文件寫入和文件同步三個步驟實現(xiàn)的。AOF是通過保存對redis服務端的寫命令(如set、sadd、rpush)來記錄數(shù)據(jù)庫狀態(tài)的,即保存你對redis數(shù)據(jù)庫的寫操作。

為了大家能夠更好的理解redis持久化,筆者建議大家可以看下這兩篇文章會比較好理解:

https://www.cnblogs.com/Fairy-02-11/p/6182478.html

http://blog.csdn.net/mishifangxiangdefeng/article/details/48977269

24、你在工作的過程中,遇到過你映像最深的是什么故障問題,你又是如何解決?

筆者回答:這個問題主要也是考你排查故障的思路及用到的相關(guān)命令工具,其每個人在工作中都會遇到各種各樣的問題(不管是網(wǎng)絡問題、應用配置問題、還是APP打開慢/網(wǎng)站打開慢)等等。你只要記住一個你映像最為深刻、最為典型的故障就行。筆者也遇到過各種問題,我在這里就是寫出來,怕誤導了大家。

25、在linux服務器上,不管是用rz -y命令還是tftp工具上傳,我把本地的一個文件上傳到服務器完成后,服務器上還是什么都沒有,這有可能是什么問題?

筆者回答:根據(jù)這種現(xiàn)象有可能是:服務器磁盤滿了;文件格式破壞了;或者你用的是普通用戶上傳,正好上傳的目錄沒有權(quán)限;還有可能就是你上傳的文件大小超出了該目錄空間的范圍。

26、你在工作中都寫過什么腳本?

筆者回答:這個問題的回答別把話說得太大了,要結(jié)合實際情況來回答。寫過mysql、redis、mongodb等數(shù)據(jù)庫備份的腳本;服務器文件備份的腳本;日常代碼發(fā)布的腳本;之前用nagios的時候?qū)戇^一些nagios插件的腳本。

27、rsync+inotify是實現(xiàn)文件實時同步的,加什么參數(shù)才能實現(xiàn)實時同步,--delete參數(shù)又是什么意思?

筆者回答:rsync是遠程同步工具、inotify是一種強大的異步文件系統(tǒng)系統(tǒng)監(jiān)控機制。通過inotifywait 中的-m參數(shù)可以實現(xiàn)“始終保持事件監(jiān)聽狀態(tài)”。rsync中的-delete參數(shù)是指“ 刪除那些DST中SRC沒有的文件”。

28、我想查看access.log中哪個IP訪問最多?

筆者回答:awk ‘{print $1}’ access.log| sort | uniq -c |sort -rn -k 1 | head -1

上面的具體參數(shù)如果有不知道的,大家可以自行百度一下,這里不說參數(shù)這么細節(jié)的問題

29、在linux系統(tǒng)中,一般都會有swap內(nèi)存,你覺得使用swap內(nèi)存有什么好處,在什么情況下swap內(nèi)存才會被使用?你覺得在生產(chǎn)環(huán)境中要不要用swap內(nèi)存?

筆者回答:好處:在內(nèi)存不夠用的時候,將部分內(nèi)存上的數(shù)據(jù)交換到swap空間上,以便讓系統(tǒng)不會因為內(nèi)存不夠用而導致oom或者更致命的情況出現(xiàn)。

什么情況下會用swap:當系統(tǒng)的物理內(nèi)存不夠用的時候,就需要將物理內(nèi)存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到swap空間中,等到那些程序要運行時,再從swap中恢復保存的數(shù)據(jù)到內(nèi)存中。這樣,系統(tǒng)總是在物理內(nèi)存不夠時,才進行swap交換。

30、怎么查看兩臺服務器之間的網(wǎng)絡是不是正常的,服務器是禁ping的?

筆者回答:不能用ping,那可以用telnet對方服務器的端口、或者互相訪問對方打開的服務。其它的測試方法筆者也沒想到,要是哪位朋友有好的方法不訪在下面留言討論。

31、比如我訪問百度網(wǎng)站,有什么方法可以跟蹤經(jīng)過了哪些網(wǎng)絡節(jié)點?

筆者回答:這個太簡單了吧,干運維必備的網(wǎng)絡排查技能。用tracert命令就可以跟蹤,主要是查詢本機到另一個主機經(jīng)過的路由跳數(shù)及數(shù)據(jù)延遲情況。然后你也可以把具體跟蹤后輸出的信息也說出來,你能說出來都是為你加分的。

32、如果你們公司的網(wǎng)站訪問很慢,你會如何排查?

筆者回答:看到?jīng)]有,又問到了這個問題,筆者在上一篇文章 2017年2月14號的面試中面試官也問到同樣的問題。其實這種問題都沒有具體答案,只是看你回答的內(nèi)容與面試官契合度有多高,能不能說到他想要的點上,主要是看你排查問題的思路。我是這么說的:問清楚反應的人哪個服務應用或者頁面調(diào)取哪個接口慢,叫他把頁面或相關(guān)的URL發(fā)給你,首先,最直觀的分析就是用瀏覽器按F12,看下是哪一塊的內(nèi)容過慢(DNS解析、網(wǎng)絡加載、大圖片、還是某個文件內(nèi)容等),如果有,就對癥下藥去解決(圖片慢就優(yōu)化圖片、網(wǎng)絡慢就查看內(nèi)網(wǎng)情況等)。其次,看后端服務的日志,其實大多數(shù)的問題看相關(guān)日志是最有效分析,最好用tail -f 跟蹤一下日志,當然你也要點擊測試來訪問接口日志才會打出來。最后,排除sql,,找到sql去mysql執(zhí)行一下,看看時間是否很久,如果很久,就要優(yōu)化SQL問題了,expain一下SQL看看索引情況啥的,針對性優(yōu)化。數(shù)據(jù)量太大的能分表就分表,能分庫就分庫。如果SQL沒啥問題,那可能就是寫的邏輯代碼的問題了,一行行審代碼,找到耗時的地方改造,優(yōu)化邏輯。

33、我需要查看某個時間段的日志(比如access.log日志),如何實現(xiàn)?

筆者回答:方法有很多種,比如我要看查的時間是2018年1月9號--1月10號的日志吧。

比如可以用sed命令,格式為:sed -n ‘/起始時間/,/結(jié)束時間/p’ 日志文件,如下:

sed -n ‘/09\/Jan\/2018/,/10\/Jan\/2018/p’ access.log

比如可以用grep,格式為:grep -E ‘起始時間|結(jié)束時間’ 日志文件,如下:

grep -E ‘09/Jan/2018|10/Jan/2018’ access.log

當然,你還可以結(jié)合cat、grep 、awk這些命令一起來使用都行。

2018年1月17號:更新1月8號海外面試的結(jié)果

博友們,這段時間筆者有點忙,沒有及時更新1月8號那天海外面試的結(jié)果,實在抱歉了,大家肯定也都蠻期待我上次海外的面試結(jié)果。好了,長話短說,上次說了接下來會有二面,具體是哪個國外和哪個公司我就是在這里就不寫出來了,感興趣的朋友可以單播我加我QQ或微信都行。

過了兩天,在下午3點鐘左右,筆者接到海外的二面來的電話,我們大概將近又聊了1個小時,聽面試官的聲音,他說他是做java的,要跟我二面聊一下。我心里想,二面不是人資跟我談薪資待遇、談人生理想嗎?也不管那么多了,聊就聊吧,別看這小哥是做java的,還挺能聊,幾乎把我簡歷上寫的那些技能問了個遍(什么cdn原理?、docker是什么?),這些問題我就不寫出來了,因為聊得比較粗,不像一面問的技術(shù)都那么細。聊完了相關(guān)技術(shù)之后,我就問他在那邊干了多久,生活如何。

二面的面試官在那邊生活了有3年多了,看樣子他還是比較滿意,那邊包吃包住,吃飯時間比較自由,住得還不錯,安排了單間住。地方就像國內(nèi)的二線城市那么大,環(huán)境也都很好,就是消費挺高的,比北京的消費高的不是一點點,就拿我們吃的蔬菜來說,我們國內(nèi)一斤西紅柿也就幾塊錢,那邊賣60元左右人民幣1斤,什么水果都一樣,動不動60、70、80一斤,看著這消費挺嚇人的??傮w來講,聊得還不錯,對我印象也蠻好,他說后面會安排人和我三面,總算是談錢了。第二天就接到三面的電話,聊了啥也沒啥可說的,我就直接把福利待遇和薪資分享出來吧:

吃?。喊宰?,也是住單間、吃公司食堂

薪資:到手2W人民幣/月,13薪,年底在分點紅啥的

工作時間:跟國內(nèi)一樣,也是雙休

年假:一年有20天左右?guī)侥昙?,可以回?/p>

五險一金:國外都不繳五險一金,你要自己找回內(nèi)公司代繳

機票:去工作的機票和簽證的費用報銷

最后,我要把這些情況跟媳婦反應一下,畢竟要商量著來,單身漢就無所謂可以自己做主。分析了一下利弊和自己2018年的計劃之后就委婉的拒絕了海外那邊的工作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 運維工程師
    +關(guān)注

    關(guān)注

    4

    文章

    39

    瀏覽量

    8239
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個充滿機遇和挑戰(zhàn)的領域里,如何提升自己顯得非常重要,它決定了你未來的發(fā)展方向和成就。接下來,我們起探討
    發(fā)表于 06-12 11:20

    索尼誠邀軟件工程師參與PS免費手游平臺設計

    據(jù)悉,近日,澳大利亞知名媒體TweakTown發(fā)現(xiàn),索尼互動娛樂正在為其旗下的PlayStation Studios Mobile招募一名資深的軟件工程師,負責設計PlayStation的免費手機游戲平臺。
    的頭像 發(fā)表于 05-23 17:08 ?622次閱讀

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試

    電子工程師電路
    安泰小課堂
    發(fā)布于 :2024年04月30日 17:33:15

    位硬件工程師的歷練之路:從入門學習理論到... #搞笑 #硬件工程師 #電子工程師 #揚興科技

    硬件工程師揚興科技
    揚興科技
    發(fā)布于 :2024年03月13日 17:50:21

    單片機如何通過代碼控制硬件:一名工程師的分享

    今天跟大家聊聊單片機是怎樣通過代碼來操控硬件的。作為一名單片機工程師,我們平時的工作就像是給單片機編寫“指令集”,讓它按照我們的意圖去驅(qū)動各種硬件設備。
    的頭像 發(fā)表于 03-06 14:46 ?1096次閱讀
    單片機如何通過代碼控制硬件:<b class='flag-5'>一名</b><b class='flag-5'>工程師</b>的分享

    如何搞崩個硬件工程師心態(tài)?試試對ta說這幾句

    硬件工程師
    揚興科技
    發(fā)布于 :2024年02月20日 18:05:49

    一名嵌入式工程師的漲薪經(jīng)歷

    下面是位嵌入式工程師的漲薪經(jīng)歷,希望可以幫助到你,幫到其他的在校學生。 ? 階段 1 大到大三這個階段我與大多數(shù)學生相同: ? 、學習
    的頭像 發(fā)表于 01-05 08:39 ?346次閱讀

    優(yōu)秀電源工程師的必備技能大揭秘!

    隨著電源市場的不斷擴張,開關(guān)電源行業(yè)飛速發(fā)展,企業(yè)對電源工程師的需求日益增加,對電源工程師的技能要求也日漸提高,相信沒有位電源工程師會錯過讓自己變得更優(yōu)秀的機會。作為
    的頭像 發(fā)表于 12-19 08:23 ?1478次閱讀
    優(yōu)秀電源<b class='flag-5'>工程師</b>的必備技能大揭秘!

    #人工智能 #FPGA 怎么成為個合格的FPGA工程師?

    fpga工程師
    明德?lián)P助教小易老師
    發(fā)布于 :2023年12月18日 21:19:01

    硬件工程師經(jīng)典面試題詳解

    硬件工程師經(jīng)典面試題詳解
    的頭像 發(fā)表于 11-20 15:08 ?1172次閱讀
    硬件<b class='flag-5'>工程師</b>經(jīng)典<b class='flag-5'>面試</b>題詳解

    如何成為一名優(yōu)秀的嵌入式工程師?

    如何成為一名優(yōu)秀的嵌入式工程師?嵌入式學習的第步,首先是C語言。 1.理解內(nèi)存管理:C語言不同于高級語言,它不會自動管理內(nèi)存。因此,你需要理解并掌握如何使用malloc()、free()等函數(shù)
    發(fā)表于 11-07 15:36

    ?硬件工程師就業(yè)前景和未來發(fā)展方向

    大家好,我是硬件花園,一名樂于分享的硬件工程師。關(guān)注我,了解更多精彩內(nèi)容! 硬件工程師的就業(yè)前景和發(fā)展方向有很多,以下是我整理出來的些常見的發(fā)展方向: 1. 技術(shù)層面 硬件
    的頭像 發(fā)表于 10-20 08:43 ?3208次閱讀

    【社區(qū)之星】彭仲:扎實的基本功與時間的沉淀才是工程師成功的關(guān)鍵!

    入了電子行業(yè)。 社區(qū)小助手:作為一名從業(yè)多年的工程師,能否分享你的工作經(jīng)歷些比較成功的工程項目或優(yōu)秀作品?開發(fā)這個產(chǎn)品的整個過程,有什么
    發(fā)表于 10-13 14:15