なぜPayPayなのか?
- エキサイティングなスケール。2021年に1000トランザクション/秒 (出典)
- いつでもどこでも働けるWFA
- 1000万に近くの年収 (ソース)
3週間ぐらいかかりました。特にPayPayの面接の質問を全て話すことはできませんが、頑張って体験談を書きたいと思います。
- Codevueオンラインコーディングテスト
- 電話インタビュー
- テクニカルインタビュー(x4)
- タレントアクイジションラウンド
Codevueオンラインコーディングテスト
leetcode easy ~ mediumの問題をオンラインで60分内に解く面接です。面接官なしでストレスが少ないですが時間は貴重です。速く物事を行う。速くするためには、一般的な操作に慣れる必要があります。hackerrankなどのようにCodevue コーディングテストは `os.Stdin` から入力を読み、os.Stdout に出力を書き出すところから始まります。そのため、文字列をデータ構造にパースしたりその逆を高速に行うことに慣れる必要があります。例えば、"19.24,20.00" を [19.24, 20.00]に変換するのにリファレンスなしで余裕にできないと厳しい。
電話インタビュー
45分とありますが、実際は30分+質問する時間でした。面接官は30分で面接を終わらせようとするので忙しそう。このラウンドでは主にレジュメに目を通しソフトウェアエンジニアとしての経験などの確認となる。このラウンドでコーディングテスト(Google Docsで?!)を受けた人もいたが僕は受けなかった。
テクニカルインタービュー
今まではループインタビューだったが面接官の大変さを減らしたいからそれをやめたらしいです。ループは面接の結果に関わらずとりあえず4回やっていたが今は一回失敗したら面接が終了という形の面接です。
テクニカル面接1(プログラミングの知識)
チームリーダーの一人から面接を受けました。若くて情熱的でとてもフレンドリーな方でした。このラウンドは、最も慣れているプログラミング言語のテストから始まります。ガベージコレクタ、データレースの話題など約30分。そして、15分ほどでleetcode mediumの問題を解きました。
テクニカル面接2(データ構造・アルゴリズム)
何を求められているのかが分からなかったラウンドだ。あるケースについて説明されそれに最適なデータ構造は何かと聞かれた。基本的なデータ構造を復習しとけば大丈夫そう。その後Big Oの話題。最後にはLeetcode mediumの質問でが出された
このラウンドだけコーディングがありません。しかし、ソフトウェアエンジニアが知っておくべきことは全て聞かれます。ネットワーク、Linux、データベース、コンテナ、分散システムなど。「ブラウザからURLを開くとどうなるか」「ACIDについて説明してください」といった質問です。役に立つと思う良いリソースをいくつか紹介します。
テクニカル面接3(バックエンドの知識)
- システムパフォーマンス:エンタープライズとクラウド 第2版(2020年)のモデル、コンセプト、各章のアーキテクチャ
- ハイパフォーマンス・ブラウザ・ネットワーキング。第2章(TCP)、第3章(UDP)
- データインテンシブアプリケーションの設計。2章、3章、5章~9章
全てに完璧に答える必要はないので、わからないことは遠慮なく伝えて、次に進むようにしましょう。幸いなことに、私の面接官はとても知識が豊富で積極的に教えてくれたので、全部は答えられないかもしれませんが、勉強になりました。
テクニカル面接4(システム設計編)
シニアマネージャーとの面接です。このラウンドでは、レジュメを再確認しコーディングセッションを行い、最後に小さなシステムの設計を依頼されます。これは大変でした。コーディングの問題はleetcodeで見たことがあると言ったら、leetcodeでも見たことがある別の問題を出してきたけど簡単な問題だったので前に進むことにした。
まとめ
ほとんどの面接がドメイン知識+leetcodeだったので準備としては
- 紹介した本を読むこと
オファーの話は 転職で高額なオファーをもらう戦略 Strategy For Higher Offer にまとめています。