PHP इंटरव्यू: शुरुआत कहाँ से करें ताकि फेल न हों?
\n\nआपने रिज्यूमे भेजा, HR के साथ छोटी कॉल हुई, और अब — तकनीकी इंटरव्यू का निमंत्रण आ गया है। दिल तेज़ धड़कने लगता है: "क्या होगा अगर वे कुछ ऐसा पूछें जो मुझे नहीं आता?", "क्या होगा अगर मैं सिंटैक्स भूल जाऊं?", "क्या होगा अगर वे मुझे बोर्ड पर कोड लिखने को कहें?"।
\n\nस्पॉयलर: वे शायद ऐसा कहेंगे। और यह सामान्य है। PHP इंटरव्यू कोई परीक्षा नहीं है, बल्कि एक बातचीत है। लेकिन यह एक ऐसी बातचीत है जिसके लिए तैयारी ज़रूरी है। इस लेख में हम जानेंगे कि 2025 में PHP डेवलपर्स से इंटरव्यू में वास्तव में क्या पूछा जाता है, 90% उम्मीदवार कौन सी गलतियाँ करते हैं, और आप खुद को सबसे अच्छे तरीके से कैसे पेश कर सकते हैं।
\n\nक्या जानना ज़रूरी है: तैयारी की संरचना
\n\nPHP इंटरव्यू की तैयारी को व्यवस्थित बनाने के लिए, इसे तीन भागों में बाँटें:
\n\n- \n
- भाषा की बुनियाद: डेटा टाइप, ऐरे, फंक्शन, फ़ाइलों के साथ काम, सेशन। \n
- OOP और आर्किटेक्चर: इनहेरिटेंस, एनकैप्सुलेशन, पॉलीमॉर्फिज़्म, ट्रेट्स, इंटरफ़ेस। \n
- टूल्स और इकोसिस्टम: Composer, PSR, फ्रेमवर्क, टेस्टिंग, SQL। \n
PHP जूनियर इंटरव्यू में सबसे आम सवालों में से एक है == और === के बीच का अंतर। यह एक छोटी सी बात लगती है, लेकिन ऐसी ही छोटी-छोटी बातों पर अनुभवी डेवलपर्स भी फेल हो जाते हैं।
उदाहरण: टाइप कन्वर्ज़न के साथ तुलना
\n\n<?php\n// ढीली तुलना\nvar_dump(0 == '0'); // true\nvar_dump(0 == false); // true\nvar_dump('' == false); // true\n\n// सख्त तुलना\nvar_dump(0 === '0'); // false\nvar_dump(0 === false); // false\nvar_dump('' === false); // false\n?>\n\nयह क्यों महत्वपूर्ण है? क्योंकि वास्तविक प्रोजेक्ट्स में ढीली तुलना से ऐसे बग्स हो सकते हैं जिन्हें पकड़ना मुश्किल होता है। उदाहरण के लिए, तीसरे पैरामीटर true के बिना in_array() का उपयोग करके ऐरे में वैल्यू की जाँच करते समय।
PHP में OOP: सबसे ज़्यादा क्या पूछा जाता है
\n\nमिडल और सीनियर लेवल के PHP इंटरव्यू में OOP से जुड़े सवाल अनिवार्य हैं। लेकिन जूनियर्स को भी तैयार रहना चाहिए। यहाँ टॉप-3 विषय हैं:
\n\n1. ट्रेट्स बनाम इंटरफ़ेस बनाम एब्सट्रैक्ट क्लासेस
\n\nकई लोग भ्रमित हो जाते हैं कि कब ट्रेट का उपयोग करना है और कब इंटरफ़ेस का। एक सरल नियम याद रखें:
\n- \n
- इंटरफ़ेस — यह एक अनुबंध है। क्लास मेथड्स को लागू करने का वादा करता है। \n
- एब्सट्रैक्ट क्लास — आंशिक कार्यान्वयन + अनुबंध। \n
- ट्रेट — मेथड्स का एक सेट जिसे किसी भी क्लास में "चिपकाया" जा सकता है। \n
<?php\ninterface LoggerInterface {\n public function log(string $message): void;\n}\n\nabstract class AbstractLogger implements LoggerInterface {\n protected string $prefix;\n\n public function __construct(string $prefix) {\n $this->prefix = $prefix;\n }\n\n abstract public function formatMessage(string $message): string;\n}\n\ntrait TimestampTrait {\n public function getTimestamp(): string {\n return date('Y-m-d H:i:s');\n }\n}\n\nclass FileLogger extends AbstractLogger {\n use TimestampTrait;\n\n public function formatMessage(string $message): string {\n return $this->getTimestamp() . ' [' . $this->prefix . '] ' . $message;\n }\n\n public function log(string $message): void {\n file_put_contents('log.txt', $this->formatMessage($message) . PHP_EOL, FILE_APPEND);\n }\n}\n?>\n\n2. SOLID सिद्धांत
\n\nयह सिर्फ एक संक्षिप्त नाम नहीं है। इंटरव्यूअर अक्सर पूछते हैं: "Liskov Substitution Principle (LSP) के उल्लंघन का उदाहरण दीजिए"। सबसे स्पष्ट उदाहरण क्लासिक "स्क्वायर रेक्टेंगल से इनहेरिट करता है" है।
\n\n<?php\n// LSP का उल्लंघन\nclass Rectangle {\n public function __construct(protected int $width, protected int $height) {}\n public function setWidth(int $width): void { $this->width = $width; }\n public function setHeight(int $height): void { $this->height = $height; }\n public function getArea(): int { return $this\n