Heim  >  Artikel  >  Backend-Entwicklung  >  Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

藏色散人
藏色散人nach vorne
2021-04-07 09:39:345116Durchsuche

Verwandte Empfehlungen: „
Die neueste Zusammenfassung der PHP-Interviewfragen und Bewerbungsfragen


1. Die Bedeutung des Statuscodes im HTTP-Status

302: Die vorübergehende Übertragung ist erfolgreich und die Der angeforderte Inhalt wurde an den neuen Speicherort übertragen.

    401: Nicht autorisiert.
  • 403: Zugriff verboten.
  • 500: Interner Serverfehler
2. Wertübergabe und Referenzübergabe: Die Zuweisung des Werts des tatsächlichen Parameters zum formalen Parameter hat keinen Einfluss auf den Wert des Aktualparameters.

Übergabe als Referenz: Übergeben Sie die Adresse des tatsächlichen Parameters an den formalen Parameter. Änderungen an den Zeilenparametern wirken sich auf den Wert des tatsächlichen Parameters aus.

  • 3. Designmuster
  • Kreativer Typ: Mitarbeiter sind die Rohstoffe (Prototyp, Fabrik, Singleton, Generator, abstrakte Fabrik)

Struktureller Typ: ist der Schlüssel zur Out-of-Band-Montage (Adapter, Brücke). , Fliegengewicht, Aussehen, Agent, Kombination, Dekoration) Verhaltenstyp: befohlen, das Modell zu installieren, um Beobachtung zu verhindern (Memo, Verantwortungskette, Befehl, Iterator, Vermittler, Zustand, Vorlagenmethode, Besucher, Beobachter, Strategie)

4. Codeverwaltung

Normalerweise wird ein Projekt von einem Team entwickelt, das seinen eigenen Code an den Versionsserver übermittelt, und der Projektleiter verwaltet ihn entsprechend der Version, was die Versionskontrolle erleichtert und die Entwicklungseffizienz verbessert Sie können bei Bedarf zur alten Version zurückkehren.

5. XSS-Angriff

Der Kern des XSS-Angriffs (Cross-Site-Scripting-Angriff) besteht darin, dass der Angreifer beim Durchsuchen der Seite den darin eingebetteten Code ausführt böswilliger Angriff auf den Benutzer.

Wie kann man vorbeugen?

Antwort: Verwenden Sie die Funktion htmlspecialchars(), um den übermittelten Inhalt zu filtern und die Sonderzeichen in der Zeichenfolge zu materialisieren.

6. CGI-, FastCGI-, PHP-FPM-Beziehungsdiagramm

In der gesamten Website-Architektur ist der Webserver (wie Apache) nur der Verteiler von Inhalten. Wenn der Client beispielsweise index.html anfordert, findet der Webserver diese Datei im Dateisystem und sendet sie an den Browser. Hier werden statische Daten verteilt.

Wenn die Anforderung index.php lautet, startet der Webserver nach Erhalt dieser Anforderung das entsprechende CGI-Programm. Hier ist der PHP-Parser. Als nächstes analysiert der PHP-Parser die Datei php.ini, initialisiert die Ausführungsumgebung, verarbeitet die Anforderung, gibt das verarbeitete Ergebnis in dem von CGI angegebenen Format zurück, beendet den Prozess und der Webserver gibt das Ergebnis an den Browser zurück ist ein vollständiger dynamischer PHP-Webzugriffsprozess.

Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

Webserver:

Bezieht sich im Allgemeinen auf Server wie Apache, Nginx, IIS, Lighttpd, Tomcat usw. Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

    Webanwendung:
  • Bezieht sich im Allgemeinen auf PHP, Java, Asp.net und andere Anwendungen.
  • CGI:
  • ist ein Protokoll für den Datenaustausch zwischen Webserver und Webanwendung.
  • FastCGI:
  • Wie CGI handelt es sich um ein Kommunikationsprotokoll, das jedoch einige Effizienzoptimierungen aufweist als CGI. Ebenso ähnelt das SCGI-Protokoll FastCGI.
  • PHP-CGI:
  • ist das Schnittstellenprogramm von PHP (Webanwendung) zum vom Webserver bereitgestellten CGI-Protokoll.
  • PHP-FPM:
  • ist ein Schnittstellenprogramm für das von PHP (Webanwendung) bereitgestellte FastCGI-Protokoll. Es bietet auch eine relativ intelligente Aufgabenverwaltung.
  • 7. MVC
  • MVC ist ein Entwicklungsmodell, das hauptsächlich in drei Teile unterteilt ist:
  • m(Modell), das ist das Modell, ist für den Betrieb der Daten verantwortlich;
  • v(Ansicht), das ist die Ansicht, ist für die Anzeige der Rezeption verantwortlich; ist der Controller, der für die Geschäftslogik verantwortlich ist. PHP verwendet einen Mechanismus zur Referenzzählung (Garbage Collection). Jedes Objekt enthält einen Referenzzähler. Wenn eine Referenz mit dem Objekt verbunden ist, wird der Zähler um 1 erhöht. Wenn die Referenz den Wohnraum verlässt oder auf NULL gesetzt wird, wird der Zähler um 1 dekrementiert. Wenn der Referenzzähler eines Objekts Null erreicht, gibt PHP den von ihm belegten Speicherplatz frei. 9. Lebenszyklus des CLI-Modus )
  • Hauptsächlich beschäftigt mit PHP-Framework, Zend-Engine Der Initialisierungsvorgang

Anforderungsinitialisierungsphase

php_request_startup()

Für fpm ist es eine Phase, nachdem der Arbeitsprozess die Anforderungsdaten gelesen und analysiert hat

Skriptausführungsphase


php_execute_script()

PHP analysieren Syntax und generieren Sie einen abstrakten Syntaxbaum

10. PHP-FPM-Betriebsmechanismus

FastCGI ist ein Kommunikationsprotokoll zwischen Webservern (wie Nginx, Apache) und Prozessoren (wie PHP). php-fpm ist ein blockierender Single-Thread-Modell-Prozessmanager im PHP-FastCGI-Betriebsmodus. Er verfügt über eine Single-Master- und Multi-Worker-Struktur. Derselbe Worker-Prozess kann jeweils nur eine Anfrage bearbeiten. Nachdem PHP die Anfrage verarbeitet hat, leitet es das analysierte Ergebnis über das FastCGI-Protokoll an den Webserver weiter, und der Webserver gibt es an den Benutzer zurück.

Grundlegende Implementierung

PHP-FPM ist die Implementierung von Fast-CGI, die Prozessverwaltungsfunktionen einschließlich Master- und Worker-Prozessen bereitstellt:

  • Master erstellt und überwacht Sockets, forkt mehrere Worker-Prozesse und teilt sie im Speicher Ruft den Status des Workers ab und steuert dann den Worker-Prozess über Signale. Worker nimmt Anfragen frei an. Worker – Anforderungsverarbeitung. Worker-Prozess akzeptiert kontinuierlich Anfragen Nachdem die Analyse abgeschlossen ist, wird mit der Ausführung des PHP-Skripts begonnen und die Anforderung wird nach Abschluss der Ausführung geschlossen. Die Schritte für jeden Worker zum Verarbeiten von Anfragen sind wie folgt:
  • Warten auf Anfragen: Der Worker-Prozess ist in fcgi_accept_request() blockiert und wartet auf Anfragen.

Anfrage analysieren: Nachdem die Fastcgi-Anfrage eingegangen ist, wird sie vom Worker empfangen und beginnt dann mit dem Empfangen und Analysieren der Anfragedaten, bis die Anfragedaten vollständig eintreffen. Anforderungsinitialisierung: Führen Sie php_request_startup() aus.

PHP-Skript ausführen.

    Anfrage schließen.
  1. In der Struktur des Worker-Prozesses gibt es einen Parameter zum Aufzeichnen der aktuellen Phase des Workers fpm_scoreboard_proc_s->request_stage. Während eines Anforderungsprozesses wird dieser Wert auf die folgenden Werte gesetzt:
  2. FPM_REQUEST_ACCEPTING: Warten auf die Anfragephase.
  3. FPM_REQUEST_READING_HEADERS: Fastcgi-Anfrage-Header-Phase lesen.
  4. FPM_REQUEST_INFO: Anforderungsinformationsphase abrufen In dieser Phase werden die angeforderte Methode, die Abfragezeichenfolge, die Anforderungs-URI und andere Informationen in der fpm_scoreboard_proc_s-Struktur jedes Arbeitsprozesses gespeichert.

FPM_REQUEST_EXECUTING: PHP-Skriptphase ausführen.

    FPM_REQUEST_END: ​​​​Nicht verwendet.
  • FPM_REQUEST_FINISHED: Anforderungsverarbeitung abgeschlossen.
  • master – Prozessverwaltung
  • master kehrt nach dem Aufruf von fpm_run() nicht mehr zurück, sondern tritt in eine Ereignisschleife ein. Danach wird der Master immer mehrere Ereignisse verarbeiten. Wir haben zunächst die drei verschiedenen Prozessverwaltungsmethoden von Fpm vorgestellt. Welcher Modus verwendet werden soll, kann über pm in der conf-Konfiguration angegeben werden, zum Beispiel pm=dynamic.
  • Statischer Modus (statisch): Diese Methode ist relativ einfach. Beim Start gibt der Master eine entsprechende Anzahl von Arbeitsprozessen gemäß der Konfiguration von pm.max_children aus, d. h. die Anzahl der Arbeitsprozesse ist festgelegt.

Dynamischer Modus (dynamisch): Dieser Modus wird häufiger verwendet. Wenn Fpm startet, wird eine bestimmte Anzahl von Workern gemäß der Konfiguration von pm.start_servers initialisiert. Wenn der Master während des Betriebs feststellt, dass die Anzahl der inaktiven Worker geringer ist als die konfigurierte Anzahl von pm.min_spare_servers (was darauf hinweist, dass zu viele Anforderungen vorliegen und die Worker diese nicht verarbeiten können), wird der Worker-Prozess gegabelt, jedoch die Gesamtzahl Anzahl der Arbeitnehmer darf pm.max_children nicht überschreiten. Wenn der Master feststellt, dass die Anzahl der inaktiven Arbeiter pm.max_spare_servers überschreitet (was darauf hinweist, dass zu viele inaktive Arbeiter vorhanden sind), werden einige Arbeiter getötet, um zu vermeiden, dass zu viele Ressourcen belegt werden. Der Master verwendet diese vier Werte, um die Anzahl dynamisch zu steuern der Arbeiter. OnDemand-Modus (OnDemand): Dieser Modus ist dem herkömmlichen CGI sehr ähnlich. Er weist beim Start keine Worker-Prozesse zu. Er benachrichtigt den Master-Prozess, um den Worker-Prozess zu forken, d Untergeordneter Prozess, nachdem die Anfrage zur Verarbeitung eingegangen ist. Die Gesamtzahl der Worker überschreitet nicht pm.max_children. Nach Abschluss der Verarbeitung wird der Worker-Prozess nicht sofort beendet. Er wird beendet, wenn die Leerlaufzeit pm.process_idle_timeout überschreitet.

Der Master-Prozess tritt in die Ereignisschleife fpm_event_loop() ein. Bei dieser Methode durchläuft der Master mehrere vom Master registrierte E/A- und Timer-Ereignisse. Wenn ein Ereignis ausgelöst wird, wird der spezifische Handler zur Verarbeitung zurückgerufen.
  • 11. Speicherzuweisungsprozess
  • Bewerben Sie sich vorab für ein Stück Speicher und verwalten Sie es intern. Wenn die Anwendung Speicher beantragt, wird sie ab diesem Teil angewendet, und wenn sie freigegeben wird, wird sie freigegeben Zurück zur Speicherverwaltung. Dieses Design kann den zusätzlichen Leistungsverbrauch des Betriebssystems vermeiden, der durch die Anwendung und die Freigabe von kleinem Speicher verursacht wird.

12. Implementierung des PHP-Arrays

Die zugrunde liegende Implementierung des PHP-Arrays ist eine Hash-Tabelle (auch Hash-Tabelle genannt). Die Hash-Tabelle ist eine Datenstruktur, die basierend auf dem Schlüssel (Schlüssel) direkt auf den Speicherort zugreift. Sein Schlüsselwert Es gibt eine Zuordnungsfunktion, die den von der Zuordnungsfunktion erhaltenen Hash-Wert direkt auf den entsprechenden Wertwert gemäß dem Schlüssel indizieren kann, ohne dass ein Schlüsselwortvergleich erforderlich ist. Unter idealen Umständen ist die Sucheffizienz unabhängig von Hash-Konflikten der Hash-Tabelle ist sehr hoch, die Zeitkomplexität beträgt O (1).

13. Abhängigkeitsinjektion

Konzept: bezieht sich auf die Art und Weise, wie andere Dienste, von denen der Dienst abhängt, nicht vom Dienst selbst erstellt, sondern von außen übergeben werden.

Wie wird es erreicht? Antwort: Im Allgemeinen erfolgt die Implementierung mithilfe von Reflexion. Welches Problem kann

lösen? Antwort: Reduzieren Sie die Kopplung zwischen Dienstmodulen. Beim Schreiben von Code müssen Sie die spezifische Implementierung externer Dienste nicht berücksichtigen. Sie müssen nur den Dienst basierend auf der Schnittstelle verwenden.

14. Objektorientiert

Konzept: Objektorientiert ist eine Entwurfsmethode für Programme, die dazu beiträgt, die Wiederverwendbarkeit von Programmen zu verbessern und die Programmstruktur klarer zu machen.

Hauptmerkmale: Kapselung, Vererbung, Polymorphismus.

Fünf Grundprinzipien: Prinzip der Einzelverantwortung; Prinzip der offenen und geschlossenen Schnittstelle;


Dieser Artikel wurde zuerst auf der Website LearnKu.com veröffentlicht.

Verwandte Empfehlungen: „Zusammenfassung der PHP-Interviewfragen 2021 (Sammlung)

Das obige ist der detaillierte Inhalt vonDie neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen