PHP इंटरव्यू कैसे पास करें: एडवांस लेवल के टॉप सवाल
\n\nSenior PHP डेवलपर के इंटरव्यू में सिर्फ सिंटैक्स नहीं, बल्कि आर्किटेक्चर, परफॉरमेंस और आधुनिक मानकों की गहरी समझ परखी जाती है। इस लेख में हम उन एडवांस सवालों को समझेंगे जो तकनीकी इंटरव्यू में अक्सर पूछे जाते हैं, और कोड उदाहरणों के साथ विस्तृत जवाब देंगे। यह लेख इंटरव्यू की तैयारी और अपनी स्किल्स को निखारने दोनों के लिए उपयोगी होगा।
\n\n1. PHP में SOLID सिद्धांत: थ्योरी से प्रैक्टिस तक
\n\nसबसे लोकप्रिय सवालों में से एक है SOLID सिद्धांतों का ज्ञान और उन्हें लागू करने की क्षमता। इंटरव्यूअर यह देखना चाहता है कि आप लचीली और मेंटेन करने योग्य आर्किटेक्चर कैसे डिज़ाइन करते हैं।
\n\nसवाल: "PHP के उदाहरण के साथ ओपन/क्लोज्ड प्रिंसिपल (OCP) समझाएं।"
\n\nजवाब: क्लासेस को एक्सटेंशन के लिए खुला होना चाहिए, लेकिन मॉडिफिकेशन के लिए बंद। मौजूदा कोड को बदलने के बजाय हम नया कोड जोड़ते हैं।
\n\nOCP का उल्लंघन करने वाला उदाहरण:
\n<?php\nclass ReportGenerator {\n public function generate($type) {\n if ($type === 'pdf') {\n // PDF जनरेट करना\n } elseif ($type === 'csv') {\n // CSV जनरेट करना\n }\n }\n}\n\n\nOCP का पालन करने वाला समाधान:
\n<?php\ninterface ReportInterface {\n public function generate(): string;\n}\n\nclass PdfReport implements ReportInterface {\n public function generate(): string {\n return 'PDF कंटेंट';\n }\n}\n\nclass CsvReport implements ReportInterface {\n public function generate(): string {\n return 'CSV कंटेंट';\n }\n}\n\nclass ReportGenerator {\n public function generate(ReportInterface $report): string {\n return $report->generate();\n }\n}\n\n\nयह तरीका ReportGenerator के मौजूदा कोड को बदले बिना नए रिपोर्ट फॉर्मेट जोड़ने की अनुमति देता है।
2. डिज़ाइन पैटर्न: Singleton, Factory और Dependency Injection
\n\nपैटर्न का ज्ञान senior पोजीशन के लिए अनिवार्य है। सबसे अधिक Singleton, Factory और Dependency Injection के बारे में पूछा जाता है।
\n\nसवाल: "PHP में Singleton पैटर्न लागू करें और बताएं कि इसका उपयोग कब करना चाहिए।"
\n\nजवाब: Singleton यह सुनिश्चित करता है कि क्लास का केवल एक इंस्टेंस हो। इसका उपयोग डेटाबेस कनेक्शन, लॉगर या कॉन्फ़िगरेशन के लिए किया जाता है।
\n\n<?php\nclass Database {\n private static $instance = null;\n private $connection;\n\n private function __construct() {\n $this->connection = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');\n }\n\n public static function getInstance(): self {\n if (self::$instance === null) {\n self::$instance = new self();\n }\n return self::$instance;\n }\n\n public function getConnection(): PDO {\n return $this->connection;\n }\n\n // क्लोनिंग और डिसीरियलाइज़ेशन को रोकना\n private function __clone() {}\n public function __wakeup() {\n throw new \\Exception("Cannot unserialize singleton");\n }\n}\n\n// उपयोग\n$db = Database::getInstance();\n\n\nसवाल: "Dependency Injection क्या है और इसे बिना फ्रेमवर्क के कैसे लागू करें?"
\n\nजवाब: DI का मतलब है क्लास के अंदर डिपेंडेंसी बनाने के बजाय उसे कंस्ट्रक्टर या सेटर के माध्यम से बाहर से पास करना।
\n\n<?php\nclass Logger {\n public function log(string $message): void {\n echo $message;\n }\n}\n\nclass UserService {\n private Logger $logger;\n\n // कंस्ट्रक्टर के माध्यम से डिपेंडेंसी इंजेक्शन\n public function __construct(Logger $logger) {\n $this->logger = $logger;\n }\n\n public function createUser(array $data): void {\n // यूज़र बनाने की लॉजिक\n $this->logger->log('User created');\n }\n}\n\n// उपयोग\n$logger =