Wie man ein PHP-Vorstellungsgespräch besteht: Top-Fragen — Teil 4
Ein PHP-Vorstellungsgespräch testet nicht nur Syntax und grundlegende Funktionen, sondern auch ein tiefes Verständnis von Architektur, Sicherheit, Datenbankarbeit und modernen Praktiken. In diesem vierten Teil der Artikelserie für die Bildungsseite pythonlib.ru analysieren wir anspruchsvolle Fragen, die oft von Senior-Entwicklern gestellt werden, und zeigen PHP für Anfänger sowie erfahrenen Programmierern, wie sie sich auf ein technisches Interview vorbereiten können. Wenn Sie Programmierung lernen und Ihr Wissen vertiefen möchten, wird dieses Material Ihr verlässlicher Helfer beim Lernen sein.
1. Fragen zur Datenbankarbeit in PHP
Einer der Schlüsselbereiche im Vorstellungsgespräch ist die Interaktion mit MySQL, PostgreSQL oder anderen DBMS. Interviewer prüfen, wie gut Sie PHP im Kontext realer Projekte verstehen.
1.1. Was ist der Unterschied zwischen PDO und MySQLi?
Beide Erweiterungen werden für die Datenbankarbeit verwendet, aber PDO unterstützt 12 Treiber (MySQL, PostgreSQL, SQLite usw.), während MySQLi nur MySQL unterstützt. PDO bietet eine einheitliche Schnittstelle und sicherere vorbereitete Abfragen.
// PDO-Beispiel$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. Wie verhindert man SQL-Injektionen?
Verwenden Sie vorbereitete Abfragen (prepared statements) und Escaping von Daten. Fügen Sie Variablen niemals direkt in die Abfragezeichenfolge ein.
// Gefährlich$sql = "SELECT * FROM users WHERE id = $_GET[id]";
// Sicher$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');$stmt->execute(['id' => $_GET['id']]);2. OOP und fortgeschrittene PHP-Konzepte
Moderne Programmierung in PHP ist ohne einen objektorientierten Ansatz nicht möglich. Hier sind Fragen, die Sie sicher beantworten sollten.
2.1. Was sind Traits und wann verwendet man sie?
Traits sind ein Mechanismus zur Wiederverwendung von Code in PHP, der es ermöglicht, Methoden in Klassen einzubinden, ohne Vererbung. Sie lösen das Problem der Mehrfachvererbung.
trait Logger { public function log($message) { echo "[LOG]: $message"; }}
class User { use Logger;}
$user = new User();$user->log('User created');2.2. Unterschied zwischen Interface und abstrakter Klasse?
Ein Interface definiert einen Vertrag (Methoden ohne Implementierung), während eine abstrakte Klasse eine Standardimplementierung enthalten kann. Eine Klasse kann mehrere Interfaces implementieren, aber nur von einer abstrakten Klasse erben.
3. Sicherheit und Leistung
Im Vorstellungsgespräch wird oft nach typischen Schwachstellen und Optimierung gefragt. Dies ist besonders wichtig für PHP für Anfänger, um von Anfang an die richtigen Gewohnheiten zu entwickeln.
3.1. Wie schützt man sich vor XSS-Angriffen?
Verwenden Sie die Funktion htmlspecialchars() zum Escapen von Benutzereingaben bei der Ausgabe.
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');3.2. Was ist Opcode-Caching und warum wird es benötigt?
PHP ist eine interpretierte Sprache: Jede Anfrage kompiliert Skripte in Opcode. Caching (z. B. OPcache) speichert den kompilierten Code im Speicher und beschleunigt die Ausführung um das 2- bis 5-fache.
4. Praktische Aufgaben im Vorstellungsgespräch
Abschließend zeigen wir eine typische Aufgabe, die Kenntnisse über Datenstrukturen und die Syntax von PHP prüft.
4.1. Implementierung einer Funktion zur Zeichenhäufigkeitszählung
Schreiben Sie eine Funktion, die ein Array zurückgibt, dessen Schlüssel die Zeichen einer Zeichenkette sind und dessen Werte die Anzahl ihrer Wiederholungen sind.
function countChars(string $str): array { $result = []; for ($i = 0; $i < strlen($str); $i++) { $char = $str[$i]; if (isset($result[$char])) { $result[$char]++; } else { $result[$char] = 1; } } return $result;}