正しい答えがないバックエンド開発者向け面接質問集
前回の面接を思い出してみてください。「ACIDとは何か」や「インターフェースと抽象クラスの違い」について質問されたでしょう。参考書から暗記した定義を次々と答えた。面接官はノートにチェックを入れ、次の質問へと進んだ。こんな対話は大学の口述試験のようなものです。候補者が現実の問題をどのように解決するかということは、ほとんどわかりません。
Ariardo Martiniさんは、Back-End Developer Interview Questionsリポジトリの作者ですが、同じ問題に直面しました。彼は候補者とペアプログラミングを一日中行うことを好みます。しかし、共同開発のための時間が確保できない場合、用意された回答ではなく議論を引き起こす話題が必要です。
正解のないチートシート
このプロジェクトは、バックエンド開発者との対話型面接のための構造化された話題集です。リポジトリは16,000個以上のスターを集めていますが、用意された回答は一つも含まれていません。
これは意図的な設計です。著者は前もって警告しています:ここにある質問のほとんどは開かれた形式です。単一の正解はありません。コレクションの目的は、開発者の思考プロセス、アーキテクチャのトレードオフへの姿勢、基本原理の理解を明らかにする対話を開始することです。
著者が議論の対象としているもの
すべての資料はテーマ別に分かれています。リポジトリの構造が明確にわかるいくつかのブロックを以下に示します。
アーキテクチャとデザインパターン
GoF本のパターン名を暗唱する代わりに、候補者は実践的なタスクを与えられます。グローバルオブジェクトと静的オブジェクトがなぜ悪い習慣と見なされるのですか?Active RecordとData Mapperの使用境界はどこですか?あるいは、何千もの本番環境クラッシュを引き起こしてきたnull参照の概念——「10億ドルの過ち」をどのように回避するか。
言語とパラダイム
このブロックには、型システム、関数型スタイル、言語の内部動作に関する質問が含まれています。不変データ構造のみを使用してループを再帰で書き直すよう求められるかもしれません。または、JavaとC#のコンストラクタがインターフェースの一部ではない理由を議論するよう求められるかもしれません。
分散システムとデータベース
ここでは、実用的なスケーリングの課題への理解がテストされます。候補者はCAP定理のトレードオフをどのように評価しますか?マイクロサービスのための通信モデルとして、Request/ReplyとPublish/Subscribeのどちらを選びますか?高負荷時に月に一度しか現れないバグがある同時実行コードをどのようにテストしますか?
非技術的な話題とプロセス
リポジトリの予想外の部分は、管理とコラボレーションに関する質問に対処しています。プロジェクトマネージャーにレガシーコードの本質をどのように説明します техническ?技術的負債に取り組む必要性をどのように証明しますか?柔軟なスケジュールと無制限のバカンスポリシーのもとでチームワークをどのように組織しますか?
このアプローチの価値
質問選択の原則そのものが興味深いです。Martiniさんは、面接官自身にも完全に明確ではない答えを持つ話題を面接に持ち込むことを推奨しています。これにより、対話は真の経験交流になります。
リポジトリには、コードスニペットを含むタスクの別カテゴリがあります。候補者には準最適または危険なフラグメントが与えられます。タスクはスタック実装内のメモリリークを見つけること、または5つのネストされた構造のチェーンをリファクタリングすることifです。これにより、その人がコードの匂いを見分け、可読性を気にするかどうかがわかります。
もう一つのレイヤーは、ビル・ゲイツの面接質問のようなスタイルの仮説シナリオで構成されています。上司があなたと全く同じクローンだと想像してください。彼のために働きたいですか?または、モダンな言語の支持者に対してCOBOL擁護してみましょう。こんな話題は、精神的な柔軟性と、熱狂的にならないで立場を主張する能力をテストします。
リポジトリの使用方法
採用担当者は、150のリスト全てを一度に消化しようとしないでください。それは面接を長時間の試練に変えてしまいます。特定の職務要件に合った2つか3つの集中セクションを選ぶ方が賢明です。
開発者にとって、このプロジェクトは自己評価に役立ちます。トピックを眺めてみましょう。Variant and Contravariant InheritanceやFallacies of Distributed Computingのような用語が混乱を引き起こすなら、自己学習のための готовый テーマリストが手元にあります。
最後に、これらはチーム議論のための готовые テーマです。モノリス対マイクロサービスの質問を取り上げて、自分のアプリケーションの1時間のアーキテクチャレビューを開いてみましょう。
Back-End Developer Interview Questionsは、面接の形式を口述試験から同僚間の対話へとシフトさせるツールです。
面接を実施しているなら、このリポジトリをチェックして、同等の立場での会話を構築してみてください。そして、求職を計画しているなら、自分の知識を評価するためのベンチマークとしてこのコレクションを使用してください。
関連プロジェクト