面接体験談

Adobe コンピュータサイエンティストII 面接体験談(インド・ノイダ、2020年)

Adobeコンピュータサイエンティスト II·インド、ノイダ·面接時期: 2020年12月不合格

更新日: 2026年7月17日

この体験談は、10年以上のキャリアを持つ候補者が、Adobeのインド・ノイダオフィスでComputer Scientist IIのポジションに応募した際のものである。選考はBlueJeansを使ったリモート形式で行われ、1時間ずつ2ラウンドで終了した。

第1ラウンドでは、確率の問題と戦略パズルに続き、2つの設計問題が出題された。そのうち1つはメモリ制約下でのツリー分割に関する課題だった。第2ラウンドはC++言語の内部仕様に関する質問が中心で、最後に2つのオブジェクト指向設計の問題で締めくくられた。第2ラウンド後、候補者は人事からのフィードバックの連絡を受けておらず、本人の記述では、この沈黙を不合格と受け止めている。

選考プロセス

  1. 形式

    1時間程度のラウンドが2回、BlueJeansを使ってリモートで実施された。

  2. ラウンド1

    確率の問題とサイコロゲームのパズルから始まり、その後2つの設計問題に移った。1つはスネークゲーム(ハイレベル設計とローレベル設計)、もう1つはメモリ制約下でのツリー分割の課題で、実際に動くコードを書くことが求められた。

  3. ラウンド2

    C++言語やシステムに関する一連の質問(move semantics、リンク、copy-on-write)の後、2つのオブジェクト指向設計の問題が出題された。

  4. ラウンド2の後

    人事からのフィードバックの連絡はなかった。候補者の記述では、この連絡の欠如をそのラウンドでの不合格として扱っている。

ラウンド1 ── 問題解決とシステム設計

確率・パズルのウォームアップの後、2つの設計問題が続く。うち1つはメモリ制約下でのデータ構造の課題で、動くコードの実装が求められる。 · 1時間

  • 偏ったサイコロを題材にした確率の問題。
  • 「Lucky 7」というサイコロゲームの戦略に基づくパズル。
  • スネークゲームを設計する。クラス図を用いたハイレベル設計とローレベル設計の両方をカバーする。
  • 各ノードが左部分木の子ノード数も保持する二分探索木(BST)があり、ツリー全体を保持するにはメモリが限られているとする。ページごとの最大ノード数が与えられたとき、ツリーを複数のページ(ファイル/パーツ)に分割する方法を設計する ── getPageメソッドとして実装する。

ラウンド2 ── C++内部仕様とOOP設計

C++言語およびシステムに関する密度の高い質問群の後、2つのオブジェクト指向設計の問題が続く。 · 1時間

  • C++のmove semanticsについて説明する。
  • std::moveとstd::forwardの違い。
  • コンパイラがデフォルトで生成するメンバ関数と、それがC++11からC++14にかけてどう変わったか。
  • mutableキーワードの目的。
  • C++の可変長テンプレート(variadic templates)。
  • 静的リンクと動的リンクの違い。
  • OSの概念である「copy-on-write」について。
  • インスタンス化が2回までしか許されないクラスを設計する(シングルトンに似ているが上限が2つ)。さらに、これをスレッド間で正しく扱う方法についての追加質問。
  • 会議室の予約区間を管理するトラッカーを設計する。addInterval(会議が予約されたら部屋を追加)、deleteInterval(指定した時間区間の部屋を削除)、getNumRoom()(使用中の部屋の合計数、会議がなければ-1を返す)、そして特定の区間を指定するオーバーロードgetNumRoom(start, end)を持つ。

学びのポイント

  • 日常的な構文を超えたC++の内部仕様を復習しておく ── move semantics、moveとforwardの違い、コンパイラが生成する特殊メンバ関数、静的リンクと動的リンクの違いは、いずれも大きな設計問題の一部としてではなく、単独の質問として出題された。
  • オブジェクト指向設計の問題には並行処理に関する追加質問が続くことに備えておく。例えばインスタンス数が制限されたクラスをスレッドセーフにするといった内容で、元の質問自体はシステム系の問題として提示されていなくても起こりうる。
  • メモリ制約が明示されたツリー分割やページネーションの問題を、ホワイトボード上のスケッチだけでなく実際に動くコードで練習しておく ── この候補者はgetPageメソッドの実装を求められた。
  • 冒頭の確率やパズルの問題は、評価の中心というよりウォームアップとして捉える。この選考では、後半の質問が言語の深い理解と設計へと大きくシフトしていった。
  • 最終ラウンドの後にフィードバックの連絡がない場合、特定の結果を決めつけるのではなく、リクルーターに直接フォローアップする価値があるかもしれない。

出典

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

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