1. 程式人生 > >三十不‘獲‘:一場久違的面試

三十不‘獲‘:一場久違的面試

架構師、面試、軟件工程師

在CNC已經有六個年頭了,算上之前三年多的工作經驗,不知不覺已經碼農快十年。

前兩天接到了個鄰居公司的架構師面試邀請,這應該是從來到CNC後第一次被面試了。。。

面試官是他們服務優化的技術總監和架構主管。。。

除了常規的一些開場白外,面試是以我最近在重構的一個項目開始的,在架構主管的要求下,我在一塊白板上把整個系統的架構大概畫出來,然後整個過程就圍繞著這個架構圖展開討論了一個小時左右,主要包含一些高並發、橫向擴展等問題。。。

記憶比較深刻的兩個問題是對方的主管問了一個數據庫的索引有哪些?
當時對這問題也沒有想太多也是知識面窄了點,就舉例講了MySQL的唯一索引、普通索引、聯合索引、地理位置索引。。。

後面那個主管又點了下算法這塊?才恍然大悟原來他是想了解我是否對數據庫索引算法這塊有過了解?
當然平常對這塊也沒有深入過,所以也就如實回答。。。

另外一個是對方的技術總監一直比較在意為什麽我們原有系統已經算是很成熟了,還要再重新在重構?
針對這個問題說真的當時我比較排斥,畢竟如果不是了解我們的項目背景和整個產品架構,是很難簡單的說清楚為什麽?重構後有什麽優勢?

雖然我也簡單的列了三點說明了下重構原因,但是從交談過程還是能感受到他對這個答案不是很肯定。

最後是我提問的環節,說真的這次面試沒有太多其他想法,所以在面試這方面問題時,想到的更多是想了解下目前他們在針對行內一些比較棘手的難點是如何做的?
比如:

數據庫MySQL這塊跨機房如何備份的?開發過程中的CI CD如何控制的等?
雖然最終得到的答案和我想要的有些出入,但還是或多或少有些收獲。。。

對於這次的面試個人總結及經驗:
1.軟件工程師的三個階段:Copy,Code,Comprehend
Copy:記得剛開始時,我們實現一個功能很多時候都是從別的項目或是書上或是網上把相似的技術copy過來完成這個功能,這個階段叫盲目階段。
Code:後來積累了點經驗後,就開始按自己所積累的所認識的一些技術去實現一些功能,這個階段我稱之為Code,這個階段很典型的就是知道技術點可以怎麽用,但是不知道why?
Comprehend:這個階段我稱為飛升的階段,對於更好的使用一種技術,最好的就是深入去了解其原理,這種理解不僅僅是簡單的寫個demo,做點測試,看下它的架構設計;更多的是需要你去翻閱他的官網,找出它的源碼,一行行解讀,理解設計者的設計理念?思考整個設計的背景及優缺點?

2.新產品、新項目、新需求、新設計的開始,往往需要投入的是大量的時間用於分析並整理出其產生的背景、原因等信息,或許自己心中有可以說服自己這樣做的理由,但是這個理由並不一定能再別人心中站得住。所以一個項目的開始很多文檔是少不了的,一個項目結束,很多文檔也是缺不得的。
這讓我突然想起最近在網上買了個學習視頻,裏面的講師在給他的學員上課後,都會要求學員們,每次作業都要交這樣幾份資料:博客、流程圖、代碼、readme。

三十不‘獲‘:一場久違的面試