# 天瀚國際科技 問卷回覆 - 城誌遠 1. 公司開始開發不同的感測器,以原本的架構加上新的感測器類型比較困難,常常會漏掉,解決方式是新增裝置類型和資料類型的class類別,之後要加新的類型容易很多,很好搜尋需要改哪裡,也不會漏掉地方沒有改。 2. 在new BlacklistChecker() 的時候在construct 先做好一個黑名單的hash map,網址為key,數值為bool,因為有上百萬筆要檢查,檢查黑名單可以重複使用這個 hash map,空間複雜度為O(n) 時間複雜度為O(1)。 3. 這會造成 N+1 的問題,需要用 ->with 或是 ->load 解決,會在query topic 的同時 query 所有的comment。 解決方式可以增加一行 $topics->load("comments"); ```php= public function listTopicsWithComments(Request $request) { $topics = Topic::latest()->paginate(); $topics->load("comments"); return TopicResource::collection($topics); } ``` 4. 如果從錢包A withdraw 失敗,然後接著執行 deposite 錢包 B,balance就錯了。比較好的方式是確認 withdraw 成功後才執行 deposite。 可以使用 checkTransaction() 來確定 deposite 有沒有成功。