چگونه برای مصاحبه Laravel آماده شویم

مصاحبه‌های سطح Senior Laravel صرفاً دانش سینتکس شما را نمی‌سنجند. آن‌ها توانایی شما را در طراحی سیستم‌های مقیاس‌پذیر و مدیریت موازنه‌ها (trade-offs) در دنیای واقعی آزمایش می‌کنند.

شما باید از عملیات‌های پایه CRUD فراتر بروید. باید ثابت کنید که می‌توانید نرم‌افزار را در مقیاس بالا عرضه کنید.

بر اساس زمان در دسترس خود، از این برنامه مطالعه استفاده کنید:

  • ۱ تا ۲ روز: تمرکز بر Request Lifecycle، مشکلات N+1 در Eloquent، Queues، Validation و Authorization.
  • ۳ تا ۵ روز: اضافه کردن Caching، Database Transactions، Testing و API Design.
  • ۶ تا ۱۰ روز: مطالعه همه موارد. ساخت یک پروژه کوچک با استفاده از queues، events، jobs و policies.

حوزه‌های فنی کلیدی برای تسلط:

Service Container

تفاوت این سه مورد را بدانید: • bind(): هر بار یک نمونه (instance) جدید برمی‌گرداند. • singleton(): یک نمونه یکسان را برای کل فرآیند برمی‌گرداند. • scoped(): در هر درخواست یک نمونه برمی‌گرداند. این موضوع برای ابزارهایی مانند Laravel Octane حیاتی است.

Eloquent و پایگاه‌های داده

استفاده از all() روی جداول بزرگ را متوقف کنید. برای مدیریت حافظه از chunk() یا lazyById() استفاده کنید. مشکلات N+1 را درک کنید. برای رفع آن‌ها از eager loading (با استفاده از with) استفاده کنید. بدانید چه زمانی از Eloquent و چه زمانی از Query Builder استفاده کنید. برای گزارش‌گیری‌های سنگین از Query Builder استفاده کنید تا از بار اضافی (overhead) مدل‌ها جلوگیری شود.

Queues و پردازش‌های پس‌زمینه

هر چیز کند یا غیرقابل اعتماد باید در یک queue قرار بگیرد. برای queueهای محیط عملیاتی (production) از Redis استفاده کنید. از Laravel Horizon برای نظارت بر workerها و jobهای شکست‌خورده استفاده کنید. هنگام ارسال داده به jobها، به جای اشیاء کامل مدل، IDها را ارسال کنید تا از داده‌های قدیمی (stale) جلوگیری شود.

امنیت و معماری

برای mass assignment از $request->all() استفاده نکنید. از $request->validated() استفاده کنید. تفاوت بین Sanctum (برای SPAها و توکن‌های ساده) و Passport (برای OAuth2 کامل) را درک کنید. کنترلرهای خود را سبک (thin) نگه دارید. منطق تجاری (business logic) را به Services یا Actions منتقل کنید.

نشانه سطح Senior

یک توسعه‌دهنده junior می‌داند چگونه از یک ابزار استفاده کند. یک توسعه‌دهنده senior می‌داند چرا آن ابزار را به ابزار دیگری ترجیح داده است.

در مصاحبه خود، فقط به یک پاسخ اکتفا نکنید. موازنه‌ها (trade-offs) را توضیح دهید. مزایا و معایب رویکردهای مختلف را مقایسه کنید. این نشان می‌دهد که شما تأثیر تصمیمات فنی خود را بر کسب‌وکار درک می‌کنید.

منبع: https://dev.to/nazar_boyko/how-to-prepare-for-a-laravel-interview-8dn