লারাভেল (Laravel) ইন্টারভিউয়ের জন্য কীভাবে প্রস্তুতি নেবেন
সিনিয়র লারাভেল ইন্টারভিউগুলো শুধুমাত্র আপনার সিনট্যাক্স (syntax) জ্ঞান পরীক্ষা করে না। এগুলো স্কেলেবল সিস্টেম ডিজাইন করার এবং বাস্তব জীবনের বিভিন্ন ট্রেড-অফ (trade-offs) সামলানোর ক্ষমতা পরীক্ষা করে।
আপনাকে সাধারণ CRUD অপারেশন ছাড়িয়ে যেতে হবে। আপনাকে প্রমাণ করতে হবে যে আপনি বড় পরিসরে (at scale) সফটওয়্যার ডেলিভারি করতে পারেন।
আপনার হাতে থাকা সময় অনুযায়ী এই স্টাডি প্ল্যানটি অনুসরণ করুন:
- ১ থেকে ২ দিন: Request Lifecycle, Eloquent N+1 problems, Queues, Validation এবং Authorization-এর ওপর গুরুত্ব দিন।
- ৩ থেকে ৫ দিন: Caching, Database Transactions, Testing এবং API Design যোগ করুন।
- ৬ থেকে ১০ দিন: সবকিছু পড়ুন। Queues, events, jobs এবং policies ব্যবহার করে একটি ছোট প্রজেক্ট তৈরি করুন।
আয়ত্ত করার মতো মূল টেকনিক্যাল বিষয়সমূহ:
The Service Container
এই তিনটির মধ্যে পার্থক্য জানুন:
• bind(): প্রতিবার একটি নতুন ইনস্ট্যান্স (instance) রিটার্ন করে।
• singleton(): পুরো প্রসেস জুড়ে একই ইনস্ট্যান্স রিটার্ন করে।
• scoped(): প্রতি রিকোয়েস্টে একটি ইনস্ট্যান্স রিটার্ন করে। Laravel Octane-এর মতো টুলের জন্য এটি অত্যন্ত গুরুত্বপূর্ণ।
Eloquent এবং Databases
বড় টেবিলের ক্ষেত্রে all() ব্যবহার করা বন্ধ করুন। মেমরি ম্যানেজ করার জন্য chunk() বা lazyById() ব্যবহার করুন।
N+1 problem সম্পর্কে জানুন। এটি সমাধান করতে eager loading (with) ব্যবহার করুন।
কখন Eloquent এবং কখন Query Builder ব্যবহার করতে হবে তা জানুন। মডেলের ওভারহেড (overhead) এড়াতে ভারী রিপোর্টিংয়ের জন্য Query Builder ব্যবহার করুন।
Queues এবং Background Processing
যেকোনো ধীরগতির বা অনির্ভরযোগ্য কাজ কিউতে (queue) রাখা উচিত। প্রোডাকশন কিউয়ের জন্য Redis ব্যবহার করুন। আপনার ওয়ার্কার (workers) এবং ফেইলড জবগুলো (failed jobs) মনিটর করতে Laravel Horizon ব্যবহার করুন। জবগুলোতে ডেটা পাঠানোর সময় stale data এড়াতে পুরো মডেল অবজেক্টের পরিবর্তে আইডি (ID) পাস করুন।
Security এবং Architecture
Mass assignment-এর জন্য $request->all() ব্যবহার করবেন না। $request->validated() ব্যবহার করুন।
Sanctum (SPA এবং সিম্পল টোকেনের জন্য) এবং Passport (ফুল OAuth2-এর জন্য)-এর মধ্যে পার্থক্য বুঝুন।
আপনার কন্ট্রোলারগুলোকে (controllers) হালকা বা 'thin' রাখুন। বিজনেস লজিকগুলো Services বা Actions-এ সরিয়ে নিন।
The Senior Signal
একজন জুনিয়র ডেভেলপার জানেন কীভাবে একটি টুল ব্যবহার করতে হয়। একজন সিনিয়র ডেভেলপার জানেন কেন তিনি অন্য টুলের পরিবর্তে ওই নির্দিষ্ট টুলটি বেছে নিয়েছেন।
আপনার ইন্টারভিউতে শুধু উত্তর দেবেন না। ট্রেড-অফগুলো (trade-offs) ব্যাখ্যা করুন। বিভিন্ন পদ্ধতির ভালো ও মন্দ দিকগুলো (pros and cons) তুলনা করুন। এটি প্রমাণ করে যে আপনি আপনার টেকনিক্যাল সিদ্ধান্তের ব্যবসায়িক প্রভাব সম্পর্কে সচেতন।
উৎস: https://dev.to/nazar_boyko/how-to-prepare-for-a-laravel-interview-8dn
