20 سوال از سوالات مصاحبه‌ی استخدامی برنامه نویس PHP

?>

سلام به برنامه نویسان عزیز

امروز هم یه مطلب دیگه در مورد مصاحبه‌ی استخدامی برنامه نویس PHP براتون آماده کردم.

1) تفاوت بین include و require در چیست؟

جواب: هر دو یک کار را انجام می‌دهند، منتها اگر خطایی رخ دهد، require یک fatal error را throw کرده و اجرای کدها را متوقف می‌کند، بر خلاف include که به اجرای اسکریپت ادامه می‌دهد.

جواب: از unset برای نابودکردن متغیر(ها) استفاده می‌کنیم، اما unlink برای حذف فایل از فایل‌سیستم است.

3) مقادیر x و y پس از اجرای کد زیر، چه می‌شوند؟

;’7’=x$

;y=&$x$

“y=”3$x$

جواب: مقدار هر دو، ’37’ می‌شود.

4) تفاوت Error با Exception در چیست؟

جواب: یک Exception می‌تواند پرتاب (Throw) شود و همچنین این امکان وجود دارد که از قبل در یک بلاک Try-Catch قرار گیرد، اما Errorها در «PHP» قابل بازگردانی نبوده و می‌توانند برنامه را متوقف کنند.

5) تفاوت میان درخواست GET و POST چیست؟

جواب:

  • در درخواست‌های نوع GET، داده‌های واردشده به URL اضافه می‌شوند و همچنین در تاریخچه‌ی مرورگر ذخیره خواهند شد، اما در POST چنین نیست و همین باعث می‌شود که امنیت POST از GET در هنگام ارسال اطلاعات حساس بیشتر باشد.
  • در متد GET محدودیت طول وجود دارد، اما POST محدودیتی ندارد.
  • از متد GET تنها برای دریافت اطلاعات استفاده می‌کنیم.

6) چرا باید بجای == از === استفاده کنیم؟

جواب:

مورد دوم، علاوه‌بر مقدار، به بررسی تساوی نوع هم می‌پردازد؛ پس مورد اول ابتدا باید نوع دو طرف را یکسان‌سازی کند و تبدیل نوع را انجام دهد، بعد به بررسی مقایسه‌ای روی مقدار بپردازد، بنابراین === از == سریع‌تر است!

مثال: عبارت TRUE == 1 برابر TRUE می‌شود، اما TRUE === 1 چنین نیست و مقدارش FALSE می‌باشد.

7) عبارت 42 == 042 چه چیزی را برمی‌گرداند؟

جواب: خروجی FALSE است، زیرا ما یک 42 که هشت‌هشتی است را با یک 42 که ده‌دهی می‌باشد مقایسه کرده‌ایم، در نتیجه عبارت بعد از تبدیل 42 == 34 است که باید FALSE باشد!

8) بین ()array و [] چه تفاوتی وجود دارد؟

جواب: تفاوتی ندارند؛ حالت دوم، کوتاه‌شدۀ array است که در پی‌اچ‌پی نسخۀ 5.4 معرفی شده، پس در نسخه‌های قدیمی‌تر قابل اجرا نبوده و موجب خطای در برنامه می‌شود.

9) بین ‘text’ و “text”  چه تفاوتی وجود دارد؟

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

10) بین AND و && چه تفاوتی وجود دارد؟

جواب: && بر AND اولویت دارد.

11) فرق بین echo و print در چیست؟

جواب: echo هیچ مقداری را برنمی‌گرداند، اما print برای اینکه نشان‌دهد که عملیات با موفقیت انجام شده، 1 را برمی‌گرداند. همچنین شما می‌توانید که چندین پارامتر را به echo ارسال کرده و با کاما بینشان فاصله بگذارید تا همه را چاپ کند، اما print تنها یک پارامتر می‌گیرد.

12) خروجی این کد چیست؟

;'.str = 'PHP is my language$
} (('if (strpos($str, 'PHP
;return true
} else {
;return false
{

جواب: خروجی FALSE است؛ تابع strpos به دنبال موقعیت رشتۀ PHP در درون جمله می‌گردد و از آنجا که این کلمه در ابتدای جمله آمده است، عدد 0 برگردانده می‌شود و در نتیجه FALSE به خروجی فرستاده شود.

13) خطای زیر چه زمانی اتفاق می‌افتد؟

.Warning: Cannot modify header information – headers already sent

جواب: اگر بعد از نمایش چیزی در صفحه (مانند echoکردن، html، فاصله‌دادن پیش از تگ شروع PHP و…) هدرهای HTTP را (با ست‌کردن کوکی، سشن، Response Type، ریدایرکت‌کردن و…) تغییر دهید، این خطا به وجود می‌آید!

Tutorials of PHP OOP Constructor - 20 سوال از سوالات مصاحبه‌ی استخدامی برنامه نویس PHP - laravel, استخدام php, استخدام برنامه نویس, برنامه نویس php, سوالات استخدامی php, سوالات مصاحبه laravel, سوالات مصاحبه برنامه نویسی وب, سوالات مصاحبه طراحی سایت, لاراول, مصاحبه, مصاحبه استخدامی برنامه نویس, مصاحبه فنی, مصاحبه‌ی استخدامی برنامه نویس PHP
مصاحبه‌ی استخدامی برنامه نویس PHP

14) متدهای construct__ و destruct__ در کلاس چه وظیفه‌ای دارند؟

جواب: متد construct__ بلافاصله پس از ساختن یک نمونه از کلاس صدا زده می‌شود تا مشخصه‌های کلاس را اولیه‌سازی کند، اما متد destruct__ در زمان نابودکردن شیء ایجادشده از کلاس، وقتی که اجرای اسکریپت متوقف می‌شود، صدا زده می‌شود.

15) سه سطح از محدوده‌ها (Scopes) را نام برده و توضیح دهید؟

جواب:

  • سطح Private: تنها در خودِ کلاس در دسترس می‌باشد.
  • سطح Public: در هرجا که دسترسی به کلاس موجود باشد، می‌توان به آن دسترسی داشت.
  • سطح Protected: در خودِ کلاس به علاوۀ فرزندان آن کلاس قابل دسترسی می‌باشد.

16) کلمه‌ی final چه کاربردی دارد؟

جواب: زمانی که متدِ یک کلاس به صورت final تعریف شود، فرزندهای آن کلاس نمی‌توانند آن متد را override کنند، و اگر کلیت کلاس به عنوان final تعریف گردد، دیگر نمی‌توان از آن فرزندی ساخت.

17) آیا «PHP» از ارث‌بری چندگانه پشتیبانی می‌کند؟

جواب: خیر، اما Traitها می‌توانند راه حلی برای این کمبود در PHP و زبان‌های دیگری باشند که از ارث‌بری چندگانه پشتیبانی نمی‌کنند.

18) اما Trait چیست؟!

جواب: Traitها در زبان‌هایی که از ارث‌بری چندگانه پشتیبانی نمی‌کنند، مکانیسمی هستند تا بتوان از کد در جاهای مختلفی استفاده کرد و به کلاس‌های مختلفی اضافه نمود تا قابلیت‌های‌شان را افزایش دهد.

19) تفاوت Interface و Abstract چیست؟

جواب: Interface متدهایی که کلاس باید در خود داشته باشد را تعیین می‌کند، بدون این که به شیوه‌ی هندل‌شدن و منطق این متدها کاری داشته باشد! اما کلاس‌های Abstract، کلاس‌هایی هستند که حداقل یک متد Abstract در خود دارند و نمی‌توان از آن‌ها نمونه‌ای ایجاد کرد، تنها می‌توان از آن‌ها ارث‌بری کرد و متدهای این نوع باید در کلاس‌های فرزند هم ایجاد شوند. برخلاف Interfaceها، می‌توانیم با Abstractها از قبل به تعریف متدهایی که کلاسِ فرزند باید از آن‌ها استفاده کند بپردازیم.

20) درباره‌ی Composer توضیح دهید!

جواب: Composer ابزاری برای مدیریت وابستگی‌ها در «PHP» است، و به شما امکان این را می‌دهد که ابزارهای مورد نیاز در پروژۀ خود را تعیین کنید تا خود عهده‌دار نصب، به‌روزرسانی و بارگیری خودکار (Autoloading) شود!

خب دوستان عزیز به پایان این مقاله رسیدیم.امیدوارم از این نمونه سوالات هم خوشتون اومده باشه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *