大拿教你如何面試Get高薪
2018年1月4號面試
筆者其實(shí)沒有想到去面試,只是在智聯(lián)上更新了一下簡歷,就陸陸續(xù)續(xù)接到很多獵頭的郵件和電話,實(shí)在是沒準(zhǔn)備好要去面試,就推掉了幾家公司的面試了。正因?yàn)楣P者也很久沒有面試了,筆者也想去面試學(xué)習(xí)一下,閑話少說,下面就分享給大家筆者在2018年1月4號上午10點(diǎn)30分的面試經(jīng)歷:
首先,獵頭或者公司人資會把公司的介紹及崗位要求發(fā)到你郵箱(或者QQ、微信),下面這份是獵頭發(fā)給我的崗位說明,為了職業(yè)道德操守,公司的介紹和面試通知信息我就不貼出來了,我就把崗位要求貼出來:
職位描述:
1、 負(fù)責(zé)應(yīng)用服務(wù)器的安裝、配置、優(yōu)化與維護(hù);
2、 負(fù)責(zé)應(yīng)用系統(tǒng)的日志信息備份、管理、維護(hù)與分析;
3、 負(fù)責(zé)應(yīng)用系統(tǒng)的日常監(jiān)測于維護(hù)、故障處理、性能分析與優(yōu)化;
4、 負(fù)責(zé)應(yīng)用部署系統(tǒng)、環(huán)境配置系統(tǒng)、監(jiān)控系統(tǒng)的開發(fā)、部署、升級與維護(hù),建設(shè)高性能的運(yùn)維平臺。
崗位要求:
1、 熟悉Linux操作系統(tǒng)的基礎(chǔ)知識,熟練使用Linux常用操作命令;
2、 熟練配置Nginx、HAproxy 等應(yīng)用相關(guān)軟件的部署、配置與優(yōu)化維護(hù);
3、 熟悉網(wǎng)絡(luò)基礎(chǔ)知識、熟悉TCP/IP的工作原理,會配交換機(jī)或路由器,能熟練的對網(wǎng)絡(luò)情況進(jìn)行分析
4、 熟悉shell/perl/python中的一種或多種進(jìn)行運(yùn)維程序的開發(fā);
5、 熟悉Nagios,Ganglia等監(jiān)控軟件
看著上面的要求大家是不是覺得要求也不高啊,你要細(xì)看就會發(fā)現(xiàn),這家公司要求的還挺多,不僅要會網(wǎng)絡(luò)知識(熟悉TCP/IP好像是每家單位的都會寫這樣的要求),還要會開發(fā)技能。相信很多做運(yùn)維的兄弟在網(wǎng)絡(luò)這一塊是個(gè)頭疼的事情,都對交換機(jī)和路由器不怎么會配置和管理。
然后,筆者詳細(xì)了解他們公司,了解崗位要求,在突擊復(fù)習(xí)一下可能會問到的知識點(diǎn)和技術(shù)點(diǎn)。到了面試的這天時(shí)間,早早的起床,把牙一定要刷干凈,特別是有口臭的兄弟,***準(zhǔn)備點(diǎn)口香糖,到達(dá)面試公司前嚼塊口香糖,以免因?yàn)榭跉獾脑蜓矫嬖嚬?,讓你在面試官心里減分。早點(diǎn)要記得吃,如果你是下午面試的話也要吃午飯,吃早點(diǎn)了精氣神就有了。還要注意,帶上你的簡歷和一支筆,雖然他們那邊也會有你的簡歷,為了以防萬一還是準(zhǔn)備好簡歷。
***,關(guān)鍵點(diǎn)來了,就是和面試官溝通了,有筆試的公司會讓你做些面試題,沒有筆試就直接和面試官聊了,下面是我和面試官溝通完之后記住的一些問題,分享給大家看一下,筆者一共記住了7個(gè)問題,好像還有兩個(gè)問題實(shí)在想不起來了,如果大家有更恰當(dāng)?shù)幕卮鹨欢ㄒN出來一起探討和進(jìn)步:
1、介紹下自己?(幾乎每家公司首先都會讓你做個(gè)自我介紹,好像是必修課一樣)
筆者回答:此處省略筆者的自我介紹,筆者建議介紹自己的時(shí)間不宜過長,3-4分鐘為宜,說多了面試官會覺得你太啰嗦了。說太少了也不行,那樣會讓人感覺你的經(jīng)歷太簡單了、太空了。正常情況下,一般你在做自我介紹的同時(shí),面試官這個(gè)時(shí)候在看你的簡歷,他需要一邊看簡歷、一邊聽你介紹自己,如果你說個(gè)幾句話就把自己介紹完了,他肯定還沒緩過神來,對你的映像會減分的。在介紹的同時(shí)思維要清晰,邏輯要清楚,***是根據(jù)你簡歷上寫的經(jīng)歷來介紹,這樣可以把面試官的思路帶到你這里來,讓他思路跟著你走。不要東扯一句,西扯一句。竟量少介紹自己的性格、愛好(***能不說就不說),你可以簡單羅列干過幾家公司(最多羅列3家公司/也包含目前所在的公司,注意順序不要亂),都在那幾家公司負(fù)責(zé)什么工作,都用過什么技術(shù),在著重介紹一下你目前所在的公司是負(fù)責(zé)哪些工作的,可以稍微詳細(xì)一點(diǎn)介紹,不要讓面試官聽著暈頭轉(zhuǎn)向的感覺。
2、灰度發(fā)布如何實(shí)現(xiàn)?
筆者回答:其實(shí)對這個(gè)問題筆者也答的不好,就不寫出來誤導(dǎo)大家了。大家有好的方法可以共享出來。
3、Mongodb熟悉嗎,一般部署幾臺?
筆者回答:部署過,沒有深入研究過,一般mongodb部署主從、或者mongodb分片集群;建議3臺或5臺服務(wù)器來部署。MongoDB分片的基本思想就是將集合切分成小塊。這些塊分散到若干片里面,每個(gè)片只負(fù)責(zé)總數(shù)據(jù)的一部分。對于客戶端來說,無需知道數(shù)據(jù)被拆分了,也無需知道服務(wù)端哪個(gè)分片對應(yīng)哪些數(shù)據(jù)。數(shù)據(jù)在分片之前需要運(yùn)行一個(gè)路由進(jìn)程,進(jìn)程名為mongos。這個(gè)路由器知道所有數(shù)據(jù)的存放位置,知道數(shù)據(jù)和片的對應(yīng)關(guān)系。對客戶端來說,它僅知道連接了一個(gè)普通的mongod,在請求數(shù)據(jù)的過程中,通過路由器上的數(shù)據(jù)和片的對應(yīng)關(guān)系,路由到目標(biāo)數(shù)據(jù)所在的片上,如果請求有了回應(yīng),路由器將其收集起來回送給客戶端。
4、如何發(fā)布和回滾,用jenkins又是怎么實(shí)現(xiàn)?
筆者回答:發(fā)布:jenkins配置好代碼路徑(SVN或GIT),然后拉代碼,打tag。需要編譯就編譯,編譯之后推送到發(fā)布服務(wù)器(jenkins里面可以調(diào)腳本),然后從分發(fā)服務(wù)器往下分發(fā)到業(yè)務(wù)服務(wù)器上。
回滾:按照版本號到發(fā)布服務(wù)器找到對應(yīng)的版本推送
5、Tomcat工作模式?
筆者回答:Tomcat是一個(gè)JSP/Servlet容器。其作為Servlet容器,有三種工作模式:獨(dú)立的Servlet容器、進(jìn)程內(nèi)的Servlet容器和進(jìn)程外的Servlet容器。
進(jìn)入Tomcat的請求可以根據(jù)Tomcat的工作模式分為如下兩類:
Tomcat作為應(yīng)用程序服務(wù)器:請求來自于前端的web服務(wù)器,這可能是Apache, IIS, Nginx等;
Tomcat作為獨(dú)立服務(wù)器:請求來自于web瀏覽器;
6、監(jiān)控用什么實(shí)現(xiàn)的?
筆者回答:現(xiàn)在公司的業(yè)務(wù)都跑在阿里云上,我們***的監(jiān)控就是用阿里云監(jiān)控,阿里云監(jiān)控自帶了ECS、RDS等服務(wù)的監(jiān)控模板,可結(jié)合自定義報(bào)警規(guī)則來觸發(fā)監(jiān)控項(xiàng)。上家公司的業(yè)務(wù)是托管在IDC,用的是zabbix監(jiān)控方案,zabbix圖形界面豐富,也自帶很多監(jiān)控模板,特別是多個(gè)分區(qū)、多個(gè)網(wǎng)卡等自動(dòng)發(fā)現(xiàn)并進(jìn)行監(jiān)控做得非常不錯(cuò),不過需要在每臺客戶機(jī)(被監(jiān)控端)安裝zabbix agent。
7、你是怎么備份數(shù)據(jù)的,包括數(shù)據(jù)庫備份?
筆者回答:在生產(chǎn)環(huán)境下,不管是應(yīng)用數(shù)據(jù)、還是數(shù)據(jù)庫數(shù)據(jù)首先在部署的時(shí)候就會有主從架構(gòu)、或者集群,這本身就是屬于數(shù)據(jù)的熱備份;其實(shí)考慮冷備份,用專門一臺服務(wù)器做為備份服務(wù)器,比如可以用rsync+inotify配合計(jì)劃任務(wù)來實(shí)現(xiàn)數(shù)據(jù)的冷備份,如果是發(fā)版的包備份,正常情況下有臺發(fā)布服務(wù)器,每次發(fā)版都會保存好發(fā)版的包。
總結(jié)一下面試注意幾點(diǎn)事項(xiàng),可能筆者也說得不太對,為了我們運(yùn)維工作的兄弟們都能拿到高薪,大家一定要指證出來一起進(jìn)步、一起探討:
***,你要對自己的簡歷很熟悉,簡歷上的寫的技能自己一定要能說出個(gè)一二,因?yàn)槊嬖嚬俚暮芏鄦栴}都會挑你簡歷上寫的問。比如你簡歷上寫了這么一條技能“熟悉mysql數(shù)據(jù)庫的部署安裝及原理”。你即然寫了這么一條技能,你在怎么不熟悉你也要了解mysql的原理,能說出個(gè)大概意思。萬一面試官問到了你寫的這一條,你都答不上來,那在他心里你又減分了,基本上這次面試希望不大。
第二,如果面試官問到你不會的問題,你就說這個(gè)不太熟悉,沒有具體研究過,千萬別不懂裝懂,還扯一堆沒用的話題來掩飾,這樣只會讓面試官反感你。
第三,準(zhǔn)備充分,竟可能多的記住原理性的知識,一般面試問的多的就是原理。很少問具體的配置文件是怎么配置的。面試前也要了解清楚“職位描述”和“崗位要求”,雖然有時(shí)候大多數(shù)不會問到崗位要求的問題,但也要了解和熟悉。
第四,面試完后一定要總結(jié),盡量記住面試官問的每一個(gè)問題,回去記錄下來,如果問到不會的問題,事后要立馬查百度或者找朋友搞清楚、弄明白,這樣你才能記勞,下次面試說不定又問到同樣的問題。
問完之后,面試官就跟我聊薪資待遇了,問我多少錢能達(dá)到自己的要求,我就不便透露了,可以私聊,哈哈,后續(xù)筆者會陸陸續(xù)續(xù)更新以前面試的經(jīng)歷和問題,有需要的朋友可以轉(zhuǎn)載或者收藏起來一起討論。
2017年2月24號面試
基于大家熱情高昂的氣氛,筆者又花了一個(gè)下午的時(shí)間回憶并整理在2017年2月24號筆者在東三環(huán)邊上(快到東四環(huán)了,沒有地鐵過去,到了四惠還要轉(zhuǎn)公交車)的一家傳媒公司的面試經(jīng)歷,還好筆者有做筆記的習(xí)慣,把之前面試的問題都記錄在案,這一次的面試筆者可是記憶猶新,因?yàn)檫@次這家公司都跟筆者發(fā)offer了,實(shí)在是真心不想去這家公司就找原因推掉了,大家可別學(xué)我這么不靠譜。下面是這家公司中的崗位要求說明:
崗位職責(zé):
1、負(fù)責(zé)公司產(chǎn)品的版本控制、構(gòu)建和發(fā)布管理;
2、負(fù)責(zé)公司統(tǒng)一配置庫管理工作,權(quán)限管理與分配準(zhǔn)確及時(shí),定期完成配置備份;
3、負(fù)責(zé)公司內(nèi)部開發(fā)/測試服務(wù)器的運(yùn)行管理工作;
4、負(fù)責(zé)Linux操作系統(tǒng)的安裝、配置、監(jiān)控和維護(hù)、問題處理、軟件升級、 數(shù)據(jù)備份、應(yīng)急響應(yīng)、故障排除等、保證線上環(huán)境的穩(wěn)定運(yùn)行;
5、負(fù)責(zé)支撐平臺24×7穩(wěn)定運(yùn)行,并進(jìn)行前瞻性容量規(guī)劃;
6、負(fù)責(zé)公司機(jī)房服務(wù)器日常維護(hù)及網(wǎng)絡(luò)系統(tǒng)安裝、部署、維護(hù)工作。
崗位要求:
1、計(jì)算機(jī)相關(guān)專業(yè)本科及以上學(xué)歷,2年以上運(yùn)維或配置管理工作經(jīng)驗(yàn);
2、至少熟悉一種監(jiān)控系統(tǒng)搭建,如Nagios/Zabbix/等;
3、至少熟悉一種集群管理工具,如Ansible/SaltStack等;
4、有使用集成發(fā)布工具發(fā)布構(gòu)建經(jīng)驗(yàn)優(yōu)先。比如:bamboo或者Jenkins;
5、熟悉Unix/Linux操作系統(tǒng),熟悉Weblogic/tomcat等中間件,能夠編寫shell腳本,熟悉軟件開發(fā)過程及過程產(chǎn)品,有一定的網(wǎng)絡(luò)基礎(chǔ);
6、熟悉rsyslog, flume等日志收集和處理系統(tǒng);
7、具有強(qiáng)烈的安全意識及較強(qiáng)的溝通協(xié)調(diào)和學(xué)習(xí)能力,良好的團(tuán)隊(duì)合作精神,工作積極主動(dòng)。
過去之后,前臺美眉把我?guī)У剿麄児镜牡叵率?,我掃視了一下周圍的環(huán)境,貌似旁邊就是機(jī)房,因?yàn)槲衣牭椒?wù)器的聲音。等了幾分鐘,面試官下來了,面試官目測比較瘦,看著跟我身材差不多(應(yīng)該不到120),他說他是負(fù)責(zé)運(yùn)維部的,然后開始就叫我先自我介紹,都是一個(gè)套路,免不了介紹的,所以兄弟們一定要把自我介紹練好。然后開始問我問題了,跟面試官聊得還行,問我應(yīng)該有不下10個(gè)以上的問題,我記住了下面有10個(gè)問題:
1、LVS負(fù)載的原理,和Nginx負(fù)載有啥區(qū)別?
筆者回答:這個(gè)問題我覺得面試官司沒問好,正常都會這么問“LVS有哪些負(fù)載均衡技術(shù)和調(diào)度算法?"。我回答就是按我說的這種問法回答的,反正他也頻繁點(diǎn)頭,當(dāng)然,筆者回答的可能沒有下面我整理出來的那么詳細(xì),大概意思我都說明白了。
LVS是Liunx虛擬服務(wù)器的簡稱,利用LVS提供的負(fù)載均衡技術(shù)和linux操作系統(tǒng)可實(shí)現(xiàn)高性能、高可用的服務(wù)器集群,一般LVS都是位于整個(gè)集群系統(tǒng)的最前端,由一臺或者多臺負(fù)載調(diào)度器(Director Server)組成,分發(fā)給應(yīng)用服務(wù)器(Real Server)。它是工作在4層(也就是TCP/IP中的傳輸層),LVS是基于IP負(fù)載均衡技術(shù)的IPVS模塊來實(shí)現(xiàn)的,IPVS實(shí)現(xiàn)負(fù)載均衡機(jī)制有三種,分別是NAT、TUN和DR,詳述如下:
VS/NAT: 即(Virtual Server via Network Address Translation)
也就是網(wǎng)絡(luò)地址翻譯技術(shù)實(shí)現(xiàn)虛擬服務(wù)器,當(dāng)用戶請求到達(dá)調(diào)度器時(shí),調(diào)度器將請求報(bào)文的目標(biāo)地址(即虛擬IP地址)改寫成選定的Real Server地址,同時(shí)報(bào)文的目標(biāo)端口也改成選定的Real Server的相應(yīng)端口,***將報(bào)文請求發(fā)送到選定的Real Server。在服務(wù)器端得到數(shù)據(jù)后,Real Server返回?cái)?shù)據(jù)給用戶時(shí),需要再次經(jīng)過負(fù)載調(diào)度器將報(bào)文的源地址和源端口改成虛擬IP地址和相應(yīng)端口,然后把數(shù)據(jù)發(fā)送給用戶,完成整個(gè)負(fù)載調(diào)度過程。
可以看出,在NAT方式下,用戶請求和響應(yīng)報(bào)文都必須經(jīng)過Director Server地址重寫,當(dāng)用戶請求越來越多時(shí),調(diào)度器的處理能力將稱為瓶頸。
VS/TUN :即(Virtual Server via IP Tunneling)
也就是IP隧道技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT方式一樣,只是它的報(bào)文轉(zhuǎn)發(fā)方法不同,VS/TUN方式中,調(diào)度器采用IP隧道技術(shù)將用戶請求轉(zhuǎn)發(fā)到某個(gè)Real Server,而這個(gè)Real Server將直接響應(yīng)用戶的請求,不再經(jīng)過前端調(diào)度器,此外,對Real Server的地域位置沒有要求,可以和Director Server位于同一個(gè)網(wǎng)段,也可以是獨(dú)立的一個(gè)網(wǎng)絡(luò)。因此,在TUN方式中,調(diào)度器將只處理用戶的報(bào)文請求,集群系統(tǒng)的吞吐量大大提高。
VS/DR: 即(Virtual Server via Direct Routing)
也就是用直接路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,但它的報(bào)文轉(zhuǎn)發(fā)方法又有不同,VS/DR通過改寫請求報(bào)文的MAC地址,將請求發(fā)送到Real Server,而Real Server將響應(yīng)直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負(fù)載調(diào)度機(jī)制中性能******的,但是必須要求Director Server與Real Server都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。
回答負(fù)載調(diào)度算法,IPVS實(shí)現(xiàn)在八種負(fù)載調(diào)度算法,我們常用的有四種調(diào)度算法(輪叫調(diào)度、加權(quán)輪叫調(diào)度、最少鏈接調(diào)度、加權(quán)最少鏈接調(diào)度)。一般說了這四種就夠了,也不會需要你詳細(xì)解釋這四種算法的。你只要把上面3種負(fù)載均衡技術(shù)講明白面試官就對這道問題很滿意了。接下來你在簡單說下與nginx的區(qū)別:
LVS的優(yōu)點(diǎn):
抗負(fù)載能力強(qiáng)、工作在第4層僅作分發(fā)之用,沒有流量的產(chǎn)生,這個(gè)特點(diǎn)也決定了它在負(fù)載均衡軟件里的性能***的;無流量,同時(shí)保證了均衡器IO的性能不會受到大流量的影響;
工作穩(wěn)定,自身有完整的雙機(jī)熱備方案,如LVS+Keepalived和LVS+Heartbeat;
應(yīng)用范圍比較廣,可以對所有應(yīng)用做負(fù)載均衡;
配置性比較低,這是一個(gè)缺點(diǎn)也是一個(gè)優(yōu)點(diǎn),因?yàn)闆]有可太多配置的東西,所以并不需要太多接觸,大大減少了人為出錯(cuò)的幾率。
LVS的缺點(diǎn):
軟件本身不支持正則處理,不能做動(dòng)靜分離,這就凸顯了Nginx/HAProxy+Keepalived的優(yōu)勢。
如果網(wǎng)站應(yīng)用比較龐大,LVS/DR+Keepalived就比較復(fù)雜了,特別是后面有Windows Server應(yīng)用的機(jī)器,實(shí)施及配置還有維護(hù)過程就比較麻煩,相對而言,Nginx/HAProxy+Keepalived就簡單一點(diǎn)
Nginx的優(yōu)點(diǎn):
- 工作在OSI第7層,可以針對http應(yīng)用做一些分流的策略。比如針對域名、目錄結(jié)構(gòu)。它的正則比HAProxy更為強(qiáng)大和靈活;
- Nginx對網(wǎng)絡(luò)的依賴非常小,理論上能ping通就就能進(jìn)行負(fù)載功能,這個(gè)也是它的優(yōu)勢所在;
- Nginx安裝和配置比較簡單,測試起來比較方便;
- 可以承擔(dān)高的負(fù)載壓力且穩(wěn)定,一般能支撐超過幾萬次的并發(fā)量;
- Nginx可以通過端口檢測到服務(wù)器內(nèi)部的故障,比如根據(jù)服務(wù)器處理網(wǎng)頁返回的狀態(tài)碼、超時(shí)等等,并且會把返回錯(cuò)誤的請求重新提交到另一個(gè)節(jié)點(diǎn);
- Nginx不僅僅是一款優(yōu)秀的負(fù)載均衡器/反向代理軟件,它同時(shí)也是功能強(qiáng)大的Web應(yīng)用服務(wù)器。LNMP現(xiàn)在也是非常流行的web環(huán)境,大有和LAMP環(huán)境分庭抗禮之勢,Nginx在處理靜態(tài)頁面、特別是抗高并發(fā)方面相對apache有優(yōu)勢;
- Nginx現(xiàn)在作為Web反向加速緩存越來越成熟了,速度比傳統(tǒng)的Squid服務(wù)器更快,有需求的朋友可以考慮用其作為反向代理加速器;
Nginx的缺點(diǎn):
- Nginx不支持url來檢測。
Nginx僅能支持http和Email,這個(gè)它的弱勢。
- Nginx的Session的保持,Cookie的引導(dǎo)能力相對欠缺。
2、redis集群的原理,redis分片是怎么實(shí)現(xiàn)的,你們公司redis用在了哪些環(huán)境?
筆者回答:reids集群原理:
其實(shí)它的原理不是三兩句話能說明白的,redis 3.0版本之前是不支持集群的,官方推薦***的節(jié)點(diǎn)數(shù)量為1000,至少需要3(Master)+3(Slave)才能建立集群,是無中心的分布式存儲架構(gòu),可以在多個(gè)節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)共享,解決了Redis高可用、可擴(kuò)展等問題。集群可以將數(shù)據(jù)自動(dòng)切分(split)到多個(gè)節(jié)點(diǎn),當(dāng)集群中的某一個(gè)節(jié)點(diǎn)故障時(shí),redis還可以繼續(xù)處理客戶端的請求。
redis分片:
分片(partitioning)就是將你的數(shù)據(jù)拆分到多個(gè) Redis 實(shí)例的過程,這樣每個(gè)實(shí)例將只包含所有鍵的子集。當(dāng)數(shù)據(jù)量大的時(shí)候,把數(shù)據(jù)分散存入多個(gè)數(shù)據(jù)庫中,減少單節(jié)點(diǎn)的連接壓力,實(shí)現(xiàn)海量數(shù)據(jù)存儲。分片部署方式一般分為以下三種:
(1)在客戶端做分片;這種方式在客戶端確定要連接的redis實(shí)例,然后直接訪問相應(yīng)的redis實(shí)例;
(2)在代理中做分片;這種方式中,客戶端并不直接訪問redis實(shí)例,它也不知道自己要訪問的具體是哪個(gè)redis實(shí)例,而是由代理轉(zhuǎn)發(fā)請求和結(jié)果;其工作過程為:客戶端先將請求發(fā)送給代理,代理通過分片算法確定要訪問的是哪個(gè)redis實(shí)例,然后將請求發(fā)送給相應(yīng)的redis實(shí)例,redis實(shí)例將結(jié)果返回給代理,代理***將結(jié)果返回給客戶端。
(3)在redis服務(wù)器端做分片;這種方式被稱為“查詢路由”,在這種方式中客戶端隨機(jī)選擇一個(gè)redis實(shí)例發(fā)送請求,如果所請求的內(nèi)容不再當(dāng)前redis實(shí)例中它會負(fù)責(zé)將請求轉(zhuǎn)交給正確的redis實(shí)例,也有的實(shí)現(xiàn)中,redis實(shí)例不會轉(zhuǎn)發(fā)請求,而是將正確redis的信息發(fā)給客戶端,由客戶端再去向正確的redis實(shí)例發(fā)送請求。
redis用在了哪些環(huán)境:
java、php環(huán)境用到了redis,主要緩存有登錄用戶信息數(shù)據(jù)、設(shè)備詳情數(shù)據(jù)、會員簽到數(shù)據(jù)等
3、你會怎么統(tǒng)計(jì)當(dāng)前訪問的IP,并排序?
筆者回答:統(tǒng)計(jì)用戶的訪問IP,用awk結(jié)合uniq、sort過濾access.log日志就能統(tǒng)計(jì)并排序好。一般這么回答就夠了,當(dāng)然你還可以說出其它方式來統(tǒng)計(jì),這都是你的加分項(xiàng)。
4、你會使用哪些虛擬化技術(shù)?
筆者回答:vmware vsphere及kvm,我用得比較多的是vmware vsphere虛擬化,幾本上生產(chǎn)環(huán)境都用的vmware vsphere,kvm我是用在測試環(huán)境中使用。vmware 是屬于原生架構(gòu)虛擬化技術(shù),也就是可直接在硬件上運(yùn)行。kvm屬于寄居架構(gòu)的虛擬化技術(shù),它是依托在系統(tǒng)之上運(yùn)行。vmware vcenter
管理上比較方便,圖形管理界面功能很強(qiáng)大,穩(wěn)定性強(qiáng),一般比較適合企業(yè)使用。KVM管理界面稍差點(diǎn),需要管理人員花費(fèi)點(diǎn)時(shí)間學(xué)習(xí)它的維護(hù)管理技術(shù)。
5、假如有人反應(yīng),調(diào)取后端接口時(shí)特別慢,你會如何排查?
筆者回答:其實(shí)這種問題都沒有具體答案,只是看你回答的內(nèi)容與面試官契合度有多高,能不能說到他想要的點(diǎn)上,主要是看你排查問題的思路。我是這么說的:問清楚反應(yīng)的人哪個(gè)服務(wù)應(yīng)用或者頁面調(diào)取哪個(gè)接口慢,叫他把頁面或相關(guān)的URL發(fā)給你,首先,最直觀的分析就是用瀏覽器按F12,看下是哪一塊的內(nèi)容過慢(DNS解析、網(wǎng)絡(luò)加載、大圖片、還是某個(gè)文件內(nèi)容等),如果有,就對癥下藥去解決(圖片慢就優(yōu)化圖片、網(wǎng)絡(luò)慢就查看內(nèi)網(wǎng)情況等)。其次,看后端服務(wù)的日志,其實(shí)大多數(shù)的問題看相關(guān)日志是最有效分析,***用tail -f 跟蹤一下日志,當(dāng)然你也要點(diǎn)擊測試來訪問接口日志才會打出來。***,排除sql,,找到sql去mysql執(zhí)行一下,看看時(shí)間是否很久,如果很久,就要優(yōu)化SQL問題了,expain一下SQL看看索引情況啥的,針對性優(yōu)化。數(shù)據(jù)量太大的能分表就分表,能分庫就分庫。如果SQL沒啥問題,那可能就是寫的邏輯代碼的問題了,一行行審代碼,找到耗時(shí)的地方改造,優(yōu)化邏輯。
6、mysql數(shù)據(jù)庫用的是主從讀寫分離,主庫寫,從庫讀,假如從庫無法讀取了、或者從庫讀取特別慢,你會如何解決?
筆者回答:這個(gè)問題筆者覺得回答的不太好,對mysql比較在行的朋友希望能給點(diǎn)建議。以解決問題為前提條件,先添加從庫數(shù)量,臨時(shí)把問題給解決,然后抓取slow log ,分析sql語句,該優(yōu)化就優(yōu)化處理。慢要不就是硬件跟不上,需要升級;要不就是軟件需要調(diào)試優(yōu)化,等問題解決在細(xì)化。
7、cpu單核和多核有啥區(qū)別?
筆者回答:很少有面試官會問這樣的問題,即然問到了,也要老實(shí)回答。還好筆者之前了解過CPU,我是這么說的:雙核CPU就是能處理多份任務(wù),順序排成隊(duì)列來處理。單核CPU一次處理一份任務(wù),輪流處理每個(gè)程序任務(wù)。雙核的優(yōu)勢不是頻率,而是對付同時(shí)處理多件事情。單核同時(shí)只能干一件事,比如你同時(shí)在后臺BT下載,前臺一邊看電影一邊拷貝文件一邊QQ。
8、機(jī)械磁盤和固態(tài)硬盤有啥區(qū)別?
筆者回答:我擦,啥年代了,還問磁盤的問題,這面試官有點(diǎn)逗啊。那也要回答?。?/p>
HDD代表機(jī)械硬盤,SSD代表固態(tài)硬盤。首先,從性能方面來說,固態(tài)硬盤幾乎完勝機(jī)械硬盤,固態(tài)硬盤的讀寫速度肯定要快機(jī)械硬盤,因?yàn)楣虘B(tài)硬盤和機(jī)械硬盤的構(gòu)造是完全不同的(具體的構(gòu)造就沒必要解釋了)。其次,固態(tài)盤幾乎沒有噪音、而機(jī)械盤噪音比較大。還有就是,以目前的市場情況來看,一般機(jī)械盤容量大,價(jià)格低;固態(tài)盤容量小,價(jià)格偏高。但是企業(yè)還是***固態(tài)盤。
9、說一下用過哪些監(jiān)控系統(tǒng)?
筆者回答:這個(gè)監(jiān)控的問題又問到了,筆者在2018年1月4號也被問到類似這樣的問題,筆者曾經(jīng)用過zabbix、nagios、 cacit等。但是在這次面試中只說用過zabbix和nagios。說完了之后,面試官就讓我說一下這兩個(gè)監(jiān)控有啥區(qū)別:
從web功能及畫圖來講:
Nagios簡單直觀,報(bào)警與數(shù)據(jù)都在同一頁面, 紅色即為問題項(xiàng)。Nagios web端不要做任何配置。Nagios需要額外安裝插件,且插件畫圖不夠美觀。
Zabbix監(jiān)控?cái)?shù)據(jù)與報(bào)警是分開的,查看問題項(xiàng)需要看觸發(fā)器,查看數(shù)據(jù)在***數(shù)據(jù)查看。而且zabbix有很多其它配置項(xiàng),zabbix攜帶畫圖功能,且能手動(dòng)把多個(gè)監(jiān)控項(xiàng)集在一個(gè)圖中展示。
從監(jiān)控服務(wù)來講:
Nagios自帶的監(jiān)控項(xiàng)很少。對一些變動(dòng)的如多個(gè)分區(qū)、多個(gè)網(wǎng)卡進(jìn)行監(jiān)控時(shí)需要手動(dòng)配置。
Zabbix自帶了很多監(jiān)控內(nèi)容,感覺zabbix一開始就為你做了很多事,特別是對多個(gè)分區(qū)、多個(gè)網(wǎng)卡等自動(dòng)發(fā)現(xiàn)并進(jìn)行監(jiān)控時(shí),那一瞬間很驚喜,很省心的感覺。
從批量配置和報(bào)警來講:
Nagios對于批量監(jiān)控主機(jī),需要用腳本在server端新增host,并拷貝service文件。 Nagios用腳本來修改所有主機(jī)的services文件,加入新增服務(wù)。
Zabbix在server端配置自動(dòng)注冊規(guī)則,配置好規(guī)則后,后續(xù)新增client端不需要對server端進(jìn)行操作。Zabbix只需手動(dòng)在模板中新增一監(jiān)控項(xiàng)即可。
總體來講:
Nagios要花很多時(shí)間寫插件,Zabbix要花很多時(shí)間探索功能。
Nagios更易上手,Nagios兩天弄會,Zabbix兩周弄會。
Zabbix畫圖功能比Nagios更強(qiáng)大
Zabbix對于批量監(jiān)控與服務(wù)更改,操作更簡潔;Nagios如果寫好自動(dòng)化腳本后,也很簡單,問題在于寫自動(dòng)化腳本很費(fèi)神。
10、給你一套環(huán)境,你會如何設(shè)計(jì)高可用、高并發(fā)的架構(gòu)?
筆者回答:
如果這套環(huán)境是部署在云端(比如阿里云),你就不用去考慮硬件設(shè)計(jì)的問題??芍苯由习⒗镌频腟LB+ECS+RDS這套標(biāo)準(zhǔn)的高可用、高并發(fā)的架構(gòu)。對外服務(wù)直接上SLB負(fù)載均衡技術(shù),由阿里的SLB分發(fā)到后端的ECS主機(jī);ECS主機(jī)部署多臺,應(yīng)用拆分在不同的ECS主機(jī)上,盡量細(xì)分服務(wù)。數(shù)據(jù)庫用RDS高可用版本(一主一備的經(jīng)典高可用架構(gòu))、或者用RDS金融版(一主兩備的三節(jié)點(diǎn)架構(gòu))。在結(jié)合阿里其它的服務(wù)就完全OK,業(yè)務(wù)量上來了,主機(jī)不夠用了,直橫向擴(kuò)容ECS主機(jī)搞定。
如果這套環(huán)境托管在IDC,那么你就要從硬件、軟件(應(yīng)用服務(wù))雙面去考慮了。硬件要達(dá)到高可用、高并發(fā)公司必須買多套網(wǎng)絡(luò)硬件設(shè)備(比如負(fù)載設(shè)備F5、防火墻、核心層交換、接入層交換)都必須要冗余,由其是在網(wǎng)絡(luò)設(shè)計(jì)上,設(shè)備之間都必須有雙線連接。設(shè)備如果都是跑的單機(jī),其中一個(gè)設(shè)備掛了,你整個(gè)網(wǎng)絡(luò)都癱瘓了,就談不上高可用、高并發(fā)了。其次在是考慮應(yīng)用服務(wù)了,對外服務(wù)我會采用成熟的開源方案LVS+Keepalived或者Nginx+Keepalived,緩存層可以考慮redis集群及Mongodb集群,中間件等其它服務(wù)可以用kafka、zookeeper,圖片存儲可以用fastDFS或MFS,如果數(shù)據(jù)量大、又非常多,那么可采用hadoop這一套方案。后端數(shù)據(jù)庫可采用 “主從+MHA”。這樣一套環(huán)境下來是絕對滿足高可用、高并發(fā)的架構(gòu)。