面接体験談

Adobe SSE インドオンサイト面接体験談:全5ラウンド、並行処理設計が中心

AdobeSSE·インド·面接時期: 2019年8月結果不明

更新日: 2026年7月17日

バックエンド開発でJavaとSparkの経験を6年以上持つ候補者が、2019年8月にインドで実施されたAdobe Senior Software Engineer(SSE)のオンサイト面接ループについて詳細な体験談を寄せた。オンサイトは同日中に4つの対面ラウンドが連続して行われ、途中に昼食休憩が挟まれ、その約2日後にはビデオ会議による5つ目のラウンドが行われた。

候補者によれば、オンサイトの各ラウンドはすべて勝ち抜き方式(エリミネーション形式)で、定番のデータ構造・アルゴリズム問題と、並行処理を重視したシステム設計、そしてより広範なアーキテクチャ設計のラウンドが組み合わされていた。最後のビデオラウンドでは、ハードウェアの見積もり、ガベージコレクション、データベースの比較といった内容に移った。この体験談の執筆時点では、候補者はまだ結果の連絡を受けていなかった。

選考プロセス

  1. オンサイトのスケジュール

    インドで同日中に4つの対面ラウンドが連続して組まれ、2つ目のラウンドの後に30分の昼食休憩が設けられた。

  2. オンサイトループ

    各ラウンドはデータ構造とアルゴリズム、エンジニアリングマネージャーラウンド、2回目のデータ構造とアルゴリズムラウンド、テクニカルアーキテクトラウンドで構成され、候補者はすべてのラウンドを勝ち抜き方式だったと述べている。

  3. 事後のビデオラウンド

    5つ目のラウンドはビデオ会議で実施され、オンサイトの約2日後に行われ、システム、見積もり、データベースに関するトピックが中心だった。

  4. 結果

    この体験談の執筆時点で、候補者はまだ結果の連絡を受けていなかった。

オンサイト ラウンド1 - データ構造とアルゴリズム

基本的なデータ構造・アルゴリズムと並行処理の基礎

  • 自己紹介・経歴についての一般的な質問
  • All Nodes Distance K in Binary Tree:二分木において、対象ノードから指定した距離にあるすべてのノードを求める
  • ミューテックスとセマフォの違いを説明する
  • スレッドセーフなHashMapを設計する

候補者は面接官について親しみやすい人物だったと述べており、スレッドセーフなHashMapの設計問題では中身の濃いやり取りがあったという。

オンサイト ラウンド2 - エンジニアリングマネージャー

プロジェクトの深掘りと並行処理を重視した設計問題

  • これまでで最も困難だったプロジェクトについて説明し、深掘りする
  • LFUとLRUの両方のエビクションに対応し、コンストラクタでエビクションポリシーを選択できる、同一の基盤データ構造を用いたスレッドセーフなキャッシュを設計する

候補者はこの面接官がそっけなく、何度も話を遮られたと感じており、面接官自身もLFUエビクションの実際の仕組みを十分に理解していないように思えたという。

オンサイト ラウンド3 - データ構造とアルゴリズム

アルゴリズム問題の解法

  • House Robber II:円形に並んだ家から、隣り合う2軒を同時に狙わずに盗める金額を最大化する
  • Single Number II:他の要素がすべてちょうど3回ずつ現れる配列の中で、1回だけ現れる要素を見つける
  • ストリームから出現頻度上位10件の単語を返すデータ構造を設計する

候補者はこのラウンドをループの中で最も手応えがあったと評価しており、円形の家泥棒問題について詳細な議論を交わし、2問目についても好意的なフィードバックを得たという。

オンサイト ラウンド4 - テクニカルアーキテクト

高レベルのシステム設計とAPI設計

  • m階・nリフトに対応可能で、各リフトが特定の階のサブセットに限定できるような、高レベルのエレベーターシステムを設計する
  • セキュリティ面も考慮したうえで、チャットアプリケーションのAPIを設計する

面接官は入社から約12年のベテランで、システム設計のトレードオフやキャリアの成長についての候補者からの質問にも答えてくれたという。

ビデオスクリーン(オンサイト後)

システム見積もり、ガベージコレクション、データベース · オンサイトの約2日後に実施

  • 引数も戻り値もない関数が自分自身を無限に呼び出し続けると何が起こるか:スタックオーバーフローかメモリ枯渇か
  • 8GBのRAMと2.5GHzのクアッドコアプロセッサが与えられた場合、メモリが枯渇するまでの時間を見積もる
  • 無限再帰の代わりに無限while(true)ループの場合について、同じ2つの質問を繰り返す
  • 1000個の数値からなる配列が与えられた場合、それらを逐次的に掛け合わせるのにかかる時間を見積もり、その最適化方法(例えばスレッドへの並列化など)を説明したうえで、改善後の時間を見積もる
  • ガベージコレクタを設計する
  • レジュメ(職務経歴)に基づくデータベースに関する質問
  • CassandraとMySQLについて、設計思想・パフォーマンス・ユースケースの観点で比較する
  • 3層アーキテクチャについて説明する
  • 3層アーキテクチャのパフォーマンスボトルネックをどのようにテストするか
  • スケーラビリティに関する質問

候補者の見立てでは、パフォーマンステストというトピックだけでも、フォローアップの質問が約10個出たという。

学びのポイント

  • ミューテックスとセマフォの違いなど並行処理の基本プリミティブを復習し、HashMapやLRU/LFU併用キャッシュのようなスレッドセーフな構造をゼロから設計できるように備えておくこと。
  • マネージャー系のラウンドでは、コーディング問題だけでなく、自分自身のプロジェクト経歴を深掘りされることを想定しておくこと。
  • 指定されたRAMやCPUのスペックから処理にかかるおおよその時間を見積もるなど、ハードウェアに基づいたおおまかな数値推定を練習しておくこと。面接官によってはビッグO記法だけでなく、桁レベルの見積もり能力を試してくることがある。
  • システム設計ラウンドでは、固定された1つの構成ではなく、階やリフトのグループで分割されたエレベーターシステムのように、設定変更可能なサブシステムについて考える準備をしておくこと。
  • 面接ループが複数日・複数ラウンドにまたがる場合は、結果連絡の見込み時期についてリクルーターに確認しておくと、待っている間の見通しが立てやすい。

出典

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

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