なぜSmartNewsなのか?
- 働きやすいホワイト企業
- 面接は日本語でも可能
面接が完了するのに1ヶ月ぐらいかかりました。 SmartNewsのインタビューの質問は特に言えないが経験やその対策について書いていきます。
面接のステップは
- 書類選考
- コーディングテスト(スクリーニング)
- HRスクリーニング
- コーディングテスト
- システムデザインラウンド x 2
- ドメイン知識
- 行動面接 x 2
を含めています。スクリーニング後の順番は変わるので特に気にする必要がありません。
書類選考
書かれたものは面接時に聞かれるので答えられるものだけ載せましょう。SmartNewsのメインなプログラミングはJavaだが経験なしでも書類通ります。 やったことをどれぐらいビジネス、チームに影響を与えたについて書きましょう。わかりやすいように数字を出すと良い。
コーディングテストスクリーニング(<120分)
2つのLeetcodeっぽい問題が出ます。難易度はeasy ~ mediumで2時間あります。 Leetcodeを練習しとけば十分な時間を持っているはずです。 45分以内に両方の問題を解決しました。スコアがつくけどテスト中にスコアを知ることはできませんので時間があればなるべく一番最適化した解法にしてください。
HRスクリーニング(45分)
人事が面接のプロセスについて説明してくれる以外会社の文化なども紹介してくれます。会社の文化などを理解するために確かに色々聞けるチャンスだけどあと6回も面接あるの思ったら聞く気なくなりました。面接通ればいくらでも聞くタイミングがあるので今ではないと。
コーディングテスト(60分)
Leetcode hardの問題が一問出ます。面接官によりますが自分の場合はcoderpadでコードを書いていたが特にコードを実行する必要がなかったです。コードの説明を1行ずつ要求されたのでコード書く前になんでこのコード書くのかよく考えてかた書きましょう。ここは最初からbrute force考えず最も効率の良い解法を出していいと思います。
SmartNewsはJavaがメインな会社だが面接では他の言語でも使えたりするのでJava未経験でも大丈夫です
対策方法ですがLeetcodeの練習以外ないでしょう。
システムデザイン#1(60分)
"Design a YouTube"のように曖昧で大きめお題が出ます。その曖昧なお題を明確にしてスケールできるシステムを図に描きながら面接官に説明する面接です。実質50分しかないので時間の意識がすごく大事です
- 10分:面接官との会話です。設計してほしいものの要件などを聞き出す
- 15分:high level design。ざっくりしたシステムですがここではスケールのこと考えずデータの流れ、APIの設計やデータベースのチョイスなどに集中すべき
- 25分:スケールするためのやるべきこと
が自分の考えたモデルフレームワークです。
勉強のしかたですがAlex Xuの本がおすすめです。どのお題を練習すればいいかわからない人はSmartNewsのシステムの一部を抜け出してお題として練習すると良いです。
面接官のことを面接官というより一緒にシステムを設計してくれるチームメイトとして考えた方が有利です。「こういうことを考えてるがどうでしょう」みたいなコミュニケーションは大事です。「この人と一緒に仕事できるか」というのも評価ポイントになるのでよく面接官を絡んでいきましょう。
ドメイン知識
ソフトウェアエンジニアが知っておくべきことは全て聞かれます。特にプログラミング言語やデータベースなどは深く聞かれます。「Garbace collectorについて説明してください」「ACIDについて説明してください」のような質問です。準備や問題集ですがこの間まとめたのでご活用してください。
- 得意なプログラミング言語、ウェブフレームワークの仕組みを理解する
- データインテンシブアプリケーションの設計。2章、3章、5章~9章はためになります。
全てに完璧に答える必要はないので、わからないことは遠慮なく伝えて、次に進むようにしましょう。
システムデザイン#2(60分)
エンジニアリングマネージャとの面接でした。システムデザイン#1とはあまり変わらなかったがこの面接はスケールについてたくさん質問されました。自分の場合35分で面接が終わって後の25分が質問タイムでした。なのであらかじめ質問の準備をしておいた方が良いです。
行動面接(60分x2)
行動面接ではカルチャーフィットの確認のため
- 過去の経験
- 特定の状況へのアプローチ
- SmartNewsに入りたい理由
などの質問が出ます。一つの質問に対して大体3〜10分のディスカーションになります。
行動面接はカルチャーフィットの確認以外に過去にどのぐらい大規模のプロジェクトを携わったかリーダーシップの経験があるかなども見られます。どのジョブレベル(ミッド、シニア、スタッフ)になるかは技術面接も大事ですが行動面接も大きなウェイトを持っています。
まとめ
Leetcode、ドメイン知識、行動面接、システムデザインの準備をしなければならないので慣れてない人はそれなりに時間がかかります。難易度もMAANG並みで国内企業の中で一番面接のハードルが高いと言っても過言ではないです。でもその先に待ってるのは良い環境と高年収なのでチャレンジしてみてください。
オファーの話は 転職で高額なオファーをもらう戦略 Strategy For Higher Offer にまとめています。