كيفية التحضير لمقابلة PHP: قائمة مرجعية مع أمثلة أكواد

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقابلة PHP: لا تخف، بل استعد

\n\n

مقابلة وظيفة مطور PHP ليست امتحانًا بالبطاقات، بل حوار. لكنه حوار يُتوقع منك فيه ليس فقط "أعرف PHP"، بل فهم كيفية عمل اللغة تحت الغطاء. التحضير لمقابلة PHP ليس حفظًا للتعريفات، بل تحليلًا لحالات واقعية.

\n\n

في هذه المقالة، لن ندرج مئة سؤال. بدلاً من ذلك، سأعرض لكم نمط التفكير: كيفية الإجابة على الأسئلة، وكيفية كتابة الأكواد، وما يجب التركيز عليه ليقول المحاور "واو". هيا بنا.

\n\n

1. أساسيات PHP: ما يجب معرفته بالتأكيد

\n\n

لنبدأ بالأساسيات. حتى لو كنت تتقدم لوظيفة Senior، قد تظهر أسئلة عن الأساسيات. إليك ثلاثة أركان تقوم عليها مقابلة PHP:

\n\n
    \n
  • أنواع البيانات وتحويل الأنواع — كيف يعمل == مقابل ===، وما هو strict_types.
  • \n
  • المصفوفات الشاملة (Superglobals) — $_GET، $_POST، $_SERVER، $_SESSION.
  • \n
  • التعامل مع المصفوفات — array_map، array_filter، array_reduce.
  • \n
\n\n

مثال على سؤال: "ماذا سيطبع هذا الكود؟".

\n\n
<?php\n$a = '5';\n$b = 5;\nvar_dump($a == $b);  // bool(true) — مقارنة غير صارمة\nvar_dump($a === $b); // bool(false) — مقارنة صارمة\n?>
\n\n

تذكر: مقابلة PHP للمبتدئين غالبًا ما تُبنى على مثل هذه الفخاخ. لا تقع فيها.

\n\n

2. البرمجة كائنية التوجه (OOP) في PHP: ليس مجرد "كلاس وكائن"

\n\n

أسئلة PHP في المقابلات تتضمن دائمًا OOP. لكن بدلاً من سرد الأركان الثلاثة (التغليف، الوراثة، تعدد الأشكال)، أظهر كيف تستخدمها.

\n\n

مثال: سيُسأل عن الواجهات (Interfaces) والفئات المجردة (Abstract Classes). لا تقل "الواجهة هي عقد". بل قدم كودًا:

\n\n
<?php\ninterface PaymentGateway {\n    public function pay(float $amount): bool;\n}\n\nclass StripeGateway implements PaymentGateway {\n    public function pay(float $amount): bool {\n        // منطق الدفع عبر Stripe\n        return true;\n    }\n}\n\nclass PayPalGateway implements PaymentGateway {\n    public function pay(float $amount): bool {\n        // منطق الدفع عبر PayPal\n        return true;\n    }\n}\n\nfunction processOrder(PaymentGateway $gateway, float $total) {\n    if ($gateway->pay($total)) {\n        echo "تم الدفع بنجاح";\n    }\n}\n?>
\n\n

مثل هذه الإجابة تُظهر أنك تفهم مبدأ استبدال باربرا ليكوف (Liskov Substitution Principle) وتجيد تصميم أنظمة مرنة. هذا يمنحك +100 نقطة في مقابلة PHP للمستوى المتوسط.

\n\n

3. التعامل مع قواعد البيانات: SQL و PDO

\n\n

لا تخلو أي مقابلة PHP من أسئلة حول MySQL. تذكر: لا تستخدم أبدًا دوال mysql_* — فقد أُزيلت من PHP 7. استخدم PDO أو mysqli.

\n\n

مهمة نموذجية: "اكتب استعلامًا آمنًا لقاعدة البيانات".

\n\n
<?php\n$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');\n$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');\n$stmt->execute(['email' => $email]);\n$user = $stmt->fetch(PDO::FETCH_ASSOC);\n?>
\n\n

لماذا هذا مهم؟ لأن حقن SQL (SQL Injection) هو خطأ كلاسيكي للمبتدئين. أظهر أنك تعرف العبارات المحضرة (prepared statements).

\n\n

سؤال شائع آخر هو أنواع JOIN. كن مستعدًا لشرح الفرق بين INNER, LEFT, RIGHT و FULL JOIN. وقدم مثالًا عن متى تستخدم كل نوع.

\n\n

4. المهام النموذجية في مقابلة PHP

\n\n

مهام PHP ليست مجرد نظرية. قد يُطلب منك كتابة كود حي (live coding). إليك ثلاثة أنواع من المهام التي تظهر غالبًا:

\n\n

4.1. مهمة على المصفوفات

\n

"اكتب دالة تقوم بتجميع مصفوفة من الكائنات حسب مفتاح معين".

المدونات

توصيات الكتب