富士通SEオンライン評価+技術面接完全体験:3問のコーディング課題から最終面接までの全記録
富士通SEオンライン評価+技術面接の全プロセス振り返り。OA3問、技術1次・2次、HR面接の実際の問題を含む。データ構造、アルゴリズム、Java基礎、システム設計の核心ポイントを詳解
背景紹介
本人は2年のJava開発経験があり、中堅大学の学士号を取得しています。以前は委託開発企業で官公庁システムを担当していました。正直に言うと、委託開発で2年過ごすのはかなり窮屈でした。技術的成長が限られ、プロジェクトにも挑戦性がありませんでした。富士通SEは転職活動での第一志望でした。オンライン評価プロセスは厳しいですが、富士通の技術スタックとビジネス規模はトップクラスで、純粋な委託開発よりはるかに良い環境です。
準備期間は約1ヶ月で、LeetCodeの中級問題を約150問解きました。データ構造ではリンクリスト、木、グラフを一通り復習しました。Java基礎ではコレクション、並行処理、JVMを復習し、オンライン評価の入出力フォーマットも特別に練習しました。応募後3日でオンライン評価の通知を受け取り、全プロセスで約2週間かかりました。
第1ラウンド:オンライン評価(3問、150分)
5月12日午後2時、自宅でオンラインプラットフォームを使用して受験。15分前にログインし、ウェブカメラとマイクをオンにしました。正直、手汗がすごかったです。オンライン評価に落ちると後はすべて無意味になるからです。オンライン評価は合計600点で、3問がそれぞれ100点、200点、300点です。一般的に150点以上で面接の機会がありますが、安全圏に入るには300点以上を目指すべきです。
問題1(100点):文字列圧縮
連続する重複文字を「文字+回数」の形式に圧縮する問題です。例えば"aabccc"は"a2bc3"になります。単一文字には回数を付けません。この問題は難しくなく、2ポインタで走査するだけです。約8分で完成し、全テストケースに合格しました。
問題2(200点):スライディングウィンドウの最大値
配列とウィンドウサイズkが与えられ、各スライディングウィンドウの最大値を求める問題です。これは実質的にLeetCode 239と同じで、単調デキューを使用してO(n)の時間計算量で解きました。約15分で完成し、全テストケースに合格しました。以前練習していたので、かなり速く解けました。
問題3(300点):最短経路の変種
グリッドマップで、一部のセルに障害物、一部のセルに加速アイテムがある状態で、スタートからゴールまでの最短時間を求める問題です。加速アイテムは次の移動距離を2倍にします。BFSを使用し、状態には座標に加えて加速アイテムの保有状況も記録しました。約20分考えてから書き始め、途中でロジックを1回修正し、最終的に10テストケースのうち8つに合格しました。2つはタイムアウトでした。おそらく状態の重複排除が最適ではなかったのだと思います。
オンライン評価の最終スコアは460点でした。問題3は合格したテストケースの割合に応じて部分点が与えられました。翌日に技術面接1回目の通知を受け取りました。
第2ラウンド:技術面接1回目(ビデオ面接、約60分)
5月15日午前10時、富士通のビデオ会議ツールで面接。面接官はシニアエンジニアで、30代前半の印象で、かなり親切でした。まずオンライン評価について話し、問題3のアプローチを聞かれました。BFSの状態設計を改めて説明し、面接官はアプローチは正しいが、状態空間が大きすぎてタイムアウトしたのだろうと言いました。
1. 自己紹介
職務経歴と技術スタックを簡潔に説明し、官公庁システムのコアモジュールに重点を置きました。約3分。
2. ArrayListとLinkedListの違い
基盤データ構造、ランダムアクセス性能、挿入・削除性能、メモリ使用量の観点から比較しました:ArrayListは配列ベースでランダムアクセスO(1)、中間の挿入・削除O(n);LinkedListは双方向リンクリストベースでランダムアクセスO(n)、先頭・末尾の挿入・削除O(1)。面接官がLinkedListを使う場面を深掘りし、Dequeの実装のように頻繁に先頭・末尾に挿入する場面だと答えました。
3. HashMapのリサイズ機構
要素数が容量に負荷係数を掛けた値を超えると、容量が2倍になることを説明しました。JDK 1.8では高低ビットリンクリストを使用して再ハッシュを回避し、新しいビット位置が0か1かを確認するだけで新しい配列の位置が決まります。面接官がマルチスレッドでのHashMapの問題を深掘りし、データ損失と無限ループ(JDK 1.7の先頭挿入による循環リンクリスト)と答えました。
4. スレッドプールのコアパラメータ
7つを挙げました:corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。タスク送信のフローを強調しました:まずコアスレッドへ→コアが満杯ならキューへ→キューが満杯なら非コアスレッドを作成→すべて満杯なら拒否ポリシーを実行。面接官が4つの拒否ポリシーを深掘りし、AbortPolicy、CallerRunsPolicy、DiscardPolicy、DiscardOldestPolicyと答えました。
5. SpringのIOCとAOP
IOCは制御の反転で、オブジェクトの作成と管理をSpringコンテナに委譲し、DI(依存性注入)で実現する。AOPはアスペクト指向プログラミングで、横断的関心事(ロギング、トランザクション、権限)をビジネスコードから分離する。面接官がAOPの実装方式を深掘りし、JDK動的プロキシとCGLIBと答えました。
6. MySQLのインデックスタイプ
主キーインデックス、ユニークインデックス、通常インデックス、複合インデックス、全文インデックスを説明しました。複合インデックスの最左前方一致原則とカバリングインデックスに重点を置きました。面接官がクラスタードインデックスと非クラスタードインデックスの違いを深掘りし、クラスタードインデックスのリーフノードは完全なデータ行を格納し、非クラスタードインデックスのリーフノードは主キー値を格納しテーブル参照が必要だと答えました。
7. アルゴリズム:2つのソート済みリンクリストのマージ(LeetCode 21)
ダミーヘッドノード + 2ポインタを使用、10分で完成。面接官がK個のソート済みリンクリストのマージに拡張するよう求め、優先度付きキューを使用し、時間計算量O(nklogk)と説明しました。コードの記述は不要で、アプローチの説明のみで十分でした。
8. プロジェクト深掘り:官公庁システムの技術アーキテクチャ
Spring Boot + MyBatis + MySQL + Redisで、フロントエンドはVueと説明しました。面接官がプロジェクトでのRedisの使用方法を深掘りし、辞書データのキャッシュと分散ロックと答えました。正直、このプロジェクトの技術的難易度は高くなく、面接官もあまり深掘りしませんでした。
1次面接終了後、その日の午後に2次面接の通知を受け取りました。富士通の効率は確かに高いです。
第3ラウンド:技術面接2回目(ビデオ面接、約70分)
5月17日午後3時、このラウンドの面接官は部門の技術リードで、質問はより深く、実際のプロジェクト経験に重点を置いていました。
1. JVMガベージコレクションアルゴリズム
マークスイープ、マークコピー、マークコンパクト、世代別収集を説明しました。新生代はマークコピー(EdenとSurvivor領域)、老年代はマークコンパクトを使用することを強調しました。面接官がCMSとG1の違いを深掘りし、CMSは並行マークスイープで浮遊ゴミと空間断片化の問題がある;G1はRegionベースの分割収集で、停止時間を制御できると答えました。
2. volatileとsynchronizedの違い
volatileは可視性を保証し命令の並べ替えを防止するが、原子性は保証しない;synchronizedは原子性、可視性、順序性を保証する。volatileは軽量同期で1書き込み複数読み取りのシナリオに適している;synchronizedは重量ロックで複合操作の原子性保証に適している。面接官がvolatileの実装原理を深掘りし、メモリバリアと答えました。
3. Redisのデータ構造
5つの基本タイプを挙げました:String、List、Hash、Set、ZSet。面接官がZSetの基盤実装を深掘りし、圧縮リストとスキップリストで、要素数が128を超えるか要素長が64バイトを超えると圧縮リストからスキップリストに変換されると答えました。
4. フラッシュセールシステムの設計方法
複数レイヤーから説明:1)フロントエンド:ボタンのデバウンス、CAPTCHA;2)ゲートウェイ:レート制限;3)サービス:Redis在庫事前減算、MQ非同期注文作成;4)データベース:楽観ロック。面接官がRedisとデータベース間のデータ整合性の確保方法を深掘りし、先にデータベースを更新してからキャッシュを削除し、遅延二重削除を組み合わせると答えました。
5. 分散ロックの実装方法
3つのアプローチを説明:1)RedisのSETNX + 有効期限;2)Redissonのウォッチドッグによる自動更新;3)Zookeeperの一時順序ノード。面接官がRedis分散ロックの問題を深掘りし、マスタースレーブ切り替え時にロックが失われる可能性があり、RedLockアルゴリズムで解決できるが性能オーバーヘッドがあると答えました。
6. アルゴリズム:二分木の最も近い共通祖先(LeetCode 236)
再帰的な後順走査を使用、15分で完成。面接官が時間計算量の分析を求め、O(n)と答えました。これはうまくいきました。
7. プロジェクトで直面した最も挑戦的な問題
Excelエクスポート時に10万件のデータを一度にメモリにロードしたことが原因のオンラインOOM問題について説明しました。調査:JVMヒープメモリモニタリングで老年代の継続的増加を発見、GCログで頻繁なFull GCでも回収不足を確認、jmapでヒープダンプをエクスポートして分析した結果、Excelデータオブジェクトが最大の消費者であることが判明。解決策:バッチクエリ + ストリーミングExcel書き込み。
8. 何か質問はありますか
SEからシニアSEへの昇進基準について質問しました。面接官は主にプロジェクト貢献と技術能力に依存し、通常1〜2年だと回答しました。
第4ラウンド:HR面接(ビデオ面接、約20分)
5月19日午前11時、HR面接は簡潔でした。
1. なぜ富士通SEを選んだのか
富士通の技術プラットフォームとビジネス規模は業界トップレベルだと答えました。初期の役割は最も華やかではないかもしれませんが、コアプロジェクトに触れることができ、成長の機会は純粋な委託開発よりはるかに大きいと言いました。
2. 残業についてどう思うか
プロジェクトが切迫している時の残業は受け入れられるが、常態化ではなく期間的なものを希望すると答えました。
3. 希望給与
希望を述べ、HRは等級決定後に具体的なパッケージを提示すると回答しました。
4. 他に質問はありますか
入社後の研修について質問しました。HRは1週間のオリエンテーションと3ヶ月のメンターシップ期間があると回答しました。
面接問題まとめ
1. 文字列圧縮 — 文字列操作 — 簡単
2. スライディングウィンドウの最大値 — キュー/スライディングウィンドウ — 中
3. 最短経路の変種 — BFS/グラフ — 難
4. ArrayListとLinkedListの違い — Java基礎 — 簡単
5. HashMapリサイズ機構 — Java基礎 — 中
6. スレッドプールコアパラメータ — Java並行 — 中
7. Spring IOCとAOP — Spring — 中
8. MySQLインデックスタイプ — データベース — 中
9. 2つのソート済みリンクリストのマージ — リンクリスト — 簡単
10. JVMガベージコレクションアルゴリズム — JVM — 中
11. volatileとsynchronizedの違い — Java並行 — 中
12. Redisデータ構造 — ミドルウェア — 中
13. フラッシュセールシステム設計 — システム設計 — 難
14. 分散ロック実装 — 分散システム — 難
15. 二分木の最も近い共通祖先 — 木 — 中
感想とアドバイス
1. オンライン評価が関門 — 真剣に準備する:富士通のオンライン評価は3問です。問題1は必ず完全正解、問題2は可能な限り完全正解、問題3はできるだけ多くの点数を取る。問題3は完全に通過しませんでしたが、最初の2問で満点を取り、合計460点で十分でした。練習の重点は文字列、配列、BFS/DFS、動的プログラミングに置きましょう。これらは高頻度トピックです。
2. Java基礎は確実に:富士通の技術面接は一部企業のようにソースコードレベルまで深掘りしませんが、基礎はしっかりしている必要があります。コレクション、並行処理、JVMは必須トピックで、プロジェクトシナリオの文脈で聞かれます。単なる暗記ではありません。
3. プロジェクト経験にはハイライトが必要:私の官公庁システムは技術的に印象的ではありませんでしたが、OOMトラブルシューティングのプロセスと解決策に重点を置き、面接官は実践的だと評価しました。プロジェクトがどれほど素晴らしいかではなく、そこから何を学んだかが重要です。
4. アルゴリズムは弱くてはいけない:技術面接ではライブコーディングが求められます。中級問題を解ける必要があります。ソート済みリンクリストのマージや最も近い共通祖先などの古典問題は必須です。
最終結果:5月22日にオファーを受け取りました。等級はSE、勤務地は東京。応募からオファー獲得まで合計10日。全体的に良い体験で、プロセスは非常に効率的でした。
FAQ
Q:富士通のオンライン評価は何点で合格できますか?
A:一般的に150点以上で面接の機会がありますが、安全圏に入るには300点以上を目指すべきです。合計600点で、3問がそれぞれ100/200/300点です。
Q:富士通のSE面接は通常何ラウンドありますか?
A:通常3〜4ラウンド:オンライン評価、技術1次、技術2次、HR面接。一部のポジションはクロス面接がある場合も。
Q:富士通のSE技術面接の重点は何ですか?
A:Java基礎、並行処理、JVM、Spring、MySQL、Redisは必須トピック。ライブアルゴリズムコーディングも標準です。
Q:富士通のSEの給与はどれくらいですか?
A:SE等級で年収約450〜600万円(ボーナス含む)、等級と勤務地によって異なります。
Q:SEからシニアSEへの昇進にはどれくらいかかりますか?
A:通常1〜2年で、主にプロジェクト貢献と技術能力に依存します。