天天看點

Java 坑點腦圖

我常常在想,一個人具備怎樣的素質和能力,才稱得上進階工程師?估計有不少人會說,“基礎過硬、熟練掌握一門程式設計語言、至少看過一個優秀開源項目的源代碼、有過高并發工作經驗、溝通能力強”。

Java 坑點腦圖

上面這些都很對,這些也都是面試中經常考察的點。但從真實工作場景看,我覺得還缺少一環:業務開發能力。可能你會說,業務開發不就是 CRUD 嗎,有啥難的?

的确,我們大部分人的日常工作就是做業務,不可能沒事就去看源碼、學資料結構與算法,這不現實。我們的能力,都是在業務開發中打磨出來的。

舉個例子:一個産品,每天會有上千份訂單狀态或流程出現問題,要修複這些問題,就得花大量時間核對資料、确認訂單狀态,甚至沒時間開發新需求。最後,項目負責人開啟明細日志徹查問題,才發現是自調用方法導緻事務沒生效造成的坑。

在金融項目計算利息的代碼中,因為用了 float 類型而不是 BigDecimal 類來儲存和計算金額,結果給使用者結算的每一筆利息,都多了幾分錢。試想下,結算的上千個使用者中,每個使用者都有上千筆訂單,如果等月終對賬時才發現,可能已經損失了幾百萬。

再比如,用 RabbitMQ 做異步處理,處理失敗的消息會不斷地進入 MQ。問題爆發前,可能隻影響了消息處理的時效性。待到 MQ 徹底癱瘓,面對堆積在一起、混雜了死信和正常消息的幾百萬條資料,除了清空 MQ 并用大量時間補正常的業務資料外,還能怎麼辦呢?