見出し画像

SWE Technical Questions

アメリカテックはまだまだ解雇が続いています。私は2023年の8月から職探しをしていますが、すでに300社応募して1社もofferが来ていません。私はJuniorレベルなので、経験もまだ浅く、難しい状況です。

私の場合は自信のなさが酷く、10年以上こっちにいて英語も普通に話せるのに、プロフェッショナルな現場となると引きこもりがちです。

以下は先日質問されて、緊張してしかも頭が回らずにうまく答えられなかったこと2つです。

You wrote a query, and that has been working fine in production. A month later, it started slowing down. How would you troubleshoot this?

Queryを書いてうまくいってたけど突然遅くなりました、どうしますかって質問です。私がいったのは、

  • If we are using some kind of monitoring tools like Datadog, check the logs.

  • Go back to the query and see if anything I can improve and optimize.

  • Check around if there are any other feature launches that affects this endpoint.

いいんじゃない、みたいに言われたけど、後でお勉強しなおしたらこんなふうに少しいい感じの回答ができればよかったなと思いました。

  • Check the logs and see which query is taking so long.

  • Try to see if I can repro in local. 

  • Try to find if any unnecessary fetching is involved.

  • Might be some other networking issue. (CDN etc)

Queryのログって確かにいちいちナントカsecとか書いてあった。会社やプロダクトにもよるけど、200msを越えると遅いに値するとか何とか。。
unnecessary fetchingはn+1とかの話にも発展できそうでした。
CDNなんかこういうとこでも出てくるんだって感じでした。

次はこちら

Regarding scalability, what practice would you consider when working on a project that affects million of users?

100万人単位のuserが使うプロジェクトで気をつけることは?的な質問で、これは最悪、答えたのはこれ:

"Write good tests and QA testings?"

か?みたいな感じで笑いながら答えてしまいました。これは私の悪い癖で、何も面白くないのに笑って誤魔化せ的な
Testを書くことはめちゃめちゃ鍛えられました。前の会社がものすごうるさかったです。結果慣れて私のコードは(書くのは遅いけど)エラーがないと言われるようになって嬉しかったのを覚えています。
なので、不正解ではないんですけど、もっといい言い方たくさんありました。

  • Use feature flags

  • Set as beta and try a small amount of users first

  • Increase users gradually

  • Have horizontal servers / databases

確かにーでも緊張して答えられませんでした。
前の会社はLaunch Darkenlyを使っていました。この通りにやってましたわ。
ただ最後の1個は新しく習いました。
サーバーやDBがパンクしないよう、横に増やしとくってだけの話なんですけど確かに大事ですね。

では今日もいい日になりますように。

いいなと思ったら応援しよう!