Best Practices für PHP-Interviews in China
Englische Version (Drittanbieter)
Dieses Lager fasst hauptsächlich die Wissenspunkte zusammen, die in inländischen PHP-Interviews häufig gefragt werden. Es weist nur gezielt auf Wissenspunkte hin, und Sie müssen relevante Informationen finden und systematisch selbst studieren. Ich hoffe, Sie können nicht nur verstehen, was es ist, sondern auch warum und welche Prinzipien dahinter stehen.
Wenn Sie über sehr systematische Informationen zu den entsprechenden Wissenspunkten verfügen, können Sie gerne PR-Links hinzufügen. Es wird nicht empfohlen, Fork zu verwenden, da die Informationen jederzeit aktualisiert werden.
Wenn Sie sich derzeit in den folgenden Situationen befinden, sind diese Informationen sehr gut für Sie geeignet:
- Ich habe vor, meinen Job zu wechseln, weiß aber nicht, wo ich anfangen soll.
- Die Technologie ist auf einen Engpass gestoßen und ich weiß nicht, was ich lernen soll.
- Sind Sie bereit, PHP zu lernen, wissen aber nicht, wie tief das Fachgebiet ist?
Grundlagen
- Verstehen Sie die meisten Array-Manipulationsfunktionen
- Der Unterschied zwischen Zeichenfolgenverarbeitungsfunktionen und Funktionen der mb_-Serie
- & Zitate, kombiniert mit Fallanalyse
- Unterschied zwischen == und ===
- Der Unterschied zwischen isset und empty
- Alle magischen Funktionen verstehen
- Unterschiede zwischen static, $this und self
- Der Unterschied zwischen privat, geschützt, öffentlich und endgültig
- OOP-Denken
- Jeweilige Nutzungsszenarien abstrakter Klassen und Schnittstellen
- Was ist ein Merkmal?
- Unterschiede zwischen echo, print und print_r (unterscheiden Sie den Unterschied zwischen Ausdrücken und Anweisungen)
- Der Unterschied zwischen __construct und __destruct
- Handbuch zur statischen Funktion (Unterscheidung zwischen Klassen und Funktionen), SOF
- __toString()-Funktion
- Der Unterschied zwischen einfachen Anführungszeichen
' und doppelten Anführungszeichen " - Gängige HTTP-Statuscodes, was bedeuten sie?
- Was bedeutet 301 404?
Kapitel für Fortgeschrittene
- Autoload, Composer-Prinzip PSR-4, Prinzip
- Sitzungsfreigabe, Überlebenszeit
- Ausnahmebehandlung
- So iterieren Sie über jedes Objekt
- So arrangieren Sie das Operationsobjekt
$obj[key]; - So funktionalisieren Sie das Objekt
$obj(123); - Was ist Ertrag? Sprechen wir über das Nutzungsszenario von Ertrag.
- Was ist PSR, PSR-1, 2, 4, 7?
- So erhalten Sie Client-IP- und Server-IP-Adressen
- Client-IP
- Server-IP
- Verstehen Sie das Konzept der Proxy-transparenten Übertragung der tatsächlichen IP
- So aktivieren Sie PHP-Ausnahmeaufforderungen
- php.ini aktiviert
display_errors und legt error_reporting Ebene fest - Verwenden Sie zur Laufzeit
ini_set(k, v); zum dynamischen Festlegen
- So geben Sie eine 301-Weiterleitung zurück
- [WARNUNG] Achten Sie darauf, dass das Skript nach dem Festlegen von 301 weiterhin ausgeführt wird. Denken Sie nicht, dass das Folgende nicht ausgeführt werden kann. Verwenden Sie bei Bedarf
die oder exit .
- So erhalten Sie den Installationspfad der Erweiterung
-
phpinfo(); Seitensuche extension_dir - Befehlszeile
php -i |grep extension_dir - Laufzeit
echo ini_get('extension_dir');
- Das Prinzip des Vergleichs von Zeichenfolgen und Zahlen. Achten Sie auf das Oktalsystem beginnend mit 0 und das Hexadezimalsystem beginnend mit 0x.
- String-Vergleichsgröße, von links (hohes Bit) nach rechts, zeichenweiser ASCII-Vergleich
- Was ist der Stücklistenkopf und wie entferne ich ihn?
-
0xEF , 0xBB , 0xBF - Erkennen, entfernen
- Was ist MVC?
- Implementierungsprinzip der Abhängigkeitsinjektion
- So führen Sie einen Befehl asynchron aus
- Was ist eine Template-Engine, welche Probleme löst sie und ihre Implementierungsprinzipien (Smarty, Twig, Blade)
- So implementieren Sie die Kettenoperation
$obj->w()->m()->d(); - Verwendung der Leistungs-Debugging-Tools Xhprof und Xdebug
- Was ist der Unterschied zwischen Indexarray
[1, 2] und assoziativem Array ['k1'=>1, 'k2'=>2] - Verwendung von Cache und Szenarien
Üben
- Sortieren Sie bei einem gegebenen zweidimensionalen Array nach einem bestimmten Feld
- So bestimmen Sie den Typ der hochgeladenen Datei, z. B.: Nur JPG-Upload ist zulässig
- Tauschen Sie die Werte zweier Variablen aus, ohne temporäre Variablen zu verwenden.
$a=1; $b=2; $a=2; $b=1; - Bei der Konvertierung von Chinesisch sind in strtoupper verstümmelte Zeichen vorhanden.
php echo strtoupper('ab你好c'); - Unterschiede zwischen Websocket, Long-Polling und Server-Sent Events (SSE)
- Was bedeutet der Fehler „Header bereits gesendet“ und wie kann man ihn vermeiden?
Algorithmus
- Schnellsortierung (handschriftlich)
- Blasensortierung (handschriftlich)
- Binäre Suche (Verstehen)
- Finden Sie den Algorithmus KMP (verstehen)
- Tiefe und Breite zuerst suchen (verstehen)
- LRU-Cache-Eliminierungsalgorithmus (verstehen Sie, dass Memcached diesen Algorithmus verwendet)
Datenstruktur (Verständnis)
- Heap- und Stack-Eigenschaften
- Warteschlange
- Hash-Tabelle
- verlinkte Liste
Vergleich
- Der Unterschied zwischen Cookie und Sitzung
- Der Unterschied zwischen
GET und POST - Der Unterschied zwischen
include und require - Der Unterschied zwischen
include_once und require_once - Der Unterschied zwischen Memcached und Redis
- MySQL-Speicher-Engines und ihre Unterschiede (Sie werden auf jeden Fall nach dem Unterschied zwischen MyISAM und Innodb fragen)
- Der Unterschied zwischen HTTP und HTTPS
- Der Unterschied zwischen Apache und Nginx
- Der Unterschied zwischen define() und const
- Was sind die Unterschiede zwischen Merkmalen und Schnittstellen und welche Probleme lösen Merkmale?
- Der Unterschied zwischen Git und SVN
Datenbank
- MySQL
- CRUD
- VERBINDEN, LINKER VERBINDEN, RECHTER VERBINDEN, INNERER VERBINDEN
- UNION
- GROUP BY + COUNT + WHERE Kombination aus Groß- und Kleinschreibung
- Häufig verwendete MySQL-Funktionen wie: now(), md5(), concat(), uuid() usw.
-
1:1 , 1:n , n:n gelten für jedes Szenario - Verstehen Sie, was ein Auslöser ist, und beschreiben Sie ein Nutzungsszenario
- Methoden zur Datenbankoptimierung
- Index, gemeinsamer Index (Trefferbedingung)
- Unterdatenbank und Untertabelle (
水平分表und垂直分表) - Partition
- Kann
explain verwenden, um SQL-Leistungsprobleme zu analysieren und die Bedeutung der einzelnen Parameter zu verstehen- Konzentrieren Sie sich auf das Verständnis
type , rows und key
- Slow Log (wofür wird es verwendet, wann wird es benötigt)
- MSSQL (verstehen)
- Fragen Sie die letzten 5 Daten ab
- NOSQL
- Redis, Memcached, MongoDB
- Vergleich und anwendbare Szenarien (Vergleich kann anhand der folgenden Dimensionen durchgeführt werden)
- Beharrlichkeit
- Unterstützt mehrere Datentypen
- CPU-Multicore verfügbar
- Mechanismus zur Gedächtniseliminierung
- ClusterCluster
- Unterstützt SQL
- Leistungsvergleich
- Support ist wichtig
- Anwendungsszenarien
- Womit haben Sie welches Problem zuvor gelöst und warum haben Sie sich dafür entschieden?
Server
- Sehen Sie sich Informationen wie CPU, Speicher, Zeit, Systemversion usw. an.
- find, grep, um Dateien zu finden
- awk verarbeitet Text
- Sehen Sie sich das Verzeichnis an, in dem sich der Befehl befindet
- Haben Sie PHP schon einmal selbst kompiliert? So aktivieren Sie die Readline-Funktion
- So überprüfen Sie die Speicher- und CPU-Auslastung des PHP-Prozesses
- So fügen Sie PHP eine Erweiterung hinzu
- Ändern Sie den Speicherort der PHP-Sitzung und ändern Sie die INI-Konfigurationsparameter
- Welche Arten des Lastausgleichs gibt es? Wählen Sie eine aus, mit der Sie vertraut sind, und erläutern Sie deren Prinzipien.
- Wie wird die Datenbank-Master-Slave-Replikation MS synchronisiert? Drücken oder ziehen? Wird es nicht synchron sein? was zu tun
- So stellen Sie die Verfügbarkeit von Daten sicher, sodass diese auch nach einer Löschung auf Minutenniveau wiederhergestellt werden können. was werden Sie tun.
- Es sind zu viele Datenbankverbindungen vorhanden, die den Maximalwert überschreiten. So optimieren Sie die Architektur. Wie lässt es sich komfortabel verarbeiten?
- 502 Was ist der mögliche Grund? Wie behebe ich 504?
Architektur
- Teilbetrieb und Wartung (Verständnis):
- Lastausgleich (Nginx, HAProxy, DNS)
- Master-Slave-Replikation (MySQL, Redis)
- Datenredundanz und -sicherung (inkrementelle und vollständige MySQL-Prinzipien)
- Überwachung und Inspektion (zwei Dimensionen des Überlebens und der Serviceverfügbarkeit)
- MySQL, Redis, Memcached Proxy, Zweck und Prinzip des Clusters
- Sharding
- Hochverfügbarkeitscluster
- ÜBERFALL
- Kompilierung des Quellcodes, Speicheroptimierung
- Cache
- Wenn Sie bei der Arbeit auf Situationen stoßen, in denen Caching erforderlich ist, beschreiben Sie kurz, warum.
- Suchlösungen
- Leistungsoptimierung
- Überwachungslösungen in verschiedenen Dimensionen
- Zentralisierte Verarbeitungslösung für die Protokollerfassung
- Internationalisierung
- Datenbankdesign
- statische Lösung
- Zeichnen Sie allgemeine Diagramme zur PHP-Anwendungsarchitektur
Rahmen
- ThinkPHP (TP), CodeIgniter (CI), Zend (Nicht-OOP-Serie)
- Yaf, Phalcon (C-Erweiterung)
- Yii, Laravel, Symfony (reine OOP-Serie)
- Swoole, Workerman (Netzwerk-Programmier-Framework)
- Der Vergleichsrahmen unterscheidet mehrere Richtungspunkte
- Ist es reines OOP?
- Methode zum Laden der Klassenbibliothek (schreiben Sie Ihren eigenen Autoload vs. Composer-Standard)
- Usability-Richtung (CI-Basis-Framework, Laravel ist ein Framework mit hoher Entwicklungseffizienz und wie viele Grundkomponenten gibt es)
- Black Box (im Vergleich zum C-Erweiterungssystem)
- Laufgeschwindigkeit (z. B. Laravel lädt viele Dinge)
- Speichernutzung
Designmuster
- Singleton-Muster (Schwerpunkt)
- Fabrikmuster (Schlüssel)
- Beobachtermuster (Schwerpunkt)
- Abhängigkeitsinjektion (Schwerpunkt)
- Dekorationsmuster
- Proxy-Modus
- Kombinationsmodus
Sicherheit
- SQL-Injection
- XSS und CSRF
- Eingabefilterung
- Cookie-Sicherheit
- Deaktivieren Sie
mysql_ -Funktionen - Was ist beim Speichern von Benutzerpasswörtern in der Datenbank zu beachten, um die Sicherheit zu gewährleisten?
- Sitzungsproblem mit Bestätigungscode
- Sichere Sitzungs-ID (damit diese auch nach dem Abfangen nicht simuliert und verwendet werden kann)
- Sicherheit der Verzeichnisberechtigungen
- Enthält lokale und Remote-Dateien
- PHP-Skript zum Hochladen von Dateien
-
eval Funktion führt das Skript aus -
disable_functions deaktiviert Funktionen mit hohem Risiko - Unabhängige FPM-Benutzer und -Gruppen, die jedem Verzeichnis spezifische Berechtigungen gewähren
- Verstehen Sie den Unterschied zwischen Hash und Encrypt
Fortgeschrittenes Niveau
- zugrunde liegende Implementierung des PHP-Arrays (HashTable + verknüpfte Liste)
- Kopieren nach dem Schreibprinzip, wann GC
- PHP-Prozessmodell, Prozesskommunikationsmethode, Prozess-Thread-Unterschied
- Was ist das Kernprinzip der Rendite?
- PDO-Vorbereitungsprinzip
- Was ist der Unterschied zwischen PHP 7 und PHP 5?
- Swoole anwendbare Szenarien und Coroutine-Implementierungsmethoden
Frontend
- Erhalten Sie DOM-Knoten und -Attribute nativ
- Boxmodell
- CSS-Dateien, Style-Tags, Inline-Style-Attributpriorität
- HTML- und JS-Laufreihenfolge (Seite JS von oben nach unten)
- JS-Array-Operationen
- Typurteil
- diesen Umfang
- .map() und diese spezifische Nutzungsszenarioanalyse
- Lesen und Schreiben von Keksen
- JQuery-Operationen
- Die Zufallszahl der Ajax-Anfrage (Unterschied zwischen synchron und asynchron) verhindert das Caching
- Was sind die Vorteile von Bootstrap?
- Domänenübergreifende Anforderung von N-Lösungen
- Neue Technologie (verstehen)
- ES6
- Modular
- Pack
- Werkzeuge erstellen
- vue, reagieren, Webpack,
- frontendmvc
- Optimierung
- Beschränkung der gleichzeitigen Browseranzahl für einen einzelnen Domänennamen
- Statischer Ressourcencache 304 (If-Modified-Since- und Etag-Prinzip)
- Kombinieren Sie mehrere kleine Symbole und nutzen Sie die Technologie zur Positionsbestimmung, um Anfragen zu reduzieren
- Statische Ressourcen werden in einer einzigen Anfrage zusammengefasst und komprimiert
- CDN
- Technologie zum verzögerten Laden statischer Ressourcen und Technologie zum Vorladen
- am Leben bleiben
- Optimierung von CSS am Kopf und JS am Ende (Prinzip)
Netzwerk
- IP-Adresse zu INT
- Was bedeutet 192.168.0.1/16?
- Was ist die Hauptfunktion von DNS?
- Der Unterschied zwischen IPv4 und v6
Netzwerkprogrammierung
- TCP-Drei-Wege-Handshake-Prozess
- Unterschiede zwischen TCP und UDP bzw. anwendbare Szenarien
- Gibt es eine Möglichkeit, die hohe UDP-Verfügbarkeit sicherzustellen (verstehen)?
- Wie löst man TCP-Sticky-Pakete?
- Warum ist ein Herzschlag nötig?
- Was ist eine lange Verbindung?
- Wie ist HTTPS sicher?
- Der Unterschied zwischen Streams und Datagrammen
- Es gibt mehrere Möglichkeiten, zwischen Prozessen zu kommunizieren. Welche ist die schnellste?
- Was passiert
fork() ?
API-Kapitel
- Was ist RESTful?
- So machen Sie
DELETE Anfragen mit Browsern kompatibel, die DELETE Anfragen nicht unterstützen - Was ist die Hauptfunktion von
APP_ID APP_SECRET gängiger APIs? Erklären Sie den Vorgang - Wie kann sichergestellt werden, dass die Daten in API-Anfragen nicht manipuliert werden?
- Der Unterschied zwischen JSON und JSONP
- Der Unterschied zwischen Datenverschlüsselung und Signaturüberprüfung
- Was ist RSA?
- Umgang mit der API-Versionskompatibilität
- Strombegrenzung (Holzeimer, Token-Eimer)
- In welchen Szenarien wird OAuth 2 hauptsächlich verwendet?
- JWT
- Was ist der Unterschied zwischen
json_encode(['key'=>123]); und return json_encode([]); Welche Probleme werden auftreten? So lösen Sie es
Bonuspunkte
- Verstehen Sie allgemeine Sprachfunktionen und deren Anwendbarkeit auf verschiedene Szenarien.
- PHP VS Golang
- PHP VS Python
- PHP VS. JAVA
- Erfahren Sie mehr über die Entwicklung von PHP-Erweiterungen
- Beherrscht C
Stellungnahme
Diese Informationen richten sich nicht an ein Unternehmen und wir sind nicht für die Auswirkungen dieser Informationen auf Sie verantwortlich. Bitte beachten Sie.
Viel Glück
Verwandte Referenzen
https://blog.csdn.net/l269798518/article/details/82428601