今天給你們分享我曾經在愛奇藝的面試,過程仍是比較有意思的,能夠給你們一些參考前端
嗲妹妹:你好,我是愛奇藝的HR,咱們正在招聘運維開發崗位,請問您最近有在看工做機會嗎?python
我:(這聲音也太酥了吧我去……)嗯,你好,信號不太好,能在說下嗎?(讓我再酥一次吧)nginx
嗲妹妹:(重複)web
我:(我去,真的好酥啊)啊聽到了,嗯,最近有在看 (不看機會,就沒機會聊下去了啊)面試
嗲妹妹:嗯嗯,那簡單的介紹一下,……,公司在xxx,你看何時方便過來一次嗎?算法
我:能夠能夠,那就約在周xx吧,我應該能夠,那天是你本人接見我嗎?(臥槽……情不自禁的就問出去了……)api
嗲妹妹:固然是啦,我會全程負責你的此次面試(沒有此次面試幾個字多好?)的,好呀,那咱們周xx見咯,拜拜~瀏覽器
我:嗯……(快不行了……)緩存
這是一個運維開發的崗位,在去以前呢,我也看了下愛奇藝的JD,講道理,我這我的呢,仍是喜歡作點準備的,若是去,就是我可能會考慮對吧,(畢竟他們除了要我,還有其餘選擇嗎?)那最爽的結果就是手握各大廠的OFFER,而後沉浸在沒法作出選擇的幸福中了。服務器
那準備過程當中,發現他們的要求中須要對ansible熟悉,那我以前是有用過ansible的,可是對saltstack是比較熟悉的,由於產品化的東西更吸引我,並且在工做中也用他作過二次開發,因此就去對ansible作了一些調研,而後本身寫了幾個playbook,包括python api調用。
這裏要說下,網上不少資料都是ansible 2.2 的,這個老版本了,截至發稿,已是2.5了,其中的api調用也發生了不少的變化,建議你們多去看Official Guide,百度到的真的太亂。這裏不展開講了。
那天到了後,進入愛奇藝大廈(大廠都是有獨棟的,確實不同,下次有機會在分享其餘的bilibili、鵝廠、餓了麼的),就在下面等着唄
而後坐了一會,來了個男的,把我接上去了(我去???難道電話對面就是你?變聲器?這麼套路的?還好呀?還嗯嗯?),領到小房間後,讓我填表格什麼的。
我很老實的告訴你們,我全程腦子裏就在循環電話那頭的聲音。我很低落,很難過,難道真的是jc上腦?
填完單子後,就等着唄,而後那個變聲男就把個人單子拿走了,而後丟了句,「稍微等下,面試官立刻就來」(心想,你走吧走吧,我也差很少準備走了……)
來了位個子通常的(由於我胖啊,我怕誰),作個自我介紹
我以爲這個仍是有說明的必要的,自我介紹必定要強勢,必定要底氣足。是大家要我,不是我本身找大家的,不要搞錯好伐……
那麼須要凸顯的有:
本身的項目介紹(運開的話,就是CMDB、CI/CD、k8s、OpenStack,有什麼吹什麼,千萬別很差意思)
武器庫(Python什麼級別?用過協程就別說多進程,用過Tornado就別說只會Django)
Q:Python的列表解析式會寫嗎?會的話,寫一個唄。好比選出1-100中的奇數。
A:[i for i in range(100) if i % 2 != 0](其實這裏有不少種作法,好比最簡單的用切片就能夠了 list(range(100))[1::2]都不須要列表解析式,但爲了迎合他的問題,你得往他身上靠啊……)
Q:那 (i for i in range(100) if i % 2 != 0) 這個和你寫的有什麼區別呢?
A:你如今寫的是生成器解析式,返回的是一個可迭代對象,不是list對象(其實技術面試呢,若是你能摸到對面的當心思,那就穩了呀)
Q:裝飾器有用過嗎?用過的話,通常你是用於解決什麼場景的?
A:用過。典型的,用戶認證,簡單點的可能日誌處理等。主要用來處理一類問題的時候。
Q:那你能寫一個裝飾器嗎?用來對用戶的參數進行檢查,若是參數類型不匹配,就返回一個error報文,不然返回success。
A:好的。(就寫唄。這裏不以代碼爲主,思路很簡單麼,若是你用py2可能就要用attr了,但我py3 能夠用inspection啊,簡單啊,而後把獲取到的參數檢查一下類型就行了唄,但這裏也有一個要求,類型是定義在函數聲明時?py3.5開始的類型註解。仍是寫在配置文件或者函數體裏面?反正我就當你用py3寫了類型註解了。)
……(省略一些基礎問題)
由上能夠看出,面py開發,基礎是很重要的,由於大多自學py的,按照個人經驗,對於基礎部份內容掌握得不牢靠,覺得py就是調調第三方庫那麼簡單。
期間還問了上下文的實現原理,還有類的使用、繼承、__init__和__new__的區別,實例方法、類方法、靜態方法,實力屬性、類屬性等等。不一一展開了。
Q:你有作過CMDB吧,那大家CMDB裏,若是有多套業務同時發生,你是怎麼處理的?
A:(開始問我網絡和併發了,這個要能聽出來)我起初用的是多線程的,後來發如今處理併發的狀況下,效果並不理想,就改用多進程了。但仍是會有瓶頸,好比在做業模塊上(主動拋出橄欖枝,我還作過做業平臺),併發比部署系統更頻繁,多進程處理會直接打滿服務器CPU。後來就考慮換了協程,效果很是好。
Q:哦~你說到了協程,能說明一下協程和線程、進程的區別嗎?
A:(知道你要問,這不被我帶節奏了麼)……(省略百度百科),協程主要解決的仍是併發的問題,以及python GIL帶來的並行處理能力。
接着就讓我寫一個協程。那就簡單的寫一個生產者消費者模型唄。
聊了大概四五十分鐘吧。以後還聊了Django 和 前端的一些技術。感受都ok。
最後瞭解了下,他是負責運開的技術開發。
休息事後,就來了第二位面試官,面我運維的,運開嘛,若是沒有運維知識確定是不行的。
先從最簡單的三次握手四次揮手問起來。
接着深刻一點,開始問我在一次瀏覽器地址輸入一個連接後,到顯示出頁面,中間通過了哪些過程?其實就是問你DNS唄。
A:先找hosts文件,若是沒有就開始dns了,查詢本地緩存,若是沒有則向根發起查詢,一層層向下請求,直到找到爲止,響應給本地DNS服務器,在返回給客戶端。(我的感受dns這塊回答的有點虛……相對py來講)
Q:那你有作過相似nginx的配置嗎?能簡單說下代理或者負載均衡嗎?
A:nginx就本身用過,但沒有生產維護過。(沒有作過的話,我的建議仍是老實交代爲好,其實原本技術面試就有可能遇到你不會的,徹底沒有關係啊,只要符合要求,部分技術不合規也是沒有關係的。)
後來的對話中,面試官也表示,可能以前作的更多的是DB的工做,對於web容器這塊不熟悉關係也不是很大。
而後就和我聊起了DB,MySQL的高可用、分表,SQL優化,監控等。這些基本都回答的ok,也是老套路了,網上能查到不少,這裏不作敘述。
過了2輪後,居然還有技術面,我去,是技術組長,而後仍是自我介紹(不得不說,每輪都要自我介紹,每一輪我居然說的還不同……)
通過一些基礎的可能上面兩輪問過的問題後,就開始問我算法了,嗯,確實不太同樣。這裏我只能說靠平時積累了,有多少貨就都掏出來吧!
Q:如今給出一個列表,[a,b,c,d,a,v,s,d,c,a]
,對他進行計數,返回出現次數最多的
A:嗯,我想一想。而後給出了一個字典的存儲方式,緣由就是能夠減小循環次數,儘量下降時間複雜度。其實我一開始想說,直接用Counter模塊不就行了麼,可是沒說出口,我知道會被打。
以後就對我本身作的一個MiracleOps問了好久,主要圍繞的仍是實現的方式和原理,能理解啊,你作的東西,本身一我的作的,那隨便問你都知道咯,(就是看看你是否是在吹唄,不少人會把本身參與的項目說成是本身獨立完成的)
這裏就會涉及到應用層的邏輯分化,以及軟件層面的架構選型。這個仍是看你我的經驗了,若是沒啥的話儘可能別硬吹,很容易吹破。
好比爲何個人運維平臺是用MongoDB,沒用MySQL。在處理多租戶、多任務的時候你是怎麼解決競爭關係的。做業交付中,若是斷點了怎麼辦,是等待仍是結束?一系列的問題都值得討論。
整個三面大概也持續了要有不到一個小時。
終於熬出頭了,和技術總監對吹環節終於到了,和技術總監聊就有一個好處,你能夠不用說具體的實現了,和「老人家」聊技術,你就得讓他以爲你這個小夥很靠譜,思惟很先進,有意思。
我充分發揮了我12年的語文詞彙,把能說的成語都套上了技術的字給丟出去了。讓我談談理想,我就吹啊,我要把本身的餘生交給公司,爲公司開闢疆土,將運維盈利化、產業化。讓咱們的部門成爲公司最受矚目的part,讓總監你成爲老闆的左膀右臂!
我也不知道這波吹的怎麼樣,反正總監是笑了。大家以爲呢?
其實我以爲我更適合和總監面試,由於我這人有個毛病,喜歡吹……遇到同類型選手可能會激發個人鬥志,經過身體的荷爾蒙噴發出更強大的吹的慾望。
那給你們的建議就是,對於和總監、領導面試,放輕鬆點,沒什麼的,技術都過了,總監無非就是關心一下你的家裏狀況,方便後面加班咯……在關心下你的我的狀況,看看身體能不能吃得消996咯……
你若是真的想進這家公司,那你面試的時候就表達出本身身體賊好,家裏所有交代清楚了。固然你也能夠明確說明我不加班,我不996。
吹完江山,接下來就是和美人聊咯,嗯,hr小姐姐來了,和我說完大概狀況後,和我開始聊起待遇,問我要多少。
劃重點了,你們在這個時候必定要穩住,千萬別兜底,你本身得要有本身的底,過了咱就不伺候了。
你能夠在本身的工資上面稍微加一點,把平時的獎金、福利、打車報銷balabala,都加在基本薪資上,畢竟漲薪和福利可不要緊。
另外,hr若是要你說指望,你就往高了說,反正高了也會壓你,低了也會壓你。別作老好人,我遇到太多讀者和我抱怨要少了,後悔,也沒辦法了。
通過一番博弈後,hr小姐姐終於問出了那句「若是薪資沒有達到你的預期,你還會考慮咱們公司嗎?」
小夥伴們,這句話大家應該不陌生對不對,千萬不要方,你能夠委婉的告訴他,「通過一天的面試,我以爲貴司的流程制度仍是很是完善的,而我應聘的部門氣氛也很是好,我相信我能爲公司、部門帶來看獲得的提高,也相信公司會正確的給予我一個合理的範圍。」
這叫什麼?打太極啊!你推我,我推你,不就那回事嗎,hr就懂了呀。
在薪資方面我就很少說具體數字了,畢竟透露公司薪資是不道德的,反正那個薪資是在我合理漲幅裏的,其實還高了一點,20%+,但我想要更多,哈哈哈。最後就考慮下唄
好了,吹了一天的面試經歷,到家就已經7點多了。真的累了,但我仍是忘不掉那天電話裏的聲音。爲何始終沒有出現。仍是出現了我並無發現……
面試流程大致相同,不一樣的是技術問題,以及每一個人對應的方式方法,給你們總結一下個人經驗:
技術面的時候,必定要把本身有的全都掏出來,讓對面看看咱的真傢伙……
在和總監面的時候,儘可能說的眼界大些,能給部門帶來收益是最好的了,但別越界了,讓領導以爲你過來會威脅到他,那估計就沒戲了。
和hr再聊薪資的時候,不要過早暴露本身底線,另外hr想要知道你的指望都是ok的,但你能夠多加一點,反正合不合適hr都會告訴你的,要你就會說在考慮下,或者爭取下,若是不合適,你低了過去也沒意思。
但願這篇文章能給你們帶來一些思考,而不是純技術上的刷面試題。
公衆號「Python專欄」後臺回覆:運維自動化平臺,獲取MiracleOps全套代碼。