PHP साक्षात्कार कैसे पास करें: शीर्ष प्रश्न — भाग 4
PHP साक्षात्कार केवल सिंटैक्स और बुनियादी फंक्शन की जाँच नहीं है, बल्कि आर्किटेक्चर, सुरक्षा, डेटाबेस के साथ काम करने और आधुनिक प्रथाओं की गहरी समझ भी है। शैक्षिक साइट pythonlib.ru के लिए लेखों की इस चौथी श्रृंखला में, हम उन जटिल प्रश्नों का विश्लेषण करेंगे जो अक्सर senior-डेवलपर्स पूछते हैं, और PHP for beginners और अनुभवी प्रोग्रामर्स को दिखाएंगे कि तकनीकी इंटरव्यू की तैयारी कैसे करें। यदि आप programming सीख रहे हैं और ज्ञान गहरा करना चाहते हैं, तो यह सामग्री learning में आपका विश्वसनीय सहायक बनेगी।
1. PHP में डेटाबेस के साथ काम करने पर प्रश्न
साक्षात्कार में मुख्य ब्लॉकों में से एक MySQL, PostgreSQL या अन्य DBMS के साथ इंटरैक्शन है। इंटरव्यूअर जाँचते हैं कि आप वास्तविक प्रोजेक्ट्स के संदर्भ में PHP को कितना समझते हैं।
1.1. PDO, MySQLi से कैसे अलग है?
दोनों एक्सटेंशन डेटाबेस के साथ काम करने के लिए उपयोग किए जाते हैं, लेकिन PDO 12 ड्राइवरों (MySQL, PostgreSQL, SQLite और अन्य) को सपोर्ट करता है, जबकि MySQLi केवल MySQL को सपोर्ट करता है। PDO एक एकीकृत इंटरफ़ेस और अधिक सुरक्षित क्वेरी तैयारी प्रदान करता है।
// PDO का उदाहरण$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');$stmt->execute(['email' => $email]);$result = $stmt->fetchAll();1.2. SQL-इंजेक्शन को कैसे रोकें?
तैयार क्वेरी (prepared statements) और डेटा एस्केपिंग का उपयोग करें। कभी भी वेरिएबल को सीधे क्वेरी स्ट्रिंग में न डालें।
// खतरनाक$sql = "SELECT * FROM users WHERE id = $_GET[id]";
// सुरक्षित$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');$stmt->execute(['id' => $_GET['id']]);2. OOP और PHP की उन्नत अवधारणाएँ
आधुनिक programming PHP में ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण के बिना संभव नहीं है। यहाँ वे प्रश्न हैं जिनका आत्मविश्वास से उत्तर देना आवश्यक है।
2.1. ट्रेट्स क्या हैं और उनका उपयोग कब करें?
ट्रेट्स PHP में कोड पुन: उपयोग का एक तंत्र है, जो बिना इनहेरिटेंस के क्लासेस में मेथड्स शामिल करने की अनुमति देता है। ये मल्टीपल इनहेरिटेंस की समस्या को हल करते हैं।
trait Logger { public function log($message) { echo "[LOG]: $message"; }}
class User { use Logger;}
$user = new User();$user->log('User created');2.2. इंटरफ़ेस और एब्सट्रैक्ट क्लास में क्या अंतर है?
इंटरफ़ेस एक कॉन्ट्रैक्ट (बिना इम्प्लीमेंटेशन के मेथड्स) परिभाषित करता है, जबकि एब्सट्रैक्ट क्लास में डिफ़ॉल्ट इम्प्लीमेंटेशन हो सकता है। एक क्लास कई इंटरफ़ेस को इम्प्लीमेंट कर सकती है, लेकिन केवल एक एब्सट्रैक्ट क्लास को इनहेरिट कर सकती है।
3. सुरक्षा और प्रदर्शन
साक्षात्कार में अक्सर सामान्य कमजोरियों और ऑप्टिमाइज़ेशन के बारे में पूछा जाता है। यह विशेष रूप से PHP for beginners के लिए महत्वपूर्ण है, ताकि तुरंत सही आदतें बनाई जा सकें।
3.1. XSS-हमलों से कैसे बचाव करें?
उपयोगकर्ता से प्राप्त डेटा के आउटपुट को एस्केप करने के लिए htmlspecialchars() फंक्शन का उपयोग करें।
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');3.2. ओपकोड कैशिंग क्या है और इसकी आवश्यकता क्यों है?
PHP एक इंटरप्रेटेड भाषा है: प्रत्येक रिक्वेस्ट स्क्रिप्ट्स को ओपकोड में कंपाइल करती है। कैशिंग (जैसे OPcache) कंपाइल किए गए कोड को मेमोरी में संग्रहीत करती है, जिससे निष्पादन 2-5 गुना तेज हो जाता है।
4. साक्षात्कार में व्यावहारिक कार्य
अंत में, हम एक विशिष्ट कार्य प्रस्तुत करते हैं जो डेटा संरचनाओं और PHP सिंटैक्स के ज्ञान की जाँच करता है।
4.1. कैरेक्टर फ्रीक्वेंसी गिनने के लिए फंक्शन का इम्प्लीमेंटेशन
एक फंक्शन लिखें जो एक ऐरे लौटाता है, जहाँ कुंजियाँ स्ट्रिंग के कैरेक्टर हैं और मान उनकी पुनरावृत्ति की संख्या हैं।
function countChars(string $str): array { $result = []; for ($i = 0; $i < strl