面試官:你都工作3年了,怎麼還只會增刪改查啊

張工畢業3年了,一直在做java開發,在這3年裡,張工做過不少項目,最近到某互聯網公司面試,做了筆試題,面試官看了覺得還不錯,於是就讓他手寫簡單的多線程的例子,張工寫不出來,面試官說:“你工作3年了,連多線程都沒有用上,這3年都做了些什麼項目啊。”張工一臉的無助,不過確實不應該,多線程這個知識點,是需要掌握好才對。

3年了,雖然項目也做不了不少,遺憾的是,做的大多數功能模塊都是類似的,大多數是增刪改查,就這樣三年間重複的製造輪子,平時也沒有思考如何優化等。

行業有句話: 面試造飛機,入職擰螺絲。天天喊著高併發高可用,可實際卻天天寫著增刪改查。週而復始。增刪改查是必須要掌握的,可要是能寫出高性能的增刪改查也不是一件容易的事情,沒有兩三年沉澱是遠遠不夠的。

面試官:你都工作3年了,怎麼還只會增刪改查啊

剛畢業時,從事網站開發,入職的時候,我也是天天寫增刪改查, 領導分給我的第一個任務是,建一張資訊表,然後有新增資訊,編輯資訊功能,就這樣編寫好調試時,還有bug,就得學會打印日誌, logger.info("news{}",param1). 這樣打印日誌。

那時候寫的接口性能也不怎麼樣,耗時很大,就要分析到底是什麼原因導致的,讀數據庫慢,還是程序慢,需要監控每個接口方法的調用情況以及響應時間,這時候就有兩種方案選擇了,一是在接口方法開始和結束時都計時並將兩個時間相減得到響應時間。

 Long start = System.nanoTime();
doSomeThing();
Long end = System.nanoTime();
Long time = end-start;

這種當然是可以實現需求的,只是太過於繁瑣。如果接口有100多個,甚至更多,這種寫法就不是很優雅了。

我們可以試用用 Spring AOP很優雅地解決這個問題,我們可以用Executors.newCachedThreadPool()去構建線程池,當然這種方法也有不妥之處,創建線程池會導致線程數過多,我們可以再開始自定義一個線程池優化, 這樣一步一步優化改進。

面試官:你都工作3年了,怎麼還只會增刪改查啊

及時關閉流,雖然在調試時,不會報錯。Java編程過程中,進行數據庫連接、I/O流操作時務必小心,在使用完畢後,要及時關閉以釋放資源,因為對這些大對象的操作會造成系統大的開銷,稍有不慎,將會導致嚴重的後果。

面試官:你都工作3年了,怎麼還只會增刪改查啊

小編認為,平時在工作中,除了完成領導安排的任務外,還要多做總結

一是要多思考,思考問題有沒有更好的解決方案

二是要多實踐,在實踐中找到最適用當前場景的解決方案

不知對此你是怎麼看待的,歡迎交流!


分享到:


相關文章: