這篇文章內容來自 「升職加薪」星球星友 的投稿,座標二線,去年畢業,只有實習經驗,無真實專案經驗,自學一段時間後,在找Golang後端開發的工作。
先說下這位朋友的自我面評:
上週在二線城市大概約到了4個面試,自我感覺八股文回答的還可以,因為星球中的面試題沒少背。
但是問專案的問題就很垮,或者說是特別垮,因為並沒有真實的一年工作經驗,有很多東西不知道怎麼說,經不起推敲。
我幫他做了面試覆盤之後的感受:
基礎確實還可以,但是專案經驗真的拉胯,很多概念都不清楚。
很重要的一點:很不自信,碰到不會的就懷疑自己,就去惡補。你才一年的工作經驗,難道要什麼都會嗎!?不管你是幾年工作經驗,有些不是你負責的,你就是不會,這沒啥丟人的,不用瞎編,再去惡補,這麼搞,總也準備不完。
如果是自信的應聘者,會很明確自己的技能邊界在哪裡? 哪些是我負責的,我精通的;哪些是組內其他人負責的,我有打過配合。有哪些是我知道有在用,但是沒實操過,但是我能和你聊聊我的實現思路,如果讓我做的話,我會這樣設計:巴拉巴拉...
下面是結合他「1年工作經驗」的情況,整理的一部分面試問題和答案,希望對缺少專案經驗的小夥伴們有所啟發。
這位朋友在前公司做了一個toB的電商SAAS平臺,業務難度不高,而且他實際參與的開發工作並不多,並沒有整體視野,也不懂得「開黑」。(咱可以不真實開發,但是和朋友抽菸吹水的時候,也聊聊專案的技術難點,為以後寫簡歷做做準備,避免到時候抓瞎~)
問:你說對服務進行了拆分,為什麼要拆分,拆分的依據是什麼?
首先我們的專案不是微服務架構,是中臺架構。拆分的依據是站在業務和功能的模組進行拆分,不同的組開發不同的服務,目前我們是拆分成了:商品服務、訂單服務、支付服務、訊息服務、基礎服務。
問:和前端互動的頁面是在哪個模組?
整體專案都是前後端分離的設計,每個模組都會和前端互動,go寫服務和介面。
(我就很好奇,這個面試官到底想問啥....)
問:你說主要負責了訂單模組,那這個訂單的狀態及流轉是怎麼實現的?
我們是通過以下方式實現:
問:你說訂單完成後接入訊息佇列非同步更新庫存銷量,那多個客戶下單了一個商品,如何保證商品不會多賣,在並行場景下是如何處理的,類似於兩個請求同時買一件商品。
在並行場景下,確保商品不會多賣是一個常見的問題。為了解決這個問題,可以採取以下措施:
通過以上措施的組合應用,可以在並行場景下保證商品不會多賣。具體的實現方式會根據系統架構和業務需求的不同而有所差異。在設計和實現過程中,需要綜合考慮並行性、效能和資料一致性等因素。
更多的解決思路可以看我之前分享的 秒殺系統設計
問:這個專案是從0到1還是已經有完整的專案在正常迭代?
不是從0到1的,這個專案之前是PHP開發的。我們使用Go語言進行重寫的。
問:使用者人群是什麼樣的,使用者量是多少?
我們是一個Saas系統,我接觸到的客戶是B端客戶,會和技術支援一起解決一些客戶反饋的問題和需求。
B端使用者大概十幾家在對接,B端使用者對應的C端使用者不是很清楚。因為我們專案是支援私有化獨立部署的,
問:訂單會做紀錄檔嗎,比如說每天成交了多少訂單。
會做持久化儲存,儲存到MySQL中;也會做紀錄檔,公司有負責資料分析的同事。大概幾千單吧,我主要是負責商品中心的,訂單這部分不是很瞭解。
問:你們資料庫是自己維護嗎,儲存phone欄位用什麼型別?
是的,我們可以維護自己本地開發的資料庫;如果要修改測試庫和正式庫的欄位資訊,要向領導申請。
phone是 11位的varchar
問:平時開發過程中是和資料庫直連嗎,還是中間有快取層嗎?
有直連的也有加入redis快取層的,不同的場景處理方式不一樣。
比如我負責的商品中心,熱點商品介面是會用快取的。
商品可售狀態就不會走快取,而是直接查詢資料庫,根據使用者選擇的商品規格和所在地直接查詢資料庫。
問:你用說redis快取,什麼時候查庫呢?
看場景和具體的需求,就像前面提到的:
商品可售狀態就不會走快取,而是直接查詢資料庫,根據使用者選擇的商品規格和所在地直接查詢資料庫。
問:一個場景,使用者購買商品,寫入資料庫到一半時崩了,如何保證正確寫入?
在處理使用者購買商品的場景中,確保正確寫入資料庫是非常重要的。為了保證資料的完整性和一致性,可以採取以下措施:
問:在你們的專案中,哪種場景下可以用協程?
問:linux命令操作會嗎,平時操作紀錄檔是怎麼查,在db上還是有專門的紀錄檔庫?
管理後臺的操作紀錄檔在管理後臺能直接檢視,有表進行記錄。
錯誤紀錄檔和請求紀錄檔是通過檢視log紀錄檔的方式檢視的:比如,tail -f xxx.log
另外補充一下:
在實際應用中,紀錄檔通常會記錄在檔案中,可以通過上述命令來檢視和分析紀錄檔。紀錄檔檔案的位置和命名方式可能因不同的應用程式和設定而有所不同。
此外,有些應用程式會將紀錄檔記錄在資料庫中,以便更方便地進行查詢和分析。這些應用程式通常會提供專門的紀錄檔庫或工具,用於管理和查詢紀錄檔資料。例如,Elasticsearch、Logstash和Kibana(ELK Stack)是一套常用的紀錄檔管理和分析工具,可以將紀錄檔資料儲存在Elasticsearch中,並使用Kibana進行視覺化和查詢。
我個人是覺得上面這些問題比較簡單,比較符合「一年工作經驗」的求職設定。
為什麼這位朋友會覺得無從下手,說不好呢?究其原因還在於缺少真實的專案經歷。
要麼去花時間惡補專案經驗,要麼找個明白人針對專案多做模擬面試,這才是找工作的正途。可別想著走捷徑。
獨行難,眾行易,一個人刻意練習是孤獨的。
歡迎加入我們的小圈子,一起刻意練習,結伴成長!
微訊號:wangzhongyang1993
公眾號:程式設計師升職加薪之旅
也歡迎大家關注我的賬號,點贊、留言、轉發。你的支援,是我更文的最大動力!