---
# System prepended metadata

title: 天瀚國際科技 問卷回覆 - 城誌遠

---

# 天瀚國際科技 問卷回覆 - 城誌遠

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 有沒有成功。