面接体験談

Bloomberg ロンドン New Grad SWE 面接体験談:コーディング、システム設計、行動面接

Bloombergソフトウェアエンジニア(New Grad 2021)·ロンドン·面接時期: 2021年2月オファー獲得

更新日: 2026年7月17日

候補者はアジアのトップ10校でコンピュータサイエンスの学士号(BEng)を取得した新卒者で、急成長中のヘッジファンドでのインターンを含む2回のサマーインターン経験はあったが、履歴書に大手企業のインターン歴はなかった。LinkedIn経由でリクルーターから連絡を受け、その後Bloomberg自社の採用ページから応募したところ、数日後にロンドン勤務のSoftware Engineer New Grad 2021ポジションの面接案内を受け取った。

選考プロセスは数か月にわたり4ラウンドで構成され、11月の最初のコーディング面接から2月の行動面接まで、すべてビデオ通話で行われた。候補者によれば、出題内容は一貫して標準的なもので、面接官は当初は事務的な印象だったが、技術力を示すと態度が和らいだという。BloombergのHRチームは各段階の結果を1〜2営業日以内に連絡し、最終ラウンドから2営業日以内に内定の連絡があった。

選考プロセス

  1. ソーシングと応募

    Bloombergのリクルーターから LinkedIn 経由で連絡があった。候補者はBloombergのウェブサイトから応募し、数日後に面接案内を受け取った。

  2. 第1回コーディングラウンド(11月)

    ソフトウェアエンジニア1名が2問構成のコーディング面接を実施した。候補者はPythonでコーディングし、コードを実行することや完璧な構文は求められなかった。

  3. 第2回コーディングラウンド(12月)

    ソフトウェアエンジニア2名が2回目となる2問構成のコーディング面接を実施し、今回も動くコードそのものより問題解決能力と計算量の分析に重点が置かれた。

  4. システム設計ラウンド(1月)

    シニアエンジニアが1問のシステム設計課題を担当し、データモデリング、API設計、スケーリングのトレードオフに関する候補者の思考プロセスを深掘りした。

  5. 行動面接ラウンド(2月)

    HR担当者とシニアエンジニアが共同で、チームワークに関するシナリオ、Bloombergへの志望動機、他社からの内定状況などを扱う非技術的なラウンドを実施した。

  6. 結果

    行動面接から約2営業日後、Bloombergが内定を出したい旨を伝えるメールを候補者は受け取った。

第1回コーディングラウンド

データ構造とアルゴリズム、面接官1名との2問構成

  • 「Consecutive Characters」問題の派生版
  • Number of Islands

解答はPythonで記述した。コードの実行や完璧な構文は求められなかった。

候補者はコードを書く前に解法全体を口頭で説明した。2問目では時間がかかったものの、落ち着いて終始アプローチを説明し続けた。

面接官は各問題について時間計算量と空間計算量を尋ねた。

第2回コーディングラウンド

データ構造とアルゴリズム、面接官2名

  • Design Underground System
  • Populating Next Right Pointers in Each Node

面接官はさらに、2問目のアルゴリズムがなぜノードを厳密に左から右へ処理しなければならないのか、その理由を説明するよう求めた。

候補者は今回もコーディング前に解法全体を説明し、指摘を受けると小さなバグを素早く修正した。

システム設計ラウンド

シニアエンジニアと動画ダウンロード視聴プラットフォームの設計

  • ユーザーが動画をダウンロードして視聴できるプラットフォームを設計せよ。視聴履歴を記憶し、視聴の進捗を追跡し、新規・既存ユーザー双方に動画をレコメンドする機能を持たせること
  • レコメンドシステムはどのように機能するか?
  • ユーザーごとにランキング済みのおすすめ動画リストを事前計算すると述べたが、ユーザー数が数百万人、動画数が数万本に及ぶ可能性がある場合、ユーザーごとに順序付きリストを保存するのか、またそれによってどのような問題が生じるか?
  • ユーザーが動画をダウンロード中にインターネット接続が不安定になった場合、どう対処するか?

候補者はまず永続化が必要なデータを洗い出し、データベーススキーマ(USERテーブルやVIDEOテーブルなど)の概略を示した。その後、ログイン、レコメンド、ダウンロードといった主要なAPIを列挙してから、大まかなアーキテクチャ図を描いた。

候補者のアプローチは、まず単一マシンに収まる設計を行い、次にパフォーマンス向上のためのキャッシュについて議論し、その後で初めて複数マシンへのスケーリングを検討するというものだった。

候補者は、データの鮮度や精度の要件を勝手に想定するのではなく、面接官に確認の質問をすることが有効だと感じた。

行動面接ラウンド

HR担当者とシニアエンジニアとの非技術的な対話

  • 同僚と問題の解決方法について意見が異なった場合、どうするか?
  • なぜBloombergなのか?
  • 他社からの内定はあるか?

このラウンドでは技術的な質問は一切なかった。

学びのポイント

  • コードを書く前に解法全体を口頭で説明すること。実装に小さなバグがあったり、理想より時間がかかったりしても、思考プロセスを明確に説明できることが重要だった。
  • システム設計では、まず単一マシンに収まるバージョンから始め、次にキャッシュを加え、その後で初めて複数マシンへのスケーリングを議論すること。いきなりスケーリングの話に飛びつくのは、この面接官が求めていたものではなかった。
  • システム設計ラウンドでは、要件を勝手に想定して設計を過剰に作り込むのではなく、(データの鮮度や精度の要件など)確認の質問をすること。
  • 計算量だけでなく正しさの根拠も説明できるように備えること。この候補者は「なぜこれで動くのか」という追加質問への対応力を、LeetCodeの演習量よりも証明の記述に重点を置いた大学のアルゴリズム講義のおかげだと述べている。
  • インターン歴が華やかでなかったり、GPAが平均的であったりしても、内定を得る妨げにはならなかった。候補者自身の言葉によれば、GPAがすべてではないので、自分を信じて挑戦する価値はあるという。

出典

質問と選考プロセスの事実は、下記リンクの候補者本人の公開投稿に基づきます。本文は当サイトによる再構成です。

候補者本人による英語の公開体験談を翻訳(出典: LeetCode Discuss)