استخدام و منابع انسانیکارفرما

راهنمای استخدام برنامه نویس php

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

فرآیند استخدام در شرکت‌های برنامه نویسی

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

برخی از این مصاحبه‌ها به صورت زیر انجام می‌شوند:

  • مصاحبه با تیم یا مدیر فنی؛

به منظور ارزیابی مهارت‌های فنی برنامه نویسان، معمولا از این نوع مصاحبه استفاده می‌شود.

  • مصاحبه با مدیریت نیروی انسانی؛

این مصاحبه بیشتر با هدف بررسی میزان انتظارات فرد از شرکت انجام می‌گیرد. معمولا این نوع مصاحبه در شرکت‌های کوچکتر توسط مدیر عامل انجام می‌شود.

  • مصاحبه با مدیر عامل؛

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

نحوه استخدام در شرکت‌های برنامه نویسی

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

  • انجام مصاحبه‌های پی در پی و مرحله‌ای

  • تعریف پروژه‌های برنامه نویسی به عنوان تست و ارزیابی کارجو

  • تعیین دوره‌های کارآموزی مدت‌دار

20 سوال مهم که در مصاحبه‌ی استخدامی برنامه نویس PHP، پرسیده می‌شود.

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

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

2) تفاوت بین unset و unlink چیست؟

جواب: از 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، ریدایرکت‌کردن و...) تغییر دهید، این خطا به وجود می‌آید!

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) شود!

در خاتمه باید گفت...

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

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

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

آرمینا رستمی کیا
۱۱ دیدگاه
در بحث‌‌ پیرامون این مقاله شرکت کنید!

  • مهران سرمد
    ۰۶ بهمن ۱۴۰۱، ۰۸:۳۳

    سلام خداقوت
    برای برنامه نویسی سواد بالایی در کامپیوتر داشته باشیم؟

  • قربانعلی سلیمی
    ۰۷ بهمن ۱۴۰۱، ۰۰:۲۶

    سلام در برنامه نویسی مبحث فلوچارت . چقدر اهمیت داره ؟

  • بهرام رضوانی
    ۰۴ تیر ۱۴۰۲، ۰۴:۳۰

    من یکی از کاربران دائمی سایت شما هستم

  • بهزاد زارعی
    ۰۴ تیر ۱۴۰۲، ۰۸:۴۵

    میتونیم توی سایت شما مطلب بنویسیم؟

  • امین کاظمی
    ۰۴ تیر ۱۴۰۲، ۱۱:۲۵

    این مطلب حرف نداشت

  • عباس اشکان
    ۰۵ تیر ۱۴۰۲، ۰۵:۴۵

    خیلی عالی بود

  • عباسعلی طالقانی
    ۰۵ تیر ۱۴۰۲، ۱۹:۲۰

    منابع این مطلب کجاست؟

  • بهروز صدر
    ۰۶ تیر ۱۴۰۲، ۰۹:۲۰

    مطلب خوبی بود همکار گرامی

  • رامین فتحی
    ۰۹ تیر ۱۴۰۲، ۰۱:۵۰

    شماره تماستون برای مشاوره تلفنی چنده

  • احمد کیان
    ۰۹ تیر ۱۴۰۲، ۱۹:۲۵

    حساب توییتری هم دارید؟

  • وحید سهرابی
    ۱۳ تیر ۱۴۰۲، ۰۵:۰۰

    بازم درمورد این موضع مطلب بزارین