Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung der neuesten klassischen PHP-Interviewfragen (Teil 2)

Zusammenfassung der neuesten klassischen PHP-Interviewfragen (Teil 2)

黄舟
黄舟Original
2017-03-18 09:17:34952Durchsuche

Zusammenfassung der PHP Junior Classic-Interviewfragen (Teil 1)

17. Der Unterschied zwischen isset, empty und is_null

isset bestimmt, ob die Variable definiert oder leer ist

  变量存在返回ture,否则返回false
  变量定义不赋值返回false
  unset一个变量,返回false
  变量赋值为null,返回false

Leer: Bestimmen Sie, ob der Wert der Variablen leer ist. Alles, was in „false“ konvertiert werden kann, ist leer. Wenn es leer ist, wird „true“ zurückgegeben, andernfalls wird „false“ zurückgegeben.

    "",0,"0",NULL,FALSE都认为为空,返回true
    没有任何属性的对象都认为是空

is_null: Überprüfen Sie, ob der eingehende Wert (Wert, Variable, Ausdruck) null ist

    定义了,但是赋值为Null
    定义了,但是没有赋值
    unset一个变量

18. Front-End-Debugging-Tools

  • Firefox Firebug

  • Chrome-Entwicklungstools

  • Emmet

  • Tool zur Überprüfung des JSON-Formats

19. Beschreiben Sie kurz die Unterschiede zwischen Index, Primärschlüssel, eindeutigem Index und gemeinsamem Index in MySQL und der Leistung der Datenbank Hat es Auswirkungen (sowohl beim Lesen als auch beim Schreiben) (Sina Technology Department)

Indizes sind eine besondere Art von Dateien (die Indizes in der InnoDB-Datentabelle sind ein integraler Bestandteil des Tabellenbereichs). enthalten die Referenzzeiger auf alle Datensätze in der Tabelle.
Die einzige Aufgabe eines normalen Index (ein durch das Schlüsselwort KEY oder INDEX definierter Index) besteht darin, den Zugriff auf Daten zu beschleunigen.
Normale Indizes ermöglichen, dass indizierte Datenspalten doppelte Werte enthalten. Wenn Sie feststellen können, dass eine bestimmte Datenspalte nur voneinander verschiedene Werte enthält, sollten Sie beim Erstellen eines Indexes für diese Datenspalte das Schlüsselwort UNIQUE verwenden, um diesen als eindeutigen Index zu definieren. Mit anderen Worten: Ein eindeutiger Index kann die Einzigartigkeit von Datensätzen sicherstellen.
Primärschlüssel ist ein spezieller eindeutiger Index. In einer Tabelle kann nur ein Primärschlüsselindex definiert werden. Der Primärschlüssel wird zur eindeutigen Identifizierung eines Datensatzes verwendet und wird mit dem Schlüsselwort PRIMARY KEY erstellt.
Ein Index kann mehrere Datenspalten abdecken, beispielsweise ein INDEX(SpalteA, SpalteB)-Index, bei dem es sich um einen gemeinsamen Index handelt.
Indizes können die Geschwindigkeit der Datenabfrage erheblich verbessern, verlangsamen jedoch die Geschwindigkeit des Einfügens, Löschens und Aktualisierens von Tabellen, da beim Ausführen dieser Schreibvorgänge die Indexdatei bedient werden muss.

20. Was ist eine Transaktion in einer Datenbank

Eine Transaktion ist eine geordnete Menge von Datenbankoperationen als Einheit. Eine Transaktion gilt als erfolgreich, wenn alle Vorgänge in der Gruppe erfolgreich sind. Auch wenn nur ein Vorgang fehlschlägt, ist die Transaktion nicht erfolgreich. Wenn alle Vorgänge abgeschlossen sind, wird die Transaktion festgeschrieben und ihre Änderungen werden auf alle anderen Datenbankprozesse angewendet. Wenn ein Vorgang fehlschlägt, wird die Transaktion zurückgesetzt und die Auswirkungen aller Vorgänge in der Transaktion werden aufgehoben. Die vier Hauptmerkmale von ACID sind Atomizität, Isolation, Konsistenz und Haltbarkeit.

21. Verstehen Sie XSS-Angriffe? Wie kann man es verhindern?

XSS ist ein Cross-Site-Scripting-Angriff. Zunächst wird die Cross-Site-Scripting-Schwachstelle genutzt, um ein vom Angreifer erstelltes Skript in einem privilegierten Modus auszuführen, und dann wird das unsichere Activex-Steuerelement verwendet, um böswillige Verhaltensweisen auszuführen .
Verwenden Sie die Funktion htmlspecialchars(), um den übermittelten Inhalt zu filtern und die Sonderzeichen in der Zeichenfolge zu materialisieren.

22. Was verursacht SQL-Injection-Schwachstellen? Wie kann man es verhindern?

Ursache der SQL-Injection: Während des Programmentwicklungsprozesses haben Sie nicht auf das standardmäßige Schreiben von SQL-Anweisungen und die Filterung von Sonderzeichen geachtet, was dazu geführt hat, dass der Client einige übermitteln konnte SQL-Anweisungen werden normalerweise über die globalen Variablen POST und GET implementiert.

Möglichkeiten, SQL-Injection zu verhindern:
  1. Einstellungen „magic_quotes_gpc“ und „magic_quotes_runtime“ in der Konfigurationsdatei aktivieren

  2. Beim Ausführen von SQL-Anweisungen verwenden addslashesSQL-Anweisungen konvertieren

  3. Versuchen Sie beim Schreiben von SQL-Anweisungen, doppelte und einfache Anführungszeichen nicht wegzulassen.

  4. Filtern Sie einige Schlüsselwörter in der SQL-Anweisung heraus: aktualisieren, einfügen, löschen, auswählen, *.

  5. Verbessern Sie Ihre Benennungsfähigkeiten für Datenbanktabellen und -felder und benennen Sie einige wichtige Felder entsprechend den Merkmalen des Programms, sodass sie schwer zu erraten sind.

  6. Register_globals in der PHP-Konfigurationsdatei auf „Aus“ setzen, globale Variablenregistrierung deaktivieren

  7. Kontrolle Fehlermeldung, tun nicht durchsuchen Fehlerinformationen auf dem Server ausgeben und in die Protokolldatei schreiben.

23. Was sind die wichtigsten Angriffsmethoden auf PHP-Websites?

  1. Befehlsinjektion

  2. Evaluierungsinjektion

  3. Client-Skript-Einfügung

  4. Cross Site Scripting (XSS)

  5. SQL-Injection

  6. Cross Site Request
    Forgeries, CSRF)

  7. Sitzungshijacking

  8. Sitzungsfixierung

  9. HTTP-Antwortaufteilung

  10. Sicherheitslücke beim Hochladen von Dateien (Datei-Upload-Angriff)

  11. Verzeichnisdurchquerung (Verzeichnisdurchquerung)

  12. Remote-Inklusion-Angriff (Remote-Inklusion)

  13. Dynamische Variable
    Auswertung)

  14. URL-Angriff (URL-Angriff)

  15. Formularübermittlung gefälschtes Formular
    Einreichungen

  16. HTTP-Request-Spoofing-Angriff (gefälschte HTTP-Anfragen)

24. Was sind Einzeleingänge und Mehrfacheingänge im Rahmen?

  1. Duokou erfüllt Benutzeranfragen, indem er auf verschiedene Dateien zugreift. Ein Webprogramm mit nur einem Eintrag leitet alle Anfragen an eine Skriptdatei weiter.

  2. Ein einziger Zugang erleichtert die Kontrolle von Berechtigungen und erleichtert Sicherheitsüberprüfungen bei http-Anfragen.
    Nachteile: Die URL sieht nicht so schön aus, vor allem nicht suchmaschinenfreundlich.

25. Für relationale Datenbanken ist die Indizierung ein sehr wichtiges Konzept:

a ), was ist der Zweck der Indizierung?
  1. Schneller Zugriff auf spezifische Informationen in der Datentabelle und Verbesserung der Abrufgeschwindigkeit

  2. Erstellen Sie einen eindeutigen Index, um die Einzigartigkeit jeder Datenzeile sicherzustellen die Datenbanktabelle sex.

  3. Beschleunigen Sie Tabellen und Verknüpfungen zwischen Tabellen

  4. Wenn Sie Gruppierungs- und Sortierklauseln für den Datenabruf verwenden, können Sie die Gruppierung in Abfragen und die Sortierzeit erheblich reduzieren

b) Welche negativen Auswirkungen haben Indizes auf das Datenbanksystem?

Negative Auswirkung:
Das Erstellen und Verwalten von Indizes nimmt Zeit in Anspruch, und diese Zeit nimmt zu, wenn die Datenmenge zunimmt; nicht nur Tabellen müssen Daten belegen Speicherplatz: Jeder Index muss auch physischen Speicherplatz belegen. Wenn die Tabelle hinzugefügt, gelöscht oder geändert wird, muss der Index dynamisch verwaltet werden, was die Datenwartungsgeschwindigkeit verringert.

c). Was sind die Prinzipien für die Indizierung von Datentabellen?
  1. Erstellen Sie einen Index für die am häufigsten verwendeten Felder, um den Abfrageumfang einzugrenzen.

  2. Indizes für häufig verwendete Felder erstellen, die sortiert werden müssen

d) Unter welchen Umständen ist es unangemessen, einen Index zu erstellen?
  1. Es ist nicht angebracht, einen Index für Spalten zu erstellen, die selten an Abfragen beteiligt sind, oder für Spalten mit vielen doppelten Werten.

  2. Für einige spezielle Datentypen ist es nicht geeignet, Indizes zu erstellen, wie z. B. Textfelder (Text) usw.

26. Beschreiben Sie kurz den Unterschied zwischen MyISAM und InnoDB in der MySQL-Datenbank

Das wichtigste Merkmal, das es von anderen Datenbanken unterscheidet, ist sein Plug Tabellenspeicher-Engine vom Typ -in. Denken Sie daran: Die Speicher-Engine basiert auf Tabellen, nicht auf Datenbanken.

Der Unterschied zwischen InnoDB und MyISAM:

InnoDB-Speicher-Engine: Hauptsächlich für OLTP-Anwendungen (Online Transaction Processing, Online-Transaktionsverarbeitung) ist es die erste ACID mit vollständiger Unterstützung Transaktionsspeicher-Engine (die erste Speicher-Engine von BDB, die Transaktionen unterstützt, hat die Entwicklung eingestellt).

Funktionen:

  • Zeilensperrendesign, Unterstützung von Fremdschlüsseln

  • Unterstützung ähnlich wie bei Oracle Stilkonsistentes, nicht sperrendes Lesen (dh: Lesevorgänge generieren standardmäßig keine Sperren);

  • InnoDB platziert Daten in einem logischen Tabellenbereich, der von InnoDB selbst verwaltet wird. Ab der MySQL 4.1-Version kann jede InnoDB-Speicher-Engine-Tabelle in einer unabhängigen ibd-Datei gespeichert werden.

  • InnoDB verwendet MVCC (Multi-Version Concurrency Control: Lesen blockiert das Schreiben und Schreiben). blockiert das Lesen nicht), um eine hohe Parallelität zu erreichen, und implementiert die 4 Isolationsstufen des SQL-Standards (die Standardeinstellung ist REPEATABLE-Stufe).

  • InnoDB bietet außerdem hohe Leistung und hohe Verfügbarkeit Funktionen wie Puffer einfügen, doppeltes Schreiben, adaptiver Hash-Index und Vorauslesen;

  • InnoDB verwendet eine Cluster-Methode, um Daten in der Reihenfolge zu speichern Primärschlüssel (wenn der Primärschlüssel beim Erstellen der Tabelle nicht explizit angegeben wird, generiert InnoDB für jede Zeile eine 6-Byte-ROWID und verwendet diese als Primärschlüssel). Die InnoDB-Tabelle verfügt über drei versteckte Felder: Zusätzlich zu der oben erwähnten 6-Byte-DB_ROW_ID gibt es auch eine 6-Byte-DB_TX_ID (Transaktions-ID) und eine 7-Byte-DB_ROLL_PTR (die auf die Adresse des entsprechenden Rollback-Segments zeigt). Dies kann über den Innodb-Monitor gesehen werden;

  • MyISAM-Speicher-Engine:
  • ist die offiziell von MySQL bereitgestellte Speicher-Engine, hauptsächlich für OLAP (Online Analytical Processing, Online-Analyse und Bearbeitung) von Anträgen.

Funktionen:
Unterstützt keine Transaktionen, unterstützt jedoch Tabellen und Volltextindizes. Die Betriebsgeschwindigkeit ist hoch;

  • Die MyISAM-Speicher-Engine-Tabelle besteht aus MYD und MYI, MYD wird zum Speichern von Datendateien und MYI zum Speichern von Indexdateien verwendet. Die MySQL-Datenbank speichert nur ihre Indexdateien und das Zwischenspeichern der Datendateien wird dem Betriebssystem selbst überlassen

    Ab MySQL 5.0 unterstützt MyISAM standardmäßig 256T Einzeltabellendaten;

27. Erklären Sie die Unterschiede zwischen MySQL-Outer-Joins, Inner-Joins und Self-Joins

Was ist zunächst einmal Cross-Join: Cross-Join, auch kartesisches Produkt genannt, bezieht sich auf den direkten Abgleich aller Datensätze in einer Tabelle mit allen Datensätzen in einer anderen Tabelle, ohne dass irgendwelche Bedingungen verwendet werden müssen.

Inner Join ist eine Querverbindung, bei der nur Datensätze, die die Bedingungen erfüllen, gemäß einer bestimmten Bedingung herausgefiltert werden. Datensätze, die die Bedingungen nicht erfüllen, werden nicht im Ergebnis angezeigt festgelegt, das heißt, innere Verknüpfungen verbinden nur übereinstimmende Linien.
Äußerer Join Die Ergebnismenge enthält nicht nur Zeilen, die die Join-Bedingungen erfüllen, sondern auch alle Datenzeilen
in der linken Tabelle, der rechten Tabelle oder beiden Tabellen Sie sind „Left Outer Join“, „Right Outer Join“ und „Full Outer Join“.

Linker äußerer Join, auch linker Join genannt, die linke Tabelle ist die Haupttabelle, alle Datensätze in der linken Tabelle werden in der Ergebnismenge angezeigt, und die Datensätze, die in der rechten Tabelle nicht übereinstimmen, müssen trotzdem angezeigt werden angezeigt werden, rechts werden die entsprechenden Feldwerte mit NULL gefüllt. Rechter äußerer Join, auch rechter Join genannt. Die rechte Tabelle ist die Haupttabelle und alle Datensätze in der rechten Tabelle werden im Ergebnissatz angezeigt. Left-Joins und Right-Joins sind austauschbar und MySQL unterstützt derzeit keine vollständigen Outer-Joins.

28. Notieren Sie sich die Namen von mehr als drei MySQL-Datenbankspeicher-Engines (Tipp: Groß- und Kleinschreibung nicht beachten)

MyISAM, InnoDB, BDB (BerkeleyDB), Merge, Memory (Heap), Beispiel , Federated,
Archive, CSV, Blackhole, MaxDB und mehr als ein Dutzend Engines

29. Was ist objektorientiert? Was sind die Hauptmerkmale? Was sind die wichtigsten Prinzipien?

Objektorientiert ist ein Entwurfsmuster eines Programms, das dazu beiträgt, die Wiederverwendbarkeit des Programms zu verbessern und die Programmstruktur klarer zu machen. Die Hauptmerkmale sind: Kapselung, Vererbung und Polymorphismus.
Fünf Grundprinzipien: Prinzip der Einzelverantwortung; Prinzip der offenen und geschlossenen Schnittstelle;

30. Was ist

statisches Routing und was sind seine Merkmale?

Referenzantwort:

Statische Routen sind Routen, die durch Routing-Tabellen angegeben werden, die von Systemadministratoren entworfen und erstellt wurden. Es eignet sich für Netzwerke, in denen die Anzahl der Gateways begrenzt ist und sich die Netzwerktopologie nicht häufig ändert. Der Nachteil besteht darin, dass es sich nicht dynamisch an Änderungen der Netzwerkbedingungen anpassen kann. Wenn sich die Netzwerkbedingungen ändern, muss die Routing-Tabelle vom Netzwerkadministrator geändert werden.
Dynamisches Routing wird dynamisch erstellt, indem Routing-Protokolle den Inhalt von Routing-Tabellen in Echtzeit aktualisieren, indem sie ihre eigenen Routing-Informationen austauschen. Dynamisches Routing kann die Topologie des Netzwerks automatisch lernen und die Routing-Tabelle aktualisieren. Der Nachteil besteht darin, dass das Routing von Broadcast-Aktualisierungsinformationen viel Netzwerkbandbreite beansprucht.

31. Haben Sie jemals den Memcache-Cache verwendet? Wenn ja, können Sie kurz beschreiben, wie er funktioniert?

Memcahce speichert alle Daten mithilfe einer Hash-Tabelle. Jedes Datenelement besteht aus einem Schlüssel und einem Wert. Wenn Sie auf einen bestimmten Wert zugreifen möchten, befolgen Sie zunächst die Schritte, um ihn zu finden. Wert und gibt das Ergebnis zurück.

Memcahce verwendet den LRU-Algorithmus, um abgelaufene Daten schrittweise zu löschen.

32. Die beliebten Ajax-Frameworks auflisten? Erklären Sie, was das Implementierungsprinzip von Ajax ist und welche Rolle JSON in Ajax spielt?

Beliebte Ajax-Frameworks sind

jQuery, Prototype, Dojo und MooTools.

Das Arbeitsprinzip von Ajax besteht darin, dass der angegebene Speicherort einer Seite den gesamten Ausgabeinhalt einer anderen Seite laden kann. Auf diese Weise kann eine statische Seite auch die zurückgegebenen Dateninformationen aus der Datenbank abrufen. Daher ermöglicht die Ajax-Technologie, dass eine statische Webseite mit dem Server kommuniziert, ohne die gesamte Seite zu aktualisieren, wodurch die Wartezeit des Benutzers verkürzt wird, wodurch der Netzwerkverkehr reduziert und die Freundlichkeit des Kundenerlebnisses verbessert wird.

Bei der Verwendung von Ajax handelt es sich um eine Datenübertragung, also um die Rückgabe von Daten vom Server an den Client. Der Server und der Client verwenden unterschiedliche Skriptsprachen, um Daten zu verarbeiten, was ein gemeinsames Datenformat,
XML und JSON sind die beiden am häufigsten verwendeten, und JSON ist einfacher als XML. 33. Überblick über den Transaktions-Rollback-Mechanismus in Myql

Eine Transaktion ist eine vom Benutzer definierte Folge von Datenbankoperationen, die entweder alle oder keine ausgeführt werden Unter „Transaktions-Rollback“ versteht man das Rückgängigmachen der durch die Transaktion abgeschlossenen Aktualisierungsvorgänge an der Datenbank.

Wenn Sie zwei verschiedene Tabellen in der Datenbank gleichzeitig ändern möchten und es sich nicht um eine Transaktion handelt, kann beim Ändern der ersten Tabelle während des Änderungsprozesses der zweiten Tabelle eine Ausnahme auftreten und diese nicht geändert werden Zu diesem Zeitpunkt kann nur die zweite Tabelle geändert werden. Die beiden Tabellen befinden sich noch in ihrem unveränderten Zustand, während die erste Tabelle geändert wurde. Wenn Sie sie als Transaktion festlegen und die erste Tabelle geändert wird und die zweite Tabelle abnormal geändert wird und nicht geändert werden kann, kehren die erste Tabelle und die zweite Tabelle in den unveränderten Zustand zurück. Dies wird als Transaktions-Rollback bezeichnet.

Das obige ist der detaillierte Inhalt vonZusammenfassung der neuesten klassischen PHP-Interviewfragen (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn