サムスンソフトウェアエンジニア面接体験記:オンライン試験から入社までの完全ガイド
非情報専攻2年経験のサムスンソフトウェアエンジニア面接の完全体験記。オンライン試験3問のアルゴリズム問題の詳細解法、技術1次・2次面接の実際の問題、性格検査の注意点、2026年最新の面接体験を共有。
背景紹介
まずは私の経歴からお話しします。私は情報系ではなく、大学では機械工学を専攻していました。卒業後、半年間独学でJavaを学び、小さな会社で2年間開発に携わりました。会社の規模は小さく、技術スタックも古く、主にSpring Boot + MySQLという構成でした。正直なところ、小さな会社に長くいると、技術的な成長が遅く、給料も上がらないことに不安を感じていました。
今年の初め、以前NECで契約社員として働いていた友人が、契約社員のハードルは思ったほど高くないし、正社員への転換机会も増えていると教えてくれました。彼は挑戦してみることを勧め、社内推薦もしてくれました。正直、最初は躊躇していました。ネット上の契約社員の評価は賛否両論でしたが、自分の現状を考えて、思い切って挑戦することにしました。
準備期間は約2ヶ月で、主にアルゴリズム問題の練習とJava基礎の復習に費やしました。以下に面接の全過程を詳しく共有します。私と同じように情報系以外から大手を目指す方の参考になれば幸いです。
面接プロセスの完全レビュー
ステップ1:オンライン試験(3問のアルゴリズム問題、100+100+200点制)
NECのオンライン試験はコーディングプラットフォームで行われ、時間は2時間、3問で構成され、配点はそれぞれ100点、100点、200点です。合計400点で、一般的に150点以上で面接の機会が得られますが、チームによって要件が異なり、200点以上を要求するチームもあると聞いています。
第1問(100点):文字列処理
文字列内の連続する重複文字を「文字+回数」の形式に圧縮する問題です。例えば"aabbbcc"を"a2b3c2"にします。1回しか出現しない文字は数字を省略します。この問題は難しくなく、双ポインタで一度走査して約10分で完了しました。空文字列や1文字の場合などのエッジケースに注意が必要です。
第2問(100点):スライディングウィンドウ
整数配列と目標値targetが与えられ、部分配列の最大値と最小値の差がtargetを超えない最長の連続部分配列を見つける問題です。これは明らかにスライディングウィンドウの問題で、2つの単調キューを使ってウィンドウ内の最大値と最小値をそれぞれ管理し、O(n)の時間計算量で解きました。全テストケースが通りましたが、最初に単調キューのデキュー条件を間違えてデバッグに時間がかかり、約30分かかりました。
第3問(200点):グラフ理論BFS
グリッドマップ上に障害物とテレポータがあり、スタートからゴールまでの最短経路を求める問題です。テレポータは別のテレポータの位置に瞬間移動できます。この問題のポイントは、BFSでテレポータに到達した時の特別な処理です。通常の4方向の移動に加えて、テレポータの目的地もキューに追加する必要があります。約40分で書き上げましたが、テレポータの双方向処理を忘れて一部のテストケースがタイムアウトし、visited配列で重複排除を追加して解決しました。
最終的なオンライン試験のスコアは350点でした。第1問100点、第2問100点、第3問150点(一部テストケースが未通過)。第3問で満点を取れなかったのは残念でしたが、350点で十分でした。
ステップ2:技術面接1次(約1時間)
オンライン試験通過から約1週間後、HRから1次面接の連絡がありました。面接官は30歳くらいの男性で、態度も良く、まず自己紹介を求め、その後質問に入りました。
Java基礎:
面接官はまずJavaの基本データ型について質問し、次にオートボクシング・アンボクシングの原理、Integerキャッシュプールの範囲(-128〜127)について聞きました。この部分はまあまあ答えられましたが、Integerキャッシュプールの正確な範囲を最初に間違えてしまい、面接官のヒントで思い出しました。
コレクションフレームワーク:
HashMapの基礎実装について聞かれました。JDK 1.8の配列+リンクリスト+赤黒木構造、リサイズメカニズム、負荷係数が0.75の理由について説明しました。面接官はHashMapとConcurrentHashMapの違いを深掘りし、セグメントロックからCAS+synchronizedへの進化について説明しました。
マルチスレッド:
スレッドプールのコアパラメータについて聞かれ、corePoolSize、maximumPoolSize、keepAliveTime、workQueue、threadFactory、rejectedExecutionHandlerについて説明しました。次にスレッドプールの動作フロー — コアスレッド、キュー、非コアスレッド、拒否ポリシーの順について説明しました。面接官はsynchronizedとReentrantLockの違いも聞き、再入可能性、フェアロック、割り込み応答について説明しました。
コーディングセクション:
面接官がSingletonパターンの手書きを求めました。DCL(ダブルチェックロッキング)バージョンを書き、volatileの役割も説明しました。その後、アルゴリズム問題 — 二分木のレベル順トラバーサルが出題されました。BFSとキューを使って書き、難しくなく約5分で完了しました。
ステップ3:技術面接2次(約1時間)
1次面接から3日後に2次が予定されました。2次の面接官はより上位の役職で、より深い質問をされました。
プロジェクトの深掘り:
面接官は最近のプロジェクトについて詳しく説明するよう求めました。私は注文システムのリファクタリング経験について話しました。なぜこの技術ソリューションを選んだのか?他の選択肢を検討したか?どんな問題に直面したか?どう解決したか?など、多くの詳細を深掘りされました。自分のプロジェクトだったので準備ができており、スムーズに答えられました。しかし、予想外の質問もありました。「注文量がさらに10倍増えたら、システムは耐えられるか?」正直に現在のアーキテクチャのボトルネックを説明し、考えられる最適化の方向性について話しました。
Spring Boot:
Spring Bootの自動設定原理について聞かれました。@EnableAutoConfigurationアノテーションとspring.factoriesファイル、@ConditionalOnClassなどの条件付きアノテーションについて説明しました。面接官はSpring Bootの起動プロセスについても聞きましたが、大まかな流れしか説明できず、詳細が不十分でした。
MySQL:
インデックスに重点が置かれました。B+ツリーインデックスの構造、クラスタインデックスと非クラスタインデックスの違い、カバリングインデックス、最左前方一致原則について聞かれました。またシナリオ問題として「クエリが遅い場合、どうトラブルシューティングするか?」と聞かれ、EXPLAINで実行計画を確認し、インデックスが使われているか、スキャン行数はいくつかを分析すると説明しました。
Redis:
Redisの一般的なデータ構造とそれぞれのユースケースについて聞かれました。Stringはキャッシュ、Hashはオブジェクト、Setはタグ、ZSetはランキング、Listはメッセージキューとして説明しました。面接官はRedisの永続化方式RDBとAOFの違い、Redisの有効期限削除戦略とメモリ退去戦略について深掘りしました。
ステップ4:性格検査
技術面接通過後、性格検査のリンクが送られてきました。この検査は約200問以上で、主にあなたの性格が社風に合うかを判断します。ネット上では性格検査で落とされる人が多いと言われているので、真剣に取り組む必要があります。
私のアドバイス:一貫性を保つことが重要です。検査には言い方を変えた同じ質問が多く含まれており、矛盾する回答は不誠実と判定されます。前向きでポジティブな選択肢を選ぶようにしましょう。例えば、困難に直面したら「解決方法を探す」ではなく「助けを求める」を選び、チームワークでは「指示に従う」ではなく「主体的に担う」を選びます。また、極端な選択肢は避け、中庸で前向きな姿勢を保ちましょう。
結果
オンライン試験後1週間で1次面接、1次面接後3日で2次面接、2次面接後4日でオファーを受け取りました。全プロセスは約2週間強で、かなりスピーディーでした。最終的な給与は前の会社より約40%増でした。契約社員の身分は正社員とまだ差がありますが、私にとっては大きなステップアップでした。
面接の実際の問題まとめ
オンライン試験の問題:
1. 文字列圧縮:連続する重複文字を「文字+回数」形式に圧縮
2. スライディングウィンドウ:最大値と最小値の差がtargetを超えない最長連続部分配列
3. グラフBFS:障害物とテレポータがあるグリッドマップの最短経路
技術1次面接の問題:
1. Java基本データ型とオートボクシング・アンボクシング
2. Integerキャッシュプールの範囲
3. HashMapの基礎実装とリサイズメカニズム
4. HashMapとConcurrentHashMapの違い
5. スレッドプールのコアパラメータと動作フロー
6. synchronizedとReentrantLockの違い
7. DCL Singletonパターンの手書き
8. アルゴリズム:二分木のレベル順トラバーサル
技術2次面接の問題:
1. プロジェクトの深掘り:技術選定とシステム拡張性
2. Spring Boot自動設定の原理
3. MySQL B+ツリーインデックスの構造
4. クラスタインデックスと非クラスタインデックスの違い
5. カバリングインデックスと最左前方一致
6. スロークエリのトラブルシューティング方法
7. Redisデータ構造とユースケース
8. Redis永続化方式RDBとAOF
感想とアドバイス
1. オンライン試験は足場 — しっかり準備しましょう。難易度はそれほど高くありませんが、油断は禁物です。少なくとも50問のLeetCode中級問題を練習し、文字列、配列、スライディングウィンドウ、BFS/DFSなどの高頻度ジャンルに重点を置くことをお勧めします。スコアが高いほど、後のチーム選択の幅が広がります。
2. Java基礎をしっかり固める。1次面接は主に基礎を問われます。HashMap、スレッドプール、並行処理はほぼ必出です。暗記するだけでなく、原理を本当に理解しましょう。面接官は詳細を深掘りします。
3. プロジェクト経験を明確に説明できるようにする。2次面接ではプロジェクトを深掘りされます。過去のプロジェクトを事前に整理し、各技術的決定の背景にある理由を考えておきましょう。面接官が重視するのは「何を使ったか」ではなく「なぜその技術を選んだか」です。
4. 性格検査を軽視しない。技術面接に合格しても性格検査で落ちたケースを知っています。2つの原則を覚えておきましょう:一貫性と前向きな姿勢。
5. 情報系以外だからといって卑下しない。面接官はあなたの専攻をそれほど気にしていません。実際の能力と学習姿勢を重視しています。私は面接で情報系以外の背景を自ら伝えましたが、面接官は独学能力を強みと捉えてくれました。
よくある質問FAQ
Q:契約社員と正社員の違いは何ですか?
A:契約社員は人材派遣会社との契約で、会社と直接契約するわけではありません。給与や福利厚生は正社員より低いです。ただし、契約から正社員への転換机会は確かにあり、パフォーマンスが良ければ1〜2年で転換のチャンスがあります。
Q:オンライン試験は何点で合格できますか?
A:一般的に150点以上で面接の機会が得られますが、人気チームは200点以上を要求する場合があります。250点以上を目標にすることをお勧めします。
Q:情報系以外でも面接に合格できますか?
A:もちろんです。学歴や専攻の要件は比較的柔軟で、実際のコーディング能力が重視されます。私は情報系以外ですが、オンライン試験350点で面接も無事に合格しました。
Q:性格検査で落とされることはありますか?
A:はい、あります。不合格の場合は再受験できることが多いですが、一発合格がベストです。ポイントは一貫性と前向きな姿勢 — 極端な選択肢は避けましょう。
Q:労働強度は厳しいですか?
A:チームによります。残業が多いチームもあれば、比較的余裕のあるチームもあります。全体として、業務内容と強度は正社員とほぼ同じです。ただし、給与は相対的に低いので、その点は覚悟が必要です。