Uberソフトウェアエンジニア面接体験談(ニューヨーク):電話面接からオンサイトまで
Uberソフトウェアエンジニア·ニューヨーク·面接時期: 2018年5月不合格
更新日: 2026年7月17日
本記事は、ニューヨーク拠点のソフトウェアエンジニア職におけるUberの面接プロセスについての体験談です。選考は、データ構造の基礎とバックエンドのスケーラビリティに関するトピックを中心とした電話面接から始まり、その後4ラウンド連続のオンサイト面接へと進みました。
候補者はオンサイトのペースについてストレスが大きかったと述べつつも、全体としては良い経験だったと振り返っています。最終的にオファーは得られませんでした。以下は、原文の体験談に基づく各ラウンドと質問の内訳です。
選考プロセス
技術電話面接
データ構造の計算量、連結リストの概念、データベース呼び出しの削減やAPIレスポンスの高速化といったバックエンドのスケーラビリティに関するトピックを扱う電話面接。この後、オンサイト面接の案内が届きました。
オンサイト面接
1回の訪問で行われた、4ラウンド連続のオンサイト面接:ホワイトボードでのコーディングラウンド、エンジニアリングマネージャーとの行動面接ラウンド、アーキテクチャ/システム設計ラウンド、2回目のコーディングラウンド。
結果
候補者は選考プロセス全体をストレスが大きかったと述べつつも、全体としては良い経験だったと振り返っています。最終結果は不採用でした。
技術電話面接
データ構造の基礎とバックエンドのスケーラビリティの概念
- HashMap、ArrayList、TreeMapの時間計算量と空間計算量
- 単方向連結リストと双方向連結リストの違い
- シャーディングやmemcached方式のキャッシュなど、データベース呼び出しを削減する手法
- インメモリデータグリッドを含む、API呼び出しを高速化する方法
- マイクロサービスアーキテクチャに関する一般的な質問
オンサイト ラウンド1:ホワイトボードコーディング
ホワイトボード上でのアルゴリズム問題解決
- 電話のキーパッドの数字列が表しうるすべての文字の組み合わせを出力するアルゴリズムを書く(Letter Combinations of a Phone Number問題)
オンサイト ラウンド2:エンジニアリングマネージャー
行動面接とカルチャーフィット
- 自分のチーム内、およびチーム外の人との間で経験した対立について説明してください
- あなたの強みと弱みは何ですか?
オンサイト ラウンド3:アーキテクチャ面接
大規模コンシューマー向けサービスのシステム設計
- Uber Eatsのようなフードデリバリーサービスを設計する
- このようなシステムでキャッシュをどのように実装しますか?
- 位置情報に基づくユーザートラッキングにどのようにアプローチしますか?
- ノードクラスタリングとデータベースのレプリケーションは設計にどのように関わりますか?
オンサイト ラウンド4:コーディング面接
実行時間制約付きのデータ構造設計
- getとputをO(1)の実行時間でサポートするLRUキャッシュを設計する
学びのポイント
- 電話面接では、基本的なデータ構造の計算量に加えて、DB呼び出しの削減・キャッシュ・APIレイテンシといった実践的なバックエンドのトレードオフも問われるため、事前に分散システムの基礎を復習しておくとよいでしょう。
- オンサイトのアーキテクチャラウンドでは、キャッシュ・位置情報トラッキング・レプリケーションを含む、Uber Eatsのようなサービスのかなり完成度の高いシステム設計が求められたため、体系立てた設計フレームワークを練習しておくと回答をまとめやすくなります。
- LRUキャッシュや文字の組み合わせといった古典的なデータ構造の問題も、コーディングラウンドで依然として出題されるため、システム設計の準備と並行して、基本的なアルゴリズムパターンの感覚を保っておきましょう。
- エンジニアリングマネージャーとのラウンドでは、対立解決と自己評価に関する質問が中心だったため、チーム内の対立に関する具体的なエピソードを準備しておく時間をかける価値があります。
- 4ラウンド連続のオンサイト面接はストレスが大きかったと述べられているため、ペース配分やラウンド間の短い休憩を計画しておくことが、選考全体を通じて集中力を維持する助けになるかもしれません。
出典
質問と選考プロセスの事実は、下記リンクの候補者本人の公開投稿に基づきます。本文は当サイトによる再構成です。
候補者本人による英語の公開体験談を翻訳(出典: LeetCode Discuss)