Laravelの面接対策ガイド

シニアレベルのLaravel面接では、単に構文の知識が問われるわけではありません。スケーラブルなシステムを設計する能力や、実務におけるトレードオフを判断する能力が試されます。

基本的なCRUD操作のレベルを超えなければなりません。大規模な環境でもソフトウェアをリリースできる能力を証明する必要があります。

利用可能な時間に合わせて、以下の学習プランを活用してください。

  • 1〜2日間:Request Lifecycle、EloquentのN+1問題、Queues、Validation、Authorizationに集中する。
  • 3〜5日間:Caching、Database Transactions、Testing、API Designを追加する。
  • 6〜10日間:すべてを学習する。queues、events、jobs、policiesを使用した小規模なプロジェクトを構築する。

マスターすべき主要な技術領域:

Service Container

次の3つの違いを理解してください: • bind(): 呼び出すたびに新しいインスタンスを返します。 • singleton(): プロセス全体を通して同じインスタンスを返します。 • scoped(): リクエストごとに1つのインスタンスを返します。これはLaravel Octaneのようなツールにおいて非常に重要です。

Eloquentとデータベース

大規模なテーブルに対してall()を使用するのはやめましょう。メモリ管理のためにchunk()lazyById()を使用してください。 N+1問題を理解しましょう。解決にはeager loading (with) を使用します。 EloquentとQuery Builderの使い分けを理解してください。モデルのオーバーヘッドを避けるため、重いレポート処理にはQuery Builderを使用します。

Queuesとバックグラウンド処理

処理が遅いものや信頼性が低いものは、すべてキューに入れるべきです。 本番環境のキューにはRedisを使用してください。 Laravel Horizonを使用して、workerや失敗したjobを監視しましょう。 Jobにデータを渡す際は、データの不整合を防ぐため、モデルオブジェクト全体ではなくIDを渡すようにしてください。

セキュリティとアーキテクチャ

Mass Assignmentには $request->all() を使用しないでください。$request->validated() を使用しましょう。 Sanctum(SPAやシンプルなトークン用)とPassport(完全なOAuth2用)の違いを理解してください。 Controllerは薄く保ちましょう。ビジネスロジックはServiceやActionに移動させます。

シニアとしての評価ポイント

ジュニア開発者はツールの使い方を知っています。シニア開発者は、なぜ他のツールではなくそのツールを選んだのかを知っています。

面接では、単に答えを述べるだけでなく、トレードオフを説明してください。異なるアプローチのメリットとデメリットを比較しましょう。これにより、技術的な決定がビジネスに与える影響を理解していることを示せます。

出典: https://dev.to/nazar_boyko/how-to-prepare-for-a-laravel-interview-8dn