前言
春天來了,在家玩了半年,也該出去散散心了,順便識訓幾個offer練練手,要不然都沒有辦法給小伙伴們發面試題了,
所謂知己知彼方能百戰不殆,我先是在網上搜索了一下關于最近的運維職位,發現還行,大多薪資都在25-50K之間,于是就在boss上更新了簡歷,設定簡歷開發,去把快遞識訓來,
剛到電腦面前做下,就看到boss上有人要簡歷,之前有個小伙伴說: 你不在江湖,但江湖還是你的傳說,
誒,,,真煩啊,太煩惱了,那就去吧,為了小伙伴們的真題,我舍命陪君子,

找出了半年未動的面試服裝,列印好了三頁紙的簡歷,帶著一瓶紅牛我就直奔面試現場,
到的時候有點早,越好的下午2點,我1點就到了,沒辦法找個地方喝個咖啡,補充下能量,一會打起來我好有力氣跑,
叮咚, 距離面試還有15分鐘,暗自竊喜的來到了某團現場面試的辦公室,我丟,這就是面試官? 不是吧?

發量感人,見我來了趕緊帶上帽子,這造型就是傳說中的國外特聘CTO?
Hello, I’m ki, your interviewer. You can call me A.k, Look at my hairstyle, you should be able to guess my identity. I don’t have to say anything. Shall we just start
我丟,這TM是人話?
于是我用英語說: sure,can you speak chinese?
阿K笑了笑說,當然了,我們開始吧:
你們服務器的日常巡檢的主要作業是什么?
額,確定是認真的嗎?你這面試題不會是哪個蹩腳的系統運維幫你準備的吧,雖然十分不情愿回答,但也沒辦法,好在腦海里還有點印象:
- 服務器物理硬體的巡檢
- 作業系統的磁盤,記憶體,cpu,硬碟讀寫情況
- 服務器系統日志
- 運行與服務器上應用是否 可用
- 應用系統日志檢查
- 資料庫運行狀態,運行日志檢查
- 資料庫定時備份機制情況
- 系統定時任務執行情況
你能說一下上線流程嗎?
這,跳躍也太快了吧,
好的面試官,我們這邊上線流程比較簡單,運維人員收到產品經理的上線工單(一般是郵件),郵件中包含了要上線的專案地址和版本號,
然后我們按照既定的上線腳本執行上線,完成后,運維人員會給相應的開發或者產品回郵件,宣布上線完成,
他們會回復是否上線上線成功,如果半小時未回復,就回滾,
"哦,你們有沒有用到jenkins?”
來了來了,加分項來了,這個我還真遇到過,裝B的機會終于來了,

有的面試官,這個題我會!!
開發上傳代碼到版本庫,版本庫我們用的gitlab,jenkins進行拉取編譯,然后打包傳到鏡像倉庫(harbor),在harbor中進行測驗, 測驗完畢之后,docker從鏡像倉庫中進行拉取,然后在k8s部署,部署完成之后,呼叫K8s的API進行健康檢查,(healthcheack)
那…
還有還有,我還有,您別著急問下一個,讓我再加點分,拖延一下面試時間,
我們可以設定讓jenkins分支代碼更新后,jenkins自動構建, 在jenkins的控制面板上我們設定構建觸發器,把此處的URL復制下來,放到gitlab上的webhook中使用,

點擊高級按鈕,去輸入要處罰的分支及復制token

然后我們在gitlab上設定,在setting-integrations
把上一步在jenkins里復制的網址和token,粘貼到此處

粘貼完后,根據自己的需求去選擇要實作的觸發事件

當然了,在這個程序中,我們也需要在jenkins里安裝一些插件,比如:
- git parameter
- gitlab
- gitlab hook
通過上面的步驟,我們就完成了代碼發布到gitlab,然后jenkins就去拉取,
jenkins通過制定的代碼地址url,將代碼拉取到jenkins的安裝位置,進行編譯,打包和發布
面試官:我丟,這貨知道的還挺多,下面我要考考他原理了,
嗯嗯,你回答的很全面,那么你能跟我說說jenkins的作業的原理嗎?**
好的面試官,我這里給你畫一張圖:

我已SVN為例,也可以改成gitlab等作為倉庫代碼
- 開發人員把代碼發送到gitlab
- CI系統會為每個專案創建一個單獨的作業空間,當預設或者請求一次新的構建的時候,他就將代碼倉庫的原始碼存入對應的作業區
- CI系統會在對應的作業區內執行構建程序,build,這個構件是根據事先設定好的腳本進行bulid,這個腳本可以做很多事情,比如編譯,測驗,生成測驗報告等等,
- 構建完成后,CI系統會在一個新的構建中執行一套定義好的測驗,完成后觸發通知給相應的當事人,
- 如果構建成功,這個構件就會被打包轉移到一個部署目標,或者存盤為軟體倉庫里的一個新版本,
- CI會根據請求發型相應操作,諸如即時構建、生成報告,或者檢索一些構建好的構件,
elk你們用過嗎,能不能講一下你的理解?
用過的面試官
ELK由三部分組成:
- 資料的采集,分析,過濾日志: logstash
- 資料的存盤,分析,搜集: elasticsearch
- 資料的展示:提供web界面,kibana
這個圖是一個資料分析的架構圖,涉及到kafka做為boker使用

簡單的說:位于各個節點上的Logstash Agent先將資料/日志傳遞給Kafka(或者Redis),并將佇列中訊息或資料間接傳遞給Logstash,Logstash過濾、分析后將資料傳遞給Elasticsearch存盤,最后由Kibana將日志和資料呈現給用戶,
logstash作業原理你能說一下嗎?
好的,好的,好的,別急面試官,聽過慢慢吹,額慢慢給你說:
Logstash事件處理有三個階段:inputs → filters → outputs,接收,處理,轉發日志
input:輸入資料到logstash
在logstash里有三個部分,一個是shipper,用來收集日志資料和監控日志資料的變化,及時將日志最新的內容收集起來,
另一個是borker: 相當于日志的hub,用來暫時存盤shipper收集起來的日志資訊,
indexer: 從borker中讀取文本,經過加工,過濾,輸出到指定的介質,
我們logstash端都是部署在被采集端,當然后期我們會用filebeat來代替, 安裝好之后,logstash的三個組件,shipper負責檢測日志變化并收集,然后發送給boker,進行存盤,然后傳送給indexer
在indexer這個地方進行資料清洗,分析和過濾,然后作為kafka的生產者傳送給kafka,這個傳送程序呢,是這樣的,
首先producer先從zookeeper的brokers的state節點找到該partinon的leader,然后
- producer將訊息發送給leader
- leader將訊息寫入本地log
- followers 從leader pull訊息,寫入本地log后給leader發送ack
- leader 收到所有的ISR中replica的ASK之后,增加HW(就是完成的offset,)并向porducer發送ack
消費者就是elasticsearch,去拉取tiopic的訊息,
kafka同步到es的方式有四種:
1) logstash_input_kafka插件,但是這個不太好用
2) spark stream 同步,太龐大
3) kafka connector同步
4) 自寫程式去讀取決議寫入
kafka connet 可以將完整的資料庫注入到kafak topic中
KafkaConnect有兩個核心概念:Source和Sink, Source負責匯入資料到Kafka,Sink負責從Kafka匯出資料,它們都被稱為Connector
kafkaConnect通過Jest實作Kafka對接Elasticsearch,
如果用logstash去將Kafka中的資料寫入到ElasticSearch
input需要logstash-input-kafka插件,該插件logstash默認自帶,
面試官: 好的,你不僅把我問的都回答了,我不知道的你也說了,這樣你還有什么想問我的嗎?
嗯,有的面試官,咱們招聘的這個崗位是AB復制還是新增,未來的這個崗位的規劃是怎樣的?
面試官:巴拉巴拉小魔仙巴拉巴拉
好的,我大體了解了,也對這個崗位比較感興趣,期待能 有機會共事,感謝,那我先回去了,有訊息第一時間通知我哈,
面試官: 我送送你
面試官給我送到了地鐵刷卡口,看著我刷卡進站,他才離去,
害,我只能在面試官走后又刷卡出來,因為下一家面試就在隔壁樓上
無奈,
后記
本文略去了一些寒暄的程序,以及一些無意義的問題,諸如你老家是哪的,未來打算回老家發展嗎,家人都在北京嗎等等,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275439.html
標籤:其他
