تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

سوال‌های رایج در مصاحبه‌های کاری زبان PHP


۳ شهریور ۱۳۹۹

آیا برای مصاحبه شغلی زبان PHP آماده می‌شوید؟ احتمالا به‌دنبال مقاله‌هایی درباره سوال‌های رایجی هستید که ممکن است از یک توسعه‌دهنده PHP در سال ۲۰۲۰ بپرسند. این کاملا طبیعی است. اما ممکن است بیشتر مقاله‌هایی که در این زمینه می‌خوانید خیلی مفید نباشند، چرا؟ زیرا از آنچه به‌نظر می‌رسد، پیچیده‌تر است و مسائل بیشتر مربوط به توسعه‌دهندگان PHP است تا زبان PHP. بهترین شرکت‌های توسعه نرم‌افزار این موضوع را می‌دانند و ما در این مقاله می‌خواهیم مواردی که در موفقیت شما دخیل هستند را مورد بررسی و گفتگو قرار دهیم.

در ادامه خواهید خواند:

  • زبان PHP
  • فریم‌ورک‌ها
  • مشکل‌های رایج در توسعه
  • وب و REST API
  • دیتابیس‌ها
  • مهندسی نرم‌افزاری
  • DevOps
  • مهارت‌های فردی (soft skills)
  • ابزارهای جانبی
  • فرایند توسعه
  • جمع بندی
سوال‌های رایج در مصاحبه‌های کاری زبان php

متفاوت‌تر از آنچه که انتظار دارید

بیایید مسیر را با بیان مواردی که نمی‌خواهیم در این مقاله به آن‌ها بپردازیم، شروع کنیم. شما در این مقاله، پاسخ‌های آماده به تعدادی سوال مصاحبه مربوط به زبان PHP را نمی‌یابید. در حقیقت بیشتر مقاله‌ها درمورد مصاحبه‌‌های کاری دقیقا به پرسش‌ها و پاسخ‌ها می‌پردازند، اما دانستن زبان PHP به‌تنهایی شما را به توسعه‌دهنده خوبی تبدیل می‌کند؟ فکر نمی‌کنم!

PHP یکی از زبان‌های بسیار محبوب برای ساخت برنامه‌های وب است، اما برای ایجاد یک برنامه کارآمد، به مواردی بیشتر از تسلط به زبان PHP نیاز دارید. به‌طور معمول می‌خواهید از نوعی سرور و دیتابیس نیز استفاده کنید. البته، پروژه‌هایی وجود دارند که نیازی به مهارت‌های اضافی ندارند، اما فکر می‌کنم عادلانه است که بگوییم انجام بسیاری از پروژه‌ها در این روزها، نیاز به مهارت‌های بیشتری دارند.

احتمالا همان‌طور که خودتان هم می‌دانید، یک توسعه‌دهنده PHP به‌مقدار زیادی از مهارت در فناوری‌های مختلف نیاز دارد. با دانستن این موضوع‌ها، مصاحبه‌کنندگانی که در مقابل شما قرار می‌گیرند، موظف هستند درباره هرچیزی که به ‌توسعه مربوط باشد، سوال کنند! درحالی که دنیای توسعه یافته امروز، بیشتر از قبل به تخصص نیاز دارد اما دانش عمومی قوی هنوز هم بسیار ارزشمند است و جزو مشخصه‌های خوب یک توسعه‌دهنده به‌حساب می‌آید.

جزئیات مصاحبه شغلی تا حد زیادی به شرکتی بستگی دارد که می‌خواهید در آن مشغول به کار شوید. آشنایی با آنچه که آن شرکت انجام می‌دهد و فناوری‌های مورد استفاده‌شان، بسیار ضروری است. به‌بخش مهارت‌هایی که در پیشنهاد کاری نوشته شده، حتما دقت داشته باشید. دانستن مهارت‌‌های ذکر شده در آنجا بسیار مفید خواهندبود. برخی از این موارد شاید به‌نظر موارد مهمی به‌نظر نرسند، اما درواقع می‌توانند شما را از سایر افرادی که برای این شغل درخواست داده‌اند، متمایز کنند.

این تخصص کاری، به‌قدری گسترده است که شما قادر نخواهید بود، در چند روز برای مصاحبه آماده شوید. اما مواردی مانند نگرش، نحوه صحبت کردن و اعتماد به‌نفس‌تان را می‌توانید در آن زمان بهبود ببخشید. بااین‌وجود، دانستن آنچه که ممکن است در طی مصاحبه رخ دهد و یا باید انتظار چه‌مواردی را داشته باشید، به تقویت اعتماد‌ به‌نفس‌تان کمک می‌کنند. به‌همین دلیل قصد داریم درمورد همه جوانب ذکر شده در بالا از منظر کسی که مصاحبه شغلی PHP را انجام می‌دهد، صحبت کنیم. سوال‌های مصاحبه در زبان PHP را نمی‌توان حدس زد ولی برای نمونه چند مثال از آن‌ها را بیان می‌کنیم تا با آن‌ها آشنایی پیدا کنید.

با هاست PHP لیارا، وب‌سایت خود را با سرعت بالا و امنیت قوی مدیریت کنید.
✅ نصب آسان ✅ پشتیبانی از نسخه‌های جدید PHP ✅ آپتایم بالا
خرید هاست PHP

زبان PHP

قطعا سوال‌های مربوط به زبان PHP در مصاحبه شما وجود خواهند داشت و موارد عمده‌ای که شاید بیشتر در آن زمینه‌ها از شما سوال شوند، به‌صورت زیر است:

  • چه قابلیت‌های تازه‌ای در PHP ۸، PHP ۸.۱ و نسخه‌های جدیدتر اضاف شده‌اند؟
  • تفاوت‌های میان PHP ۷.x و PHP ۸ چیست؟ چگونه می‌توان پروژه را از نسخه ۷ به نسخه ۸ زبان PHP انتقال داد؟ هنوز هم شرکت‌های زیادی از PHP ۷ استفاده می‌کنند و این سوال‌ها طبیعی هستند و نیاز است که این تفاوت‌ها و نحوه کارکردشان را بدانید.
  • سوال‌هایی در زمینه شی‌گرایی (Object-Oriented Programming) زبان PHP.
  • محدودیت‌ها و چالش‌های رایجی که در توسعه به زبان PHP وجود دارد.
  • مدیریت وابستگی‌ها در پروژه‌های PHP، به ویژه سوال‌هایی از Composer.
  • سوال‌های مربوط به تمیز کردن کدهای PHP و مختصرکردن آن‌ها برای اعضای تیم و مقیاس‌پذیرتر کردن کدها (بالابردن قابلیت خواندن کدها).

با توجه به تجربه‌هایی که در این سال‌ها کسب کرده‌ایم، استخدام‌کنندگان معمولا در رابطه با مسائلی (issues) سوال می‌پرسند که هر روز با آن‌ها سروکله می‌زنند. از آن گذشته، مواردی پرسیده می‌شوند که نیاز است در آن‌ها مهارت داشته باشید تا بتوانید به شرکتی که می‌خواهید در آن استخدام شوید، کمک کنید. این چیزی است که آمادگی برای مصاحبه را چالش‌برانگیز می‌کند.

معرفی هاست رایگان PHP
هاست PHP

فریم‌ورک‌ها

فریم‌ورک‌های PHP بسیاری از مشکل‌های مربوط به برنامه‌نویسی سمت سرور را حل می‌کنند و پایه‌ای اساسی برای اکثر پروژه‌ها هستند. همچنین این توانایی را دارند که در وقت صرفه‌جویی کنند و در رفع مشکل‌هایی که ممکن است در آینده با آن‌ها روبرو شویم، ما را یاری کنند. بسیاری از فریم‌ورک‌های PHP، متن‌باز هستند. زمانی ‌که فریم‌ورکی را یاد بگیرید که کارفرمایان آینده‌تان از آن استفاده می‌کنند، سازگاری با محیط کاری‌تان بسیار ساده‌تر خواهد بود. حتی برخی از شرکت‌ها در فریم‌ورک خاصی تخصص دارند و کل تیم خود را در راستای آن فریم‌ورک پرورش می‌دهند. پرسش و پاسخ‌هایی که ممکن است در مصاحبه شما وجود داشته باشند، به تخصص و چالش‌هایی که شرکت با آن روبرو شده‌است، بستگی دارد. اما برخی از متداول‌ترین آن‌ها عبارتند از:

  • چرخه زندگی یک درخواست، یعنی تمام مراحلی که برای رسیدگی به هر درخواست در یک فریم‌ورک اتفاق می‌افتد،
  • روش‌های اعتبارسنجی داده‌ها،
  • مسیریابی (routing)،
  • ORM (روشی که فریم‌ورک‌ها برای پشتیبانی از لایه‌های دیتا‌ها استفاده می‌کنند)،
  • مدیریت وابستگی‌ها،
  • caching،
  • دستور‌های کنسول.
آموزش مقدماتی فریم‌ورک Laravel
فریم‌ورک Laravel

مشکل‌های رایج در توسعه

یکی از متداول‌ترین بخش‌های مصاحبه شغلی ارائه مشکل‌های رایج در توسعه با زبان PHP است و برای پیدا کردن توسعه‌دهندگانی با تجربه بیشتر استفاده می‌شود. این یک روش عالی برای دیدن نحوه برخورد توسعه‌دهنده با مشکل‌های جدید و توانایی‌شان برای یافتن مهم‌ترین جنبه‌های آن مشکل است. همچنین فرصتی برای دیدن چگونگی عملکرد افراد تحت فشار را در اختیار شما قرار می‌دهد، آیا آن‌ها تسلیم می‌شوند یا سعی می‌کنند راه‌حلی را ارائه دهند؟

بهترین مورد در زمان آماده‌سازی برای مصاحبه‌کاری، رسیدن به نگرش درست است. یک مصاحبه‌کاری، پایان جهان محسوب نمی‌شود. نیازی به عصبی شدن بیش‌ازحد نیست. حتی اگر نتوانیم راه‌حلی برای آن موضوع پیدا کنیم، نگرش ما به‌تنهایی می‌تواند باعث شود که ما واقعا خوب به‌نظر برسیم. این یک عادت خوب است که سوال کنیم، به‌خصوص از اینکه واقعا مشکل را درک کرده‌ایم، اطمینان حاصل کنیم.

وب و REST API

برنامه‌نویسی سمت سرور فقط مربوط به زبان PHP نمی‌شود. اکثر برنامه‌های مدرن از طریق پروتکل HTTP و با به اشتراک گذاشتن یک API با دنیای خارج از خودشان ارتباط برقرار می‌کنند. به‌گونه‌ای که توسط بخش فرانت‌اند و برنامه‌های موبایلی و سایر برنامه‌های شخص ثالث، با سرویس‌هایمان یکپارچه می‌شوند. با توجه به تجربه، پروژه PHP ای نبوده که API مخصوص به خودش را لازم نداشته باشد. به‌طور کلی، API مورد بسیار مهمی در توسعه سمت سرور با زبان PHP است، بنابراین در طی یک مصاحبه شغلی می‌توانیم این مورد را انتظار داشته باشیم، سوال‌های رایج موجود در این زمینه می‌توانند به شکل‌های زیر باشند:

  • چگونگی نحوه ارتباط با HTTP را توضیح دهید،
  • تفاوت‌های میان HTTP 1.1 و HTTP 2 چیست؟
  • REST API چیست و چگونه کار می‌کند؟
  • CORS چیست و برای چه استفاده می‌شود؟
  • تایید اعتبار و دسترسی کاربران از طریق API.
مقایسه SQL و NoSQL، کدام را انتخاب کنیم؟
مقایسه SQL و NoSQL

دیتابیس‌ها

بسیاری از سیستم‌های مدیریت دیتابیس مانند MySQL، متن‌باز هستند. دیتابیس یکی از بخش‌های اساسی هر برنامه است. در توسعه برنامه‌های مدرن، از چند دیتابیس در یک برنامه استفاده می‌شود. دیتابیس‌های NoSQL به‌طور فزاینده‌ای با دیتابیس‌های رابطه‌ای در کنار یکدیگر مورد استفاده قرار می‌گیرند. دلیل این امر، افزایش ویژه عملکرد برنامه‌ها است که با انتخاب ابزارهای مناسب، محقق می‌شود. در نتیجه سوال‌هایی در رابطه با موارد فوق برای مصاحبه‌های کاری به زبان PHP، متداول است:

  • تفاوت بین دیتابیس‌های رابطه‌ای و غیررابطه‌ای چیست؟
  • دیتابیس NoSQL چیست؟ از چه دیتابیس NoSQL استفاده کرده‌اید؟ برای چه مواردی می‌توان از آن‌ها استفاده کرد؟
  • عملکرد و بهینه‌سازی دیتابیس‌ها،
  • سوال‌های مربوط به سیستم‌های مدیریت استاندارد مانند دیتابیس MySQL
NoSQL چیست؟
NoSQL 

مهندسی نرم‌افزاری

این بخش از مصاحبه، جالب‌ترین بخش آن محسوب می‌شود زیرا به‌طور واقعی توانایی‌های توسعه‌دهندگان را نشان می‌دهد. این دانشی است که برنامه‌نویسان خوب را از کسانی که هنوز راهی طولانی برای طی کردن دارند، متمایز می‌کند. موضوع‌های رایجی که ممکن است درمورد آن‌ها از شما سوال شوند، می‌توانند شامل موارد زیر باشند:

  • تست برنامه، انواع تست‌ها، موارد خاص، ابزارهایی برای تست برنامه‌هایی که با PHP توسعه داده شده‌اند،
  • بهترین شیوه‌های توسعه مانند SOLID،
  • الگوهای طراحی (design pattern)، چگونگی گروه‌بندی آن‌ها، چه مشکل‌هایی با این الگوها رفع می‌شود و موارد اینچنینی …،
  • الگوهای معماری،
  • CI/CD.

DevOps

درنهایت بیشتر پروژه‌ها منجر به تولید محصولی می‌شوند (حداقل ایده این است). توسعه‌دهندگان باید پیامد‌های پیش رو را درک کنند. بیشتر برنامه‌های مدرن در سرویس‌های ابری مانند لیارا کار می‌کنند و مقیاس‌پذیر هستند و نیاز است هر توسعه‌دهنده با چالش‌های مقیاس‌پذیری رایج و راه‌حل‌های آن‌ها آشنا باشد.

  • فضای ذخیره‌‌سازی فایل‌ها و sessionهای مشترک،
  • پیکربندی برنامه برای محیط‌های مختلف،
  • مشکل‌های رایج در مقیاس‌پذیری برنامه‌های PHP،
  • virtualization و containerization،
  • روش‌های استقرار برنامه.

مهارت‌های فردی

مهارت‌های فردی یکی از موضوع‌هایی است که توسعه‌دهندگان آن را کم‌ارزش می‌دانند و معمولا این مورد را به حاشیه می‌رانند. این بسیار مهم است، زیرا معمولا ما به‌تنهایی کار نمی‌کنیم و در تیم‌هایی متشکل از برنامه‌نویسان، تست‌کننده‌های برنامه، مدیران پروژه و صاحبان محصول درحال انجام فعایت هستیم. توانایی همکاری با همه آن‌ها موردی بسیار ضروری است. سوال‌های رایج مربوط به مهارت‌های توسعه‌دهندگان، عبارتند از:

  • روش‌های حل اختلاف در یک تیم،
  • رویکردهای مقابله با مهلت‌های غیر منطقی،
  • نحوه رویارویی با ناتوانی‌ها برای تحویل پروژه به کمک روش sprint به صاحبان محصول،
  • نحوه استدلال کدها هنگام بررسی‌شان.
بهینه‌سازی عملکرد برنامه‌های PHP
بهینه‌سازی PHP

ابزارهای جانبی

جدا از دیتابیس‌ها و موارد دیگری که قبل‌تر درباره‌شان صحبت کردیم، ابزارهای بیشتری وجود دارند که برای ساخت برنامه‌های وب مورد استفاده قرار می‌گیرند. برای مثال، ارتباط بین میکروسرویس‌ها ممکن است بر اساس Message brokerها (RabbitMQ یا Apache Kafka) باشد. این یک روش برای افزایش عملکرد و بهبود تجربه کاربری است. البته این امر باعث می‌شود برنامه ما به‌دلیل Loose coupling برای توسعه‌دهندگان انعطاف‌پذیرتر شود.

headless CMSها یکی دیگر از ابزارهایی هستند که در ساخت برنامه‌های مدرن از آن‌ها استفاده می‌شود. همچنین باعث می‌شوند تا ویراستاران برنامه به‌راحتی محتوا را در برنامه‌های SPA (Single Page Application) + API مدیریت کنند. همچنین ابزارهایی مانند Crowdin, PoEdit و BabelSheet که برای پشتیبانی از چندین زبان مورد استفاده قرار می‌گیرند، وجود دارند. قطعا ابزارهای بیشتری وجود دارند که می‌توانید در توسعه برنامه‌های وب‌تان از آن‌ها استفاده کنید. اما به نیازهای تجاری شما وابسته هستند.

اگر بخواهیم صادقانه بگوییم، نمی‌توان سوال‌های مربوط به این بخش را پیش‌بینی کرد زیرا تعداد زیادی ابزار وجود دارد. اما باید استفاده از این ابزار را تجربه کنید. اگر با هر ابزار دیگری که ارزش ذکر کردن داشته باشد، کار می‌کنید از ذکر آن‌ها دریغ نکنید. به‌خصوص اگر می‌تواند برای پروژه مورد نظر مفید باشد که چه بهتر.

فرایند توسعه

توسعه نرم‌افزار فقط مربوط به دانش فنی قوی نیست. به‌گونه می‌توان گفت که توسعه نرم‌افزار برای ارزش‌سازی در تجارت نیز به‌میان آمده است. زمانی که مستندات مورد نیاز برای انجام یک پروژه در کنار هم جمع می‌شوند و مستندسازی پروژه تمام می‌شود، نیاز است افراد تیم توانایی‌هایشان را با یکدیگر ادغام کنند و هر فرد، بخشی از پروژه را به‌دست گیرد. بنابراین افرادی با دانش معقول برای انجام پروژه مورد نیاز هستند. ممکن است درباره تجربه‌کاری‌تان با روش Scrum سوال‌هایی پرسیده شود، برای مثال: Scrum چیست؟ جلسه‌های خاص کاری با چه هدفی برگذار می‌شوند؟

Kanban یک روش دیگر است که در توسعه مدرن استفاده می‌شود و ممکن است در مصاحبه کاری شما، از این روش سوال‌هایی وجود داشته باشد. همان‌طور که قبلا اشاره کردیم، بیشتر موارد به نحوه کار شرکتی که می‌خواهید در آن استخدام شوید، بستگی دارند.

آموزش بکاپ‌گیری از دیتابیس MySQL در سرور مجازی اوبونتو 24.04
 بکاپ‌گیری از دیتابیس MySQL در سرور مجازی

جمع بندی

آمادگی برای مصاحبه PHP فقط تسلط به زبان نیست، بلکه شامل یادگیری فریم‌ورک‌ها، APIها، دیتابیس‌ها، مهندسی نرم‌افزار، DevOps و مهارت‌های فردی نیز می‌شود. مصاحبه‌کنندگان به دنبال توسعه‌دهندگانی هستند که بتوانند چالش‌ها را حل کنند، کدهای تمیز و مقیاس‌پذیر بنویسند و در تیم به خوبی همکاری کنند.

برای موفقیت، علاوه بر دانش فنی، نگرش مثبت، اعتماد به‌نفس و توانایی ارتباط موثر بسیار مهم‌اند. آماده شدن برای مصاحبه یک فرصت است برای نشان دادن توانایی‌ها و رشد حرفه‌ای.

منبع: https://tsh.io/blog/php-interview-questions

به اشتراک بگذارید