2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

体験談から読み解くエンジニア面接での良問5選

2
Posted at

面接官は何を見ているのか?

エンジニア面接というと、LeetCodeやアルゴリズム問題を思い浮かべる人も多いでしょう。

しかし、実際に有名メガベンチャーや自社開発企業の面接を受けてみると、必ずしも難しいアルゴリズム問題ばかりが出題されるわけではありません。

むしろ多くの企業では、

  • 実務経験があるか
  • システム全体を理解しているか
  • 問題解決能力があるか
  • 技術選定の理由を説明できるか

といった点を確認するために、実務に近い質問を投げかけます。

この記事では、私自身が面接で実際に出会った質問や、面接の体験談から良問をピックアップし、

「なぜこの質問が良問なのか」

「面接官は何を見ているのか」

まで掘り下げて解説します。

良問① ブラウザにURLを入力すると何が起きるか

問題

ブラウザのアドレスバーにURLを入力してEnterを押した後、画面が表示されるまでに何が起きますか?

なぜ良問なのか

エンジニアであれば普段からブラウザを使っていると思いますが、DNSやTCP, HTTPSからWebサーバーなどを体系的に理解している人は意外と多くありません。

この質問は、「Webシステム全体を理解しているか」 を確認できる非常に優秀な質問です。

面接官が見ているポイント

この質問は、ソフトウェアエンジニアとしての知識量を確認するためだけに行われるものではありません。

面接官が本当に知りたいのは、

「自分が担当している領域以外も含めて、システム全体を理解しているか」

です。

例えばフロントエンドエンジニアであっても、API通信が遅い場合にはネットワークやサーバー側の知識が必要になります。

逆にバックエンドエンジニアであっても、ブラウザのレンダリングやキャッシュの仕組みを理解していなければ、パフォーマンス問題の切り分けは難しくなります。

また、実務では障害対応や性能改善を行う機会も少なくありません。

その際、

・DNSで問題が発生しているのか

・CDNでキャッシュされているのか

・サーバー応答が遅いのか

・ブラウザ側の描画が遅いのか

を切り分ける必要があります。

この質問は、そうした実務で必要となる「システム全体を俯瞰する力」があるかを確認するための良問です。

模範解答

ブラウザにURLを入力すると、まずDNSによってドメイン名からIPアドレスを取得します。

その後、対象サーバーとのTCP接続を確立し、HTTPS通信の場合はTLSハンドシェイクによって暗号化通信の準備を行います。

接続が確立されるとHTTPリクエストが送信され、WebサーバーはHTMLを返却します。

ブラウザは受け取ったHTMLを解析し、必要なCSSやJavaScript、画像などのリソースを追加で取得します。

また実際のサービスでは、CDNやブラウザキャッシュが利用されていることも多く、必ずしも毎回オリジンサーバーまでリクエストが到達するとは限りません。

しかし、上記は割と一般的な回答なのでビックテックや外資ではさらに深掘りしてくることもあります。

「TCP接続はどのようにして確立する?」

「TLSハンドシェイクについて説明して」

なので、深く理解しておくことに越したことはありませんね。

良問② 認証と認可の違い

問題

認証と認可の違いを説明してください。

なぜ良問なのか

一見すると初心者向けの質問です。

しかし実際には、改めて聞かれると中級者でも答えられない方がいると思いますし、セキュリティ設計の理解度が非常によく表れます。

面接官が見ているポイント

認証と認可の違いは、Web開発における非常に基本的な概念です。

そのため面接官は単なる用語の暗記を確認したいわけではないかと思います。

この質問を通じて、

・セキュリティの基礎を理解しているか

・ログイン機能を実装した経験があるか

・権限管理の設計経験があるか

を確認しています。

実際のシステム開発では、

「ログインは成功するが権限チェックに不備があり、本来アクセスできない情報が閲覧できてしまった」

という事故が発生することがあります。

そのため認証と認可を正しく区別して理解していることは、セキュリティ上非常に重要です。

模範解答

認証は、利用者が誰であるかを確認する仕組みです。

例えばメールアドレスとパスワードによるログインや、生体認証などが該当します。

一方で認可(Authorization)は、認証済みユーザーに対してどの操作を許可するかを管理する仕組みです。

例えば管理者のみがユーザー削除機能を利用できるようにする制御は認可に該当します。

簡単に言えば、

認証は「あなたは誰か」

認可は「あなたは何ができるか」

を管理する仕組みです。

良問③ 利用者一覧の表示速度が遅い。どこを調査するか

問題

Webアプリケーションで利用者一覧画面の表示速度が遅いです。フロントエンドとバックエンドの両方の観点から調査してください。

なぜ良問なのか

こちらは個人的に最も良問だと思っています。

この質問が優れているのは、回答が何通りもあってその人の経験値によって回答が変わってくるところです。

例えば、

「N+1問題とは何ですか?」

という質問であれば、知識を暗記しているだけでも回答できます。

一方、

「利用者一覧画面が遅い」

という状況では、

・原因の切り分け

・パフォーマンス改善の知識

・実際の障害対応経験

などが必要であり、この質問は候補者の実務経験や問題解決能力が非常に表れやすい良問と言えます。

面接官が見ているポイント

この質問では主に以下を確認しています。

① ボトルネックを切り分ける能力

問題が起きた際に、「どこが遅いのか」を順序立てて調査できるか。

② パフォーマンス改善の知識

例えば、

バックエンドであれば

  • インデックス

  • N+1問題

  • キャッシュ

・- SQL最適化

フロントエンドであれば

  • 再レンダリング

  • 仮想スクロール

  • 画像最適化

などの知識を持っているか。

模範解答

まずブラウザの開発者ツールを開き、NetworkタブからAPIの応答時間を確認します。

APIのレスポンス自体が遅い場合はバックエンド側の問題である可能性が高いため、サーバーログを確認します。

バックエンドでは主に以下を調査します。

  • SQL実行時間

  • インデックス不足

  • N+1問題

  • APIレスポンスサイズ

  • Redisなどのキャッシュ利用状況

  • CPU・メモリ使用率

一方でAPI応答が高速な場合はフロントエンド側を調査します。

フロントエンド

  • Networkタブでのリソース取得時間

  • React DevToolsによる再レンダリング確認

  • JavaScript実行時間

  • 大量DOM描画

  • 画像サイズ

  • 仮想スクロール未導入による描画負荷

このように、まずボトルネックを特定し、その後に原因箇所を深掘りしていきます。

良問④ 技術スタックのメリット・デメリットを説明してください

問題

プロジェクトで使用した技術スタックを1つ選び、メリットとデメリットを説明してください。

なぜ良問なのか

この質問には正解がありません。技術選定は常にトレードオフだからです。

例えば、

  • Spring Boot

  • Laravel

  • Go

  • Node.js

どれも優れた技術です。

しかし、開発速度を優先するのか、性能を優先するのか、保守性を優先するのかによって最適解は変わります。

そのため、この質問では単なる知識ではなく、候補者の設計思想や技術選定の考え方を確認できます。

面接官が見ているポイント

一番は技術選定ができるかというところだと思います。

技術を人気だからといって信仰せず、適材適所でトレードオフをもとに判断できるかというところが見られています。

模範解答

私が利用した技術スタックの一つにSpring Bootがあります。

メリットとしては、エコシステムが非常に充実している点が挙げられます。

認証、DB接続、監視、セキュリティなどの機能が整備されており、大規模システムでも安定した開発が可能です。

またJavaの静的型付けによって保守性が高く、複数人での開発にも向いています。

一方でデメリットとしては、起動時間やメモリ使用量が比較的大きい点があります。

また、小規模サービスではオーバースペックになることもあります。

そのため私は、長期間運用する業務システムや大規模開発ではSpring Bootを選択し、

小規模サービスであれば別の選択肢も検討します。

良問⑤ 開発で詰まった時、どのように解決したか

問題

今までの開発経験で最も苦労したことは何ですか?

またどのように解決しましたか?

なぜ良問なのか

この質問が良問である理由は、知識や経験を暗記で取り繕うことが難しいからです。

開発でどのような問題に直面し、どのように解決したかという質問は、実際の経験や思考プロセスがそのまま表れます。

また、エンジニアの仕事は新しい機能を作ることだけではありません。

実際には、

  • 障害対応

  • 原因調査

  • パフォーマンス改善

  • 不具合修正

など、「問題を解決する時間」の方が長いことも少なくありません。

面接官が見ているポイント

面接官が一番見ているのは、問題解決の進め方です。

開発現場では、誰でも問題に直面します。重要なのは、問題が発生しないことではなく、問題が発生した際にどのように対応するかです。

例えば、

  • ログを確認するか

  • 再現手順を整理するか

  • 仮説を立てるか

  • 他のメンバーへ相談できるか

といった行動から、その人の仕事の進め方が見えてきます。

模範解答

以前、APIのレスポンスが断続的にタイムアウトする問題に遭遇したことがあります。

まず発生条件を整理し、ログを確認したところ特定の時間帯のみ発生していることが分かりました。

その後、監視データを確認した結果、DB接続数が上限近くまで増加していることを発見しました。

さらに調査したところ、一部処理でコネクションが適切に解放されていないことが原因でした。

修正後は問題が解消され、再発防止のため監視アラートも追加しました。

問題が発生した際は、推測で修正するのではなく、

  1. 現象を整理する

  2. ログを確認する

  3. 仮説を立てる

  4. 検証する

という流れで進めるようにしています。

まとめ

良い面接問題には共通点があります。

それは、

暗記では突破できないこと。

今回紹介した5問はそれぞれ異なる能力を測っています。

質問 面接官が見ているもの
URL入力後に何が起きるか Web全体の理解
認証と認可の違い セキュリティ基礎
利用者一覧が遅い 問題切り分け能力
技術スタックのメリット・デメリット 技術選定力
詰まった時の解決方法 実務遂行能力

面接対策では答えを暗記するよりも、「なぜその質問がされるのか」 を理解することが重要です。

なぜなら実際の面接では、回答そのものよりも、その回答に至るまでの思考プロセスが評価されることが多いからです。

もしこれら5問について、自分の言葉で5分ずつ説明できるのであれば、Web系企業の中途面接においてはかなり戦えるレベルに到達していると言えるでしょう。

上記の良問は実際の面接体験談を参考にしております。
より詳しく知りたい方はこちらから▶️

エンジニア年収ランキングを見る

エンジニアの面接体験談を見る

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?