Heim >Backend-Entwicklung >PHP-Tutorial >Sammlung von PHP-Interviewfragen 2021
1. Grundlegender Teil von PHP
1. Einer der Hauptvorteile der PHP-Sprache ist plattformübergreifend ?
Die optimale Kombination der PHP-Laufumgebung ist Apache+MySQL+PHP. Diese Laufumgebung kann auf verschiedenen Betriebssystemen (wie Windows, Linux usw.) konfiguriert werden und ist daher nicht durch das Betriebssystem eingeschränkt es heißt plattformübergreifend
2. Wie viele Methoden gibt es für die Datenübermittlung in der WEB-Entwicklung? Was ist der Unterschied? Welche Methode verwendet Baidu?
Zwei Methoden abrufen und veröffentlichen
Unterschied:
(1) URL-Sichtbarkeit: URL-Parameter der Get-Methode sind sichtbar, Beitrag ist unsichtbar
(2) Cachefähigkeit: Die Get-Methode kann zwischengespeichert werden, die Post-Methode jedoch nicht.
(3) Übertragungsdatengröße: Die allgemeine Übertragungsdatengröße von get überschreitet nicht 2k-4k (je nach Browser ist die Grenze unterschiedlich, aber der Unterschied ist nicht groß); Die Anforderungsübertragungsdaten werden gemäß php.ini konfiguriert. Die Dateieinstellung kann auch unendlich groß sein.
(4) Datenübertragung: Die Get-Methode wird verwendet, um die Parameter durch das Spleißen der URL-Adressleiste zu übertragen, und die Post-Methode wird verwendet, um die Daten durch den Körper zu übertragen.
Vorschläge:
1. Die Get-Methode ist weniger sicher als die Post-Methode. Es wird empfohlen, die Post-Datenübermittlungsmethode zu verwenden 🎜>
2. Es wird empfohlen, die Get-Methode für die Datenabfrage zu verwenden. Es wird empfohlen, die Post-Methode zum Hinzufügen, Ändern oder Löschen von Daten zu verwenden. Die von Baidu verwendete Get-Methode ist aus seiner URL ersichtlich 3. Master Welche Frameworks, Template-Engines, Systeme etc. gibt es für PHP Framework: Es gibt viele Frameworks, wie CI, Yii, Laravel usw. Was wir gelernt haben, ist thinkphpTemplate Engine: Es gibt auch viele, in Im Lehrbuch haben wir gelernt, ist das Smarty System: Es gibt viele, wie zum Beispiel das von Kangsheng Produkte (uchome, supesite, discuzX usw.), Empire-System, DEDE (Dream Weaver), Ecshop usw., wir haben erfahren, dass ich DEDECMS und Ecshop bestanden habe4. Was sind die Web Welche Frontend-Technologien beherrschen Sie?
Kenntnis von p+CSS-Webseitenlayout, JavaScript, jQuery-Framework, Photoshop-Bildverarbeitung5 Was sind die Vorteile von AJAX?
Ajax ist eine asynchrone Übertragungstechnologie, die über Javascript oder das JQuery-Framework implementiert werden kann, um eine teilweise Aktualisierung zu erreichen, wodurch der Druck auf den Server verringert und die Benutzererfahrung verbessert wird.6. Sicherheit ist für ein Programm von entscheidender Bedeutung. Bitte sagen Sie mir, auf welche Sicherheitsmechanismen bei der Entwicklung geachtet werden sollte.
(1) Verwenden Sie einen Bestätigungscode, um eine Überflutung des Registrierungsautomaten zu verhindern. (2) Verwenden Sie Vorverarbeitung, Bindungsparameter, Parameterfilterung und Escape, um SQL-Injection zu verhindern. (3) Verwenden Sie Token, um Remote-Übermittlungen zu verhindern, und verwenden Sie Token, um den Anmeldestatus zu überprüfen.7. Wie kann bei der Entwicklung des Programms die Betriebseffizienz des Programms verbessert werden?
(1) Optimieren Sie SQL-Anweisungen. Versuchen Sie, select * nicht in Abfrageanweisungen zu verwenden. Verwenden Sie zur Überprüfung, welches Feld weniger Unterabfragen verwendet und durch Tabellenverbindungen ersetzt werden kann. (2) Erstellen Sie einen Index in der Datentabelle. (3) Generieren Sie einen Cache für Daten, die häufig im Programm verwendet werden (z. B. die Verwendung von Redis zum Zwischenspeichern von Daten, z. B. die Verwendung von ob zum Statisieren dynamischer Seiten usw.). (4) Führen Sie eine Master-Slave-Replikation von MySQL durch und trennen Sie Lesen und Schreiben. (Verbesserung der MySQL-Ausführungseffizienz und der Abfragegeschwindigkeit) (5) Verwenden Sie Nginx für den Lastausgleich. (Zugriffsdruck gleichmäßig auf polymorphe Server verteilen)8. Kann PHP mit anderen Datenbanken verwendet werden?
PHP ist die beste Kombination mit der MYSQL-Datenbank. Natürlich kann PHP auch mit anderen Datenbanken wie PostgreSql, SqlServer, Oracle, SqlLite usw. verwendet werden.9. Heutzutage wird die dreischichtige Struktur von MVC häufig in der Programmierung übernommen. Was sind die Vorteile?
Die drei Schichten von MVC beziehen sich auf: Geschäftsmodell, Ansicht und Controller. Die Controller-Schicht ruft das Modell auf, um die Daten zu verarbeiten, und ordnet die Daten dann zur Anzeige der Ansichtsschicht zu. Die Vorteile sind: ① Code-Wiederverwendbarkeit kann erreicht werden, um Code-Redundanz zu vermeiden; ②M- und V-Code-Trennung, sodass dasselbe Programm verwendet werden kann Verschiedene Formen von Ausdruck10. Verständnis des JSON-Datenformats?
JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat. Das JSON-Datenformat ist fest und kann für die Datenübertragung in mehreren Sprachen verwendet werden. Die Funktion in PHP, die das JSON-Format verarbeitet, ist json_decode(string $json [, bool $assoc]), die einen JSON-Format-String akzeptiert und ihn in eine PHP-Variable konvertiert zu dekodierende Zeichenfolge. assoc gibt ein Array anstelle eines Objekts zurück, wenn dieser Parameter TRUE ist. Json_encode: Konvertieren Sie PHP-Variablen in das JSON-Format.11. Was sind die Unterschiede zwischen Print, echo und print_r?
(1) Sowohl echo als auch print können eine Ausgabe durchführen. Der Unterschied besteht darin, dass echo keine Funktion ist und keinen Rückgabewert hat, während print eine Funktion mit einem Rückgabewert ist, also relativ gesehen, wenn Wenn Sie nur Echo ausgeben, wird es schneller, während print_r normalerweise zum Drucken von Informationen über Variablen verwendet wird, die häufig beim Debuggen verwendet werden. (2) print dient zum Drucken einer Zeichenfolge (3) print_r dient zum Drucken eines zusammengesetzten Typs wie eines Array-Objekts12 Was ist das? Unterschied zwischen SESSION und COOKIE?
(1) Speicherort: Sitzung wird auf dem Server gespeichert, Cookie wird im Browser gespeichert(2) Sicherheit: Die Sitzungssicherheit ist höher als bei Cookies.
(3) Sitzung ist ein „Sitzungsdienst“, und der Dienst muss aktiviert sein, wenn er verwendet wird on, können Sie es direkt verwenden
13 Häufig verwendete Funktionen zur Verarbeitung von Arrays in PHP? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
(1) array() erstellt ein Array
(2) in_array() bestimmt, ob das Element ist im Array
(3) count() gibt die Anzahl der Elemente im Array zurück
(4) array_merge() führt mehrere Arrays zu einem Array zusammen
(5 ) array_diff() Vergleich Differenz von zwei oder mehr Arrays
(6) array_intersect() Ruft die Schnittmenge von zwei oder mehr Arrays ab
(7) array_keys() Ruft die Schlüsselliste des Arrays ab
(8)array_values() Holen Sie sich die Werteliste des Arrays
(9)array_unique() Löschen Sie doppelte Werte im Array
(10)array_push( ) fügt ein oder mehrere Elemente in das Ende des Arrays ein (Push)
(11) array_pop() Pop und gibt das letzte Element des Array-Arrays zurück (Push)
(12 ) array_walk() Benutzerdefinierte verwenden Die Funktion führt eine Rückrufverarbeitung für jedes Element im Array durch
14. Welche allgemeinen Funktionen werden zum Verarbeiten von Zeichenfolgen in PHP verwendet? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
(1) trim() entfernt Leerzeichen und andere Zeichen auf beiden Seiten der Zeichenfolge; (2 ) strlen() Ermittelt die Länge der Zeichenfolge
(3) mb_strlen() Ermittelt die Länge der Zeichenfolge (Zeichenkodierung kann angegeben werden, berechnet die Länge für chinesische Zeichenfolgen)
(4) substr() Gibt einen Teil des Strings zurück
(5) str_replace() Teilstring-Ersetzung
(6) str_repeat () Wiederholt einen String
(7 ) is_string() Überprüfen Sie, ob die Variable ein String ist;
(8) str_shuffle() mischt einen String zufällig
(9) sprintf() gibt einen String zurück, der basierend auf dem formatierten String generiert wird ( Wird normalerweise verwendet, nachdem der Datentabellenname nach dem Teilen der Tabelle abgerufen wurde)
(10) strstr() Suchen Sie das erste Vorkommen der Zeichenfolge
(11) Addslashes Verwenden Sie Backslashes, um die Zeichenfolge
15. Häufig verwendete Funktionen in PHP zur Verarbeitung von Zeit? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
(1) date() Formatieren Sie eine lokale Uhrzeit/ein lokales Datum.
(2) getdate() Datums-/Uhrzeitinformationen abrufen. (3) date_default_timezone_set() legt die Standardzeitzone fest. (4) date_default_timezone_get() gibt die Standardzeitzone zurück. (5) mktime() gibt den Unix-Zeitstempel eines Datums zurück. (6) strtotime() Analysieren Sie die Datums- und Zeitbeschreibung einer beliebigen Zeichenfolge in einen Unix-Zeitstempel (7) strftime() Formatieren Sie die lokale Zeit/das lokale Datum entsprechend den regionalen Einstellungen16. Häufige Funktionen, die PHP zur Verarbeitung von Datenbanken verwendet? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
Bitte lesen Sie das PHP-Handbuch sorgfältig durch. Dieser Punkt ist sehr wichtig
17. PHP-Betriebsdateien Häufig verwendete Funktionen? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
(1) Öffnen Sie die Datei fopen()
(2) Lesen Sie die Datei fgets(); Hinweis: file_get_contents() liest auch die Datei (3) schreibt die Datei fwrite(); Hinweis: file_put_contents() kann auch die Datei schreiben (4) schließt das Dateihandle fclose( )(5) Datei verschieben/umbenennen, umbenennen()(6) Datei kopieren, kopieren()(7) Datei erstellen vim oder touch(8 ) Löschen Sie die Datei unlink() (9) Holen Sie sich die Zeit, zu der auf die Datei zuletzt zugegriffen wurde fileatime() (10) Holen Sie sich die Zeit, zu der die Datei zuletzt geändert wurde filemtime() (11) Holen Sie sich die Dateigröße filesize() (12) Holen Sie sich den Dateityp filetype() (13) Holen Sie sich den Dateidetails-Status() (14) Beurteilung Handelt es sich um ein Verzeichnis? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)
(1) Öffnen Sie das Verzeichnis opendir()
(2) Lesen Sie das Verzeichnis readdir() (3) Verzeichnis rmdir() löschen
(4) Verzeichnis-Handle closeir() schließen
(5) Verzeichnis mkdir() erstellen
(6 ) Rückgabepfad Der Verzeichnisteil in dirname()
(7) Holen Sie sich das aktuelle Arbeitsverzeichnis getcwd()
(8) Listen Sie die Dateien und Verzeichnisse im angegebenen Pfad auf scandir()
2. Datenbankteil
1. Was sind die gängigen relationalen Datenbankverwaltungssysteme?
Antwort: Oracle, SQL Server, MySQL, Sybase, DB2, Access usw. 2. Welche Teile umfasst die SQL-Sprache? Was sind die Aktionsschlüsselwörter für jeden Abschnitt?
Antwort: Die SQL-Sprache besteht aus vier Teilen: Datendefinition (DDL), Datenmanipulation (DML), Datenkontrolle (DCL) und Datenabfrage (DQL).
Datendefinition: Tabelle erstellen, Tabelle ändern, Tabelle löschen, Index erstellen/löschen usw.
Datenmanipulation: Auswählen, Einfügen, Aktualisieren, Löschen,
Datenkontrolle : gewähren, widerrufen
Datenabfrage: auswählen
3 Was sind die Integritätsbeschränkungen?Datenintegrität bezieht sich auf die Genauigkeit und Zuverlässigkeit von Daten.
Beinhaltet: (1) Entitätsintegrität: legt fest, dass jede Zeile der Tabelle eine eindeutige Entität in der Tabelle ist.
(2) Domänenintegrität: Dies bedeutet, dass die Spalten in der Tabelle bestimmte Datentypbeschränkungen erfüllen müssen, darunter Wertebereich, Genauigkeit und andere Vorschriften.
(3) Referenzielle Integrität: bedeutet, dass die Daten des Primärschlüssels und des Fremdschlüssels der beiden Tabellen konsistent sein sollten, um die Konsistenz der Daten zwischen den Tabellen sicherzustellen und Datenverlust oder die Verbreitung bedeutungsloser Daten zu verhindern Datenbanken.
(4) Benutzerdefinierte Integrität: Verschiedene relationale Datenbanksysteme erfordern aufgrund ihrer Anwendungsumgebung häufig einige besondere Einschränkungen. Benutzerdefinierte Integrität ist eine Einschränkung für eine bestimmte relationale Datenbank, die die semantischen Anforderungen widerspiegelt, die eine bestimmte Anwendung erfüllen muss.
4. Was ist eine Transaktion? und seine Eigenschaften?
Transaktion: Es handelt sich um eine Reihe von Datenbankoperationen und die grundlegende logische Einheit von Datenbankanwendungen.
Eigenschaften:
(1) Atomarität: das heißt Unteilbarkeit, entweder werden alle Transaktionen ausgeführt oder keine.
(2) Konsistenz oder Stringability. Die Ausführung einer Transaktion wandelt die Datenbank von einem korrekten Zustand in einen anderen korrekten Zustand um
(3) Isolation. Bevor die Transaktion ordnungsgemäß festgeschrieben wird, dürfen durch die Transaktion vorgenommene Änderungen an den Daten keiner anderen Transaktion zur Verfügung gestellt werden,
(4) Persistenz. Nachdem eine Transaktion korrekt übermittelt wurde, werden ihre Ergebnisse dauerhaft in der Datenbank gespeichert. Auch wenn nach der Übermittlung der Transaktion weitere Fehler auftreten, werden die Verarbeitungsergebnisse der Transaktion gespeichert.
Einfaches Verständnis: Alle Vorgänge in einer Transaktion sind entweder erfolgreich oder fehlschlagen.
5. Was ist ein Schloss?
Die Datenbank ist eine gemeinsame Ressource, die von mehreren Benutzern verwendet wird. Wenn mehrere Benutzer gleichzeitig auf Daten zugreifen, greifen mehrere Transaktionen gleichzeitig auf dieselben Daten in der Datenbank zu. Wenn gleichzeitige Vorgänge nicht kontrolliert werden, können falsche Daten gelesen und gespeichert werden, wodurch die Konsistenz der Datenbank zerstört wird.
Sperren ist eine sehr wichtige Technologie, um die Parallelitätskontrolle von Datenbanken zu erreichen. Bevor eine Transaktion ein Datenobjekt bearbeitet, sendet sie zunächst eine Anfrage an das System, um es zu sperren. Nach der Sperrung hat die Transaktion eine gewisse Kontrolle über das Datenobjekt. Bevor die Transaktion die Sperre aufhebt, können andere Transaktionen das Datenobjekt nicht aktualisieren.
Grundlegende Sperrtypen: Sperren umfassen Sperren auf Zeilenebene und Sperren auf Tabellenebene
6. Was ist eine Ansicht? Was ist ein Cursor?
Eine Ansicht ist eine virtuelle Tabelle, die dieselben Funktionen wie eine physische Tabelle hat. Ansichten können hinzugefügt, geändert, überprüft und bearbeitet werden. Eine Ansicht ist normalerweise eine Teilmenge von Zeilen oder Spalten einer oder mehrerer Tabellen. Änderungen an der Ansicht haben keine Auswirkungen auf die zugrunde liegenden Tabellen. Dadurch ist es für uns einfacher, Daten abzurufen als bei Abfragen mit mehreren Tabellen.
Cursor: Er verarbeitet die Abfrageergebnismenge effektiv als Einheit. Der Cursor kann auf einer bestimmten Zeile in der Zelle positioniert werden, um eine oder mehrere Zeilen aus der aktuellen Zeile im Ergebnissatz abzurufen. Sie können die aktuelle Zeile des Ergebnissatzes ändern. Cursor werden im Allgemeinen nicht verwendet, aber wenn Daten einzeln verarbeitet werden müssen, sind Cursor sehr wichtig.
7. Was ist eine gespeicherte Prozedur? Wie soll ich anrufen?
Eine gespeicherte Prozedur ist eine vorkompilierte SQL-Anweisung. Der Vorteil besteht darin, dass sie einen modularen Aufbau ermöglicht, was bedeutet, dass sie nur einmal erstellt werden muss und später im Programm mehrmals aufgerufen werden kann. Wenn für einen bestimmten Vorgang mehrere SQL-Ausführungen erforderlich sind, ist die Verwendung gespeicherter Prozeduren schneller als die Ausführung einfacher SQL-Anweisungen. Gespeicherte Prozeduren können über ein Befehlsobjekt aufgerufen werden.
8. Welche Rolle spielt der Index? Und welche Vor- und Nachteile hat es?
Ein Index ist eine spezielle Abfragetabelle, die die Datenbanksuchmaschine verwenden kann, um den Datenabruf zu beschleunigen. Es ist dem Inhaltsverzeichnis eines Buches im wirklichen Leben sehr ähnlich. Sie können die gewünschten Daten finden, ohne das gesamte Buch abzufragen. Indizes können eindeutig sein. Wenn Sie einen Index erstellen, können Sie eine einzelne Spalte oder mehrere Spalten angeben.
Der Nachteil ist, dass es die Dateneingabe verlangsamt und auch die Größe der Datenbank erhöht.
Wie kann man die drei Paradigmen auf populäre Weise verstehen?
Erste Normalform: 1NF ist eine atomare Einschränkung für Attribute, die erfordert, dass Attribute atomar sind und nicht zerlegt werden können;
Zweite Normalform: 2NF ist eine eindeutige Einschränkung für Datensätze. Erfordernis, dass der Datensatz eine eindeutige Kennung hat, d. h. die Einzigartigkeit der Entität.
Dritte Normalform: 3NF ist eine Einschränkung der Feldredundanz, d erfordert, dass das Feld nicht redundant ist. .
Was ist eine Basistabelle? Was ist eine Ansicht?
Die Basistabelle ist eine Tabelle, die unabhängig existiert. In SQL entspricht eine Beziehung einer Tabelle.
Eine Ansicht ist eine Tabelle, die von einer oder mehreren Basistabellen abgeleitet ist. Die Ansicht selbst wird nicht unabhängig in der Datenbank gespeichert, sondern ist eine virtuelle Tabelle
Beschreiben Sie die Vorteile von Ansichten?
(1) Ansichten können Benutzeroperationen vereinfachen
(2) Ansichten ermöglichen es Benutzern, dieselben Daten aus mehreren Blickwinkeln zu betrachten;
(3) Ansichten sind die Datenbank bietet ein gewisses Maß an logischer Unabhängigkeit;
(4) Ansichten können Sicherheitsschutz für vertrauliche Daten bieten.
Was bedeutet NULL?
Der Wert NULL steht für UNBEKANNT: Er stellt nicht „“ (leere Zeichenfolge) dar.
Jeder Vergleich mit einem NULL-Wert führt zu einem NULL-Wert.
Sie können keinen Wert mit einem NULL-Wert vergleichen und logischerweise erwarten, eine Antwort zu erhalten.
Verwenden Sie IS NULL für die NULL-Beurteilung
Was ist der Unterschied zwischen Primärschlüssel, Fremdschlüssel und Index?
Der Unterschied zwischen Primärschlüssel, Fremdschlüssel und Index
Definition:
Primärschlüssel – identifiziert einen Datensatz eindeutig, kann nicht dupliziert werden und darf nicht leer sein
Fremd Schlüssel – der Fremdschlüssel der Tabelle. Der Schlüssel ist der Primärschlüssel einer anderen Tabelle. Der Fremdschlüssel kann Duplikate oder Nullwerte haben.
Index – das Feld hat keine Duplikatwerte, kann aber einen Nullwert haben Funktion:
Primärschlüssel – wird zur Gewährleistung der Datenintegrität verwendet
Fremdschlüssel – wird zum Herstellen von Verbindungen mit anderen Tabellen verwendet
Index – soll die Geschwindigkeit der Abfragesortierung verbessern
Nummer:
Primärschlüssel – Es kann nur einen Primärschlüssel geben.
Fremdschlüssel – Eine Tabelle kann mehrere Fremdschlüssel-
Indizes haben – eine Tabelle kann mehrere eindeutige Indizes haben.
Was können Sie verwenden, um sicherzustellen, dass die Felder in der Tabelle nur Werte in einem bestimmten Bereich akzeptieren?
Überprüfen Sie den Grenzwert, der in der Datenbanktabelle definiert ist und zur Begrenzung des in dieser Spalte eingegebenen Werts verwendet wird.Sagen Sie mir, welche Methoden es gibt, um SQL-Anweisungen zu optimieren? (Wählen Sie einige aus)
(1) In der Where-Klausel: Die Verbindung zwischen Where-Tabellen muss vor anderen Where-Bedingungen geschrieben werden, und es müssen Bedingungen geschrieben werden, die die maximale Anzahl von Datensätzen herausfiltern können im Where sub Am Ende des Satzes.HAVING last. (2) Ersetzen Sie IN durch EXISTS und NOT IN durch NOT EXISTS. (3) Vermeiden Sie die Verwendung von Berechnungen für Indexspalten (4) Vermeiden Sie die Verwendung von IS NULL und IS NOT NULL für Indexspalten (5) Optimieren Sie Abfragen, das sollten Sie versuchen Um vollständige Tabellenscans zu vermeiden, sollten Sie zunächst in Betracht ziehen, Indizes für die Spalten zu erstellen, die an „Where“ und „Ordnung nach“ beteiligt sind. (6) Vermeiden Sie es, Nullwerturteile über Felder in der where-Klausel zu fällen, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt. (7) Versuchen Sie es zu vermeiden Verwenden der where-Klausel Das Ausführen von Ausdrucksoperationen für Felder in Klauseln führt dazu, dass die Engine die Verwendung von Indizes aufgibt und einen vollständigen Tabellenscan durchführt.Was ist der Unterschied zwischen „korrelierter Unterabfrage“ und „nicht korrelierter?“. Unterabfrage' in einer SQL-Anweisung?
(1) Eine nicht korrelierte Unterabfrage ist eine von der äußeren Abfrage unabhängige Unterabfrage. Die Unterabfrage wird insgesamt einmal ausgeführt und der Wert wird nach der Ausführung an die äußere Abfrage übergeben. (2) Die Ausführung der relevanten Unterabfrage hängt von den Daten der externen Abfrage ab. Wenn die externe Abfrage eine Zeile ausführt, wird die Unterabfrage einmal ausgeführt. Nicht korrelierte Unterabfragen sind also effizienter als korrelierte UnterabfragenWas ist der Unterschied zwischen char und varchar?
char ist ein Typ mit fester Länge und varchar ist ein Typ mit variabler Länge. Unterschied: In einer Datenspalte vom Typ char(M) belegt jeder Wert M Bytes. Wenn eine Länge kleiner als M ist, verwendet MySQL Leerzeichen rechts davon . (Die aufgefüllten Leerzeichen werden während des Suchvorgangs entfernt). In der Datenspalte vom Typ varchar(M) belegt jeder Wert gerade genug Bytes plus ein Byte, um seine Länge aufzuzeichnen (d. h. die Gesamtlänge beträgt L+1 Bytes).MySQL-Speicher-Engine, der Unterschied zwischen Myisam und Innodb.
MyISAM ist eine nicht-transaktionale Speicher-Engine, die für Anwendungen mit häufigen Tabellensperren geeignet ist. Geeignet für kleine Datenmengen und geringe ParallelitätInnodb ist eine Speicher-Engine, die bei sinnvollem Design für Anwendungen mit vielen Einfüge- und Aktualisierungsvorgängen geeignet ist (der größte Unterschied liegt in der Ebene). der Sperre); geeignet für große Datenmengen, massive Parallelität.Welche Datentabellentypen gibt es?
MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV usw. MyISAM: Ausgereift, stabil, einfach zu verwalten, schnell zu lesen. Einige Funktionen (Transaktionen usw.) unterstützen keine Sperren auf Tabellenebene. InnoDB: unterstützt Transaktionen, Fremdschlüssel und andere Funktionen sowie das Sperren von Datenzeilen. Es nimmt viel Platz ein und unterstützt keine Volltextindizierung usw.Als Speicher des Veröffentlichungssystems werden mehr als 50.000 Einträge pro Tag hinzugefügt. Der Betrieb und die Wartung werden voraussichtlich drei Jahre dauern.
(1) Entwerfen Sie eine gut gestaltete Datenbankstruktur, ermöglichen Sie teilweise Datenredundanz und versuchen Sie, Join-Abfragen zu vermeiden, um die Effizienz zu verbessern. (2) Wählen Sie den entsprechenden Tabellenfelddatentyp und die Speicher-Engine aus und fügen Sie die Indizes entsprechend hinzu. (3) Führen Sie eine Lese-/Schreibtrennung der MySQL-Master-Slave-Replikation durch. (4) Teilen Sie die Datentabelle in Tabellen auf, um die Datenmenge in einer einzelnen Tabelle zu reduzieren und die Abfragegeschwindigkeit zu verbessern. (5) Fügen Sie einen Caching-Mechanismus hinzu, z. B. Redis, Memcached usw. (6) Generieren Sie für Seiten, die sich nicht häufig ändern, statische Seiten (z. B. OB-Cache). (7) Schreiben Sie effizientes SQL. Beispielsweise wird SELECT * FROM TABEL in SELECT field_1, field_2, field_3 FROM TABLE geändert.Welche Methode verwenden Sie für eine Website mit hohem Datenverkehr, um das Problem der Statistik von Seitenbesuchen zu lösen?
(1) Bestätigen Sie, ob der Server das aktuelle Verkehrsaufkommen unterstützen kann. (2) Datenbankzugriff optimieren. (3) Der externe Zugriff auf Links (Hotlinking), wie z. B. Bild-Hotlinking, ist untersagt. (4) Herunterladen der Kontrolldatei. (5) Führen Sie einen Lastausgleich durch und verwenden Sie verschiedene Hosts, um den Datenverkehr zu entlasten. (6) Nutzen Sie Browsing-Statistiksoftware, um die Anzahl der Besuche zu verstehen und gezielte Optimierungen durchzuführen.3. Objektorientierter Teil
1. Was ist objektorientiert? (Antworten Sie mit Verständnis)
Objekt -orientiert ist Eine Art des Denkens basiert auf prozessorientiert, was bedeutet, dass objektorientiert Funktionen durch Objekte realisiert, Funktionen in Objekte kapselt und die Objekte bestimmte Details implementieren lässt.Objektorientiert weist drei Hauptmerkmale auf: Kapselung, Vererbung und Polymorphismus.
Die aktuellen reinen OO-Sprachen sind hauptsächlich Java und C#. PHP und C++ unterstützen auch OO.
2. Beschreiben Sie kurz die Zugriffsrechte privater, geschützter und öffentlicher Modifikatoren.
private: privates Mitglied, auf das nur innerhalb der Klasse zugegriffen werden kann.
protected: geschützte Mitglieder, zugänglich innerhalb der Klasse und geerbter Klassen.
Öffentlich: Öffentliche Mitglieder, vollständig öffentlich, keine Zugriffsbeschränkungen.
3. Was ist der Unterschied zwischen Heap und Stack?
Der Stapel ist ein Speicherplatz, der während der Kompilierung zugewiesen wird. Daher muss die Größe des Stapels in Ihrem Code klar definiert werden.
Der Heap ist Speicher, der während der Programmausführung dynamisch zugewiesen wird können Sie die Größe des zuzuordnenden Heap-Speichers basierend auf den Ausführungsbedingungen des Programms bestimmen.
4. Die Hauptunterschiede zwischen XML und HTML
Unterschiedliche grammatikalische Anforderungen:
(1) In HTML wird die Groß-/Kleinschreibung nicht beachtet. in xml Strenge Unterscheidung.
(2) In HTML ist es manchmal nicht streng, wenn der Kontext deutlich zeigt, wo der Absatz- oder Listenschlüssel endet, dann können Sie
oder ähnliche schließende Tags weglassen. In XML handelt es sich um eine strikte Baumstruktur und das schließende Tag darf nicht weggelassen werden.
(3) In XML müssen Elemente, die ein einzelnes Tag ohne passendes schließendes Tag haben, mit einem /-Zeichen enden. Auf diese Weise weiß der Parser, dass er nicht nach dem schließenden Tag suchen soll.
(4) In XML müssen Attributwerte in Anführungszeichen gesetzt werden. In HTML sind Anführungszeichen optional.
(5) In HTML können Sie Attributnamen ohne Werte haben. In XML müssen alle Attribute entsprechende Werte haben.
(6) In XML-Dokumenten werden Leerzeichenteile vom Parser nicht automatisch gelöscht, aber HTML filtert Leerzeichen heraus.
Tags sind unterschiedlich:
(1) HTML verwendet inhärente Tags; XML hat keine inhärenten Tags.
(2) HTML-Tags sind vordefiniert; XML-Tags sind kostenlos, anpassbar und erweiterbar.
Verschiedene Funktionen:
(1) HTML wird zum Anzeigen von Daten verwendet; XML wird zum Beschreiben von Daten und Speichern von Daten verwendet, sodass es als Persistenzmedium verwendet werden kann! HTML kombiniert Daten und Anzeige und zeigt die Daten auf der Seite an; XML trennt Daten und Anzeige. XML dient der Beschreibung von Daten, wobei der Inhalt der Daten im Vordergrund steht. HTML wurde zur Darstellung von Daten entwickelt, wobei der Schwerpunkt auf dem Erscheinungsbild der Daten liegt.
(2) XML ist kein Ersatz für HTML XML und HTML sind zwei Sprachen mit unterschiedlichen Verwendungszwecken. XML soll HTML nicht ersetzen; vielmehr kann XML als Ergänzung zu HTML betrachtet werden. Die Ziele von XML und HTML sind unterschiedlich. Das Designziel von HTML besteht darin, Daten anzuzeigen und sich auf das Erscheinungsbild der Daten zu konzentrieren, während das Designziel von XML darin besteht, die Daten zu beschreiben und sich auf den Inhalt der Daten zu konzentrieren.
(3) Die beste Beschreibung von XML könnte sein: XML ist ein plattformübergreifendes, software- und hardwareunabhängiges Werkzeug zur Verarbeitung und Übertragung von Informationen.
(4) XML wird in Zukunft allgegenwärtig sein. XML wird das am weitesten verbreitete Werkzeug zur Datenverarbeitung und Datenübertragung werden.
5. Was sind die Merkmale von Objektorientierung?
Umfasst hauptsächlich Kapselung, Vererbung und Polymorphismus. Wenn es 4 Aspekte sind, fügen Sie hinzu: Abstraktion.
Kapselung:
Kapselung ist die Grundlage dafür, dass Softwarekomponenten eine hervorragende Modularität aufweisen. Das Ziel der Kapselung besteht darin, eine hohe Kohäsion und geringe Kopplung von Softwarekomponenten zu erreichen und Änderungen durch gegenseitige Programmabhängigkeit zu verhindern.
Vererbung:
Beim Definieren und Implementieren einer Klasse können Sie dies auf der Grundlage einer vorhandenen Klasse tun und den von dieser vorhandenen Klasse definierten Inhalt als Ihren eigenen Inhalt verwenden. Außerdem können Sie einige neue Inhalte hinzufügen , oder ändern Sie die ursprüngliche Methode, um sie für spezielle Anforderungen besser geeignet zu machen. Dies ist Vererbung. Vererbung ist ein Mechanismus für Unterklassen zum automatischen Austausch von Daten und Methoden der übergeordneten Klasse. Dabei handelt es sich um eine Beziehung zwischen Klassen, die die Wiederverwendbarkeit und Skalierbarkeit von Software verbessert.
Polymorphismus:
Polymorphismus bedeutet, dass der spezifische Typ, auf den die im Programm definierte Referenzvariable zeigt, und der über die Referenzvariable ausgegebene Methodenaufruf nicht während der Programmierung, sondern nur während der Ausführung des Programms bestimmt werden Die Bestimmung, das heißt, auf welches Klasseninstanzobjekt eine Referenzvariable zeigt und welche Klasse den von der Referenzvariablen ausgegebenen Methodenaufruf implementiert, muss während der Ausführung des Programms bestimmt werden.
Abstraktion:
Abstraktion besteht darin, die Ähnlichkeiten und Gemeinsamkeiten einiger Dinge herauszufinden und diese Dinge dann in eine Klasse einzuteilen. Diese Klasse berücksichtigt nur die Ähnlichkeiten und Gemeinsamkeiten dieser Dinge und ignoriert die Ähnlichkeiten und Konzentrieren Sie sich auf die Aspekte, die für das aktuelle Thema und Ziel irrelevant sind, und konzentrieren Sie sich auf die Aspekte, die für das aktuelle Ziel relevant sind. Wenn Sie beispielsweise eine Ameise und einen Elefanten sehen und sich vorstellen können, wie ähnlich sie sind, handelt es sich um Abstraktion.
6. Was sind die Konzepte und Unterschiede zwischen abstrakten Klassen und Schnittstellen?
Abstrakte Klasse: Es handelt sich um eine spezielle Klasse, die nicht instanziiert werden kann und nur als übergeordnete Klasse anderer Klassen verwendet werden kann. Wird mit dem Schlüsselwort abstract deklariert.
Schnittstelle: Es handelt sich um eine spezielle abstrakte Klasse und eine spezielle Klasse, die über die Schnittstelle deklariert wird.
Unterschiede:
(1) Die Operationen abstrakter Klassen werden durch das Vererbungsschlüsselwort „extens“ implementiert, während die Verwendung von Schnittstellen durch das Schlüsselwort „implements“ implementiert wird.
(2) Es gibt Datenelemente in der abstrakten Klasse, die die Datenkapselung realisieren können, aber die Schnittstelle verfügt nicht über Datenelemente.
(3) Abstrakte Klassen können Konstruktoren haben, aber Schnittstellen haben keine Konstruktoren.
(4) Methoden abstrakter Klassen können mit den Schlüsselwörtern private, protected und public geändert werden (abstrakte Methoden können nicht privat sein), während Methoden in Schnittstellen nur mit dem Schlüsselwort public geändert werden können.
(5) Eine Klasse kann nur von einer abstrakten Klasse erben und eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren.
(6) Eine abstrakte Klasse kann Implementierungscode für Mitgliedsmethoden haben, aber eine Schnittstelle kann keinen Implementierungscode für Mitgliedsmethoden haben.
7. Was ist ein Konstruktor, was ist ein Destruktor und welche Funktion hat er?
Der Konstruktor (Methode) ist die erste Methode, die das Objekt automatisch aufruft, nachdem das Objekt erstellt wurde. Sie existiert in jeder deklarierten Klasse und ist eine spezielle Member-Methode. Seine Funktion besteht darin, einige Initialisierungsaufgaben auszuführen. In PHP wird __construct() verwendet, um die Konstruktormethode zu deklarieren, und es kann nur eine deklariert werden.
Der Destruktor (Methode) ist genau das Gegenteil des Konstruktors. Er ist die letzte Methode, die vom Objekt automatisch aufgerufen wird, bevor es zerstört wird. Dabei handelt es sich um einen neu in PHP5 hinzugefügten Inhalt, der dazu dient, bestimmte Vorgänge auszuführen, bevor ein Objekt zerstört wird, wie etwa das Schließen von Dateien und das Freigeben von Speicher.
8. Wie man die Methode der übergeordneten Klasse überlädt, geben Sie ein Beispiel
Überladen bedeutet, die Methode der übergeordneten Klasse zu überschreiben, also die Methode in zu verwenden Die Unterklasse ersetzt die Methode der Unterklasse. Von der übergeordneten Klasse geerbte Methoden werden auch Methodenüberschreibungen genannt.
Der Schlüssel zum Überschreiben der übergeordneten Klassenmethode besteht darin, dieselbe Methode in der übergeordneten Klasse in der Unterklasse zu erstellen, einschließlich Methodenname, Parameter und Rückgabewerttyp. In PHP müssen nur die Namen der Methoden identisch sein.
9. Was sind die am häufigsten verwendeten magischen Methoden? Beispielsweise legt
PHP fest, dass Methoden, die mit zwei Unterstrichen (__) beginnen, als magische Methoden reserviert sind. Daher wird empfohlen, dass Ihre Funktionsnamen nicht mit __ beginnen, es sei denn, dies dient dazu, vorhandene magische Methoden zu überlasten.
__construct() wird beim Instanziieren einer Klasse automatisch aufgerufen.
__destruct() wird automatisch aufgerufen, wenn das Klassenobjekt verwendet wird.
__set() wird aufgerufen, wenn einer undefinierten Eigenschaft ein Wert zugewiesen wird.
__get() wird aufgerufen, wenn undefinierte Eigenschaften aufgerufen werden.
__isset() wird aufgerufen, wenn die Funktion isset() oder empty() verwendet wird.
__unset() wird aufgerufen, wenn unset() verwendet wird.
__sleep() wird beim Serialisieren mit serialize aufgerufen.
__wakeup() wird beim Deserialisieren mit unserialize aufgerufen.
__call() wird aufgerufen, wenn eine Methode aufgerufen wird, die nicht existiert.
__callStatic() ruft eine statische Methode auf, die nicht existiert.
__toString() wird beim Konvertieren eines Objekts in einen String aufgerufen. Wie Echo.
__invoke() Wird aufgerufen, wenn versucht wird, ein Objekt als Methode aufzurufen.
__set_state() wird aufgerufen, wenn die Funktion var_export() verwendet wird. Akzeptiert einen Array-Parameter.
__clone() wird aufgerufen, wenn clone zum Kopieren eines Objekts verwendet wird.
10. Was bedeuten die drei Schlüsselwörter $this und self und parent? In welchen Situationen wird es verwendet?
$dieses aktuelle Objekt
selbst aktuelle Klasse
übergeordnete übergeordnete Klasse der aktuellen Klasse
$this wird in der aktuellen Klasse verwendet, use - >Eigenschaften und Methoden aufrufen.
self wird auch in der aktuellen Klasse verwendet, muss aber mit :: aufgerufen werden.
parent wird in Klassen verwendet.
11. Wie man Konstanten in einer Klasse definiert, wie man Konstanten in einer Klasse aufruft und wie man Konstanten außerhalb einer Klasse aufruft.
Konstanten in einer Klasse sind auch Mitgliedskonstanten. Eine Konstante ist eine Größe, die sich nicht ändert und ein konstanter Wert ist.
Konstanten mit dem Schlüsselwort const definieren.
Zum Beispiel: const PI = 3.1415326;
Ob innerhalb einer Klasse oder außerhalb einer Klasse, der Zugriff auf Konstanten und Variablen sind unterschiedlich. Konstanten müssen keine Objekte instanziieren. Das Format von
für den Zugriff auf Konstanten ist der Klassenname plus das Bereichsoperatorsymbol (Doppelpunkt).
Das heißt: Klassenname :: Klassenkonstantenname;
12. Wie verwende ich den Bereichsoperator::? In welchen Situationen wird es verwendet?
(1) Rufen Sie Klassenkonstanten auf
(2) Rufen Sie statische Methoden auf (mit Statik modifizierte Klassenmethoden)
13 __autoload() Methode Wie Funktioniert es?
Die Grundvoraussetzung für die Verwendung dieser magischen Funktion ist, dass der Dateiname der Klassendatei mit dem Namen der Klasse übereinstimmen muss.
Wenn das Programm zum Instanziieren einer bestimmten Klasse ausgeführt wird und die Klassendatei nicht vor der Instanziierung eingeführt wird, wird die Funktion __autoload() automatisch ausgeführt.
Diese Funktion findet den Pfad der Klassendatei basierend auf dem Namen der instanziierten Klasse. Wenn festgestellt wird, dass die Klassendatei im Pfad der Klassendatei vorhanden ist,
Führen Sie „Include“ oder „Require“ aus, um diese Klasse zu laden. Wenn die Datei in diesem Pfad nicht vorhanden ist, wird eine Fehlermeldung angezeigt.
Durch die Verwendung der magischen Funktion zum automatischen Laden entfällt die Notwendigkeit, viele Include- oder Require-Funktionen zu schreiben.
4. THINKPHP-Teil
1. Gängige PHP-Frameworks
Antwort: thinkPHP, laravel, yii, ci usw . .
2. Wie ist die Einzeleintragsdatei in TP zu verstehen?
ThinkPHP verwendet einen einzigen Zugangsmodus für die Projektbereitstellung und den Zugriff. Unabhängig davon, welche Funktion ausgeführt wird, verfügt ein Projekt über einen einheitlichen (aber nicht unbedingt den einzigen) Eingang. Es sollte gesagt werden, dass alle Projekte mit der Eintragsdatei beginnen und die Eintragsdateien aller Projekte ähnlich sind.
Die Eintragsdatei enthält hauptsächlich:
(1) Definieren Sie den Framework-Pfad, den Projektpfad und den Projektnamen (optional)
(2) Definieren Sie zugehörige Konstanten für den Debugging-Modus und den Ausführungsmodus (optional)
(3) Laden Sie die Framework-Eintragsdatei (Erforderlich). )
3. Was ist die MVC-Schichtung in ThinkPHP? (Verstehen)
MVC ist eine Methode zur Trennung der Logikschicht und der Präsentationsschicht einer Anwendung. ThinkPHP basiert ebenfalls auf dem MVC-Entwurfsmuster. MVC ist nur ein abstraktes Konzept und hat keine besonders klaren Vorschriften. Die MVC-Schichtung in ThinkPHP spiegelt sich grob wider in:
Modell (M): Die Definition des Modells wird durch die Model-Klasse vervollständigt.
Controller (C): Anwendungscontroller (Kerncontroller-App-Klasse) und Aktionscontroller übernehmen beide die Rolle des Controllers. Der Aktionscontroller übernimmt die Geschäftsprozesssteuerung, während der Anwendungscontroller für die Planungssteuerung verantwortlich ist.
Ansicht (V): Sie besteht aus einer Ansichtsklasse und einer Vorlagendatei. Die Vorlage ist zu 100 % getrennt und kann unabhängig voneinander in der Vorschau angezeigt und erstellt werden.
Aber tatsächlich ist ThinkPHP nicht auf M oder V angewiesen, was bedeutet, dass es ohne Modell oder Ansicht funktionieren kann. Es ist nicht einmal auf C angewiesen. Dies liegt daran, dass ThinkPHP zusätzlich zu Action auch über einen Master-Controller verfügt, den App-Controller, der für die Gesamtplanung der Anwendung verantwortlich ist. Fehlt C, muss View V vorhanden sein, andernfalls handelt es sich nicht mehr um eine vollständige Anwendung.
Kurz gesagt: Das MVC-Modell von ThinkPHP bietet lediglich ein Mittel zur agilen Entwicklung, anstatt sich an MVC selbst zu halten.
4. Wie optimiert man SQL? (Die Schüler können die folgende Erklärung verstehen und dann einfach die allgemeine Bedeutung entsprechend ihrem eigenen Verständnis angeben.)
(1) Wählen Sie die richtige Speicher-Engine
MyISAM eignet sich für einige Anwendungen, die eine große Anzahl von Abfragen erfordern, ist jedoch für eine große Anzahl von Schreibvorgängen nicht sehr gut. Selbst wenn Sie nur ein Feld aktualisieren müssen, wird die gesamte Tabelle gesperrt und andere Prozesse, auch der Lesevorgang, können nicht ausgeführt werden, bis der Lesevorgang abgeschlossen ist. Darüber hinaus ist MyISAM bei Berechnungen wie SELECT COUNT(*) extrem schnell.
Der Trend von InnoDB wird eine sehr komplexe Speicher-Engine sein, und für einige kleine Anwendungen wird sie langsamer sein als MyISAM. Es unterstützt jedoch die „Zeilensperre“ und ist daher besser, wenn viele Schreibvorgänge ausgeführt werden. Darüber hinaus werden auch fortgeschrittenere Anwendungen wie Transaktionen unterstützt.
(2) Optimieren Sie den Datentyp des Feldes
Denken Sie an einen Grundsatz: Je kleiner die Spalte, desto schneller. Wenn eine Tabelle nur wenige Spalten hat (z. B. eine Wörterbuchtabelle, eine Konfigurationstabelle), gibt es keinen Grund, INT als Primärschlüssel zu verwenden. Es ist wirtschaftlicher, MEDIUMINT, SMALLINT oder einen kleineren TINYINT zu verwenden. Wenn Sie die Zeit nicht im Auge behalten müssen, ist es viel besser, DATE als DATETIME zu verwenden. Natürlich müssen Sie auch genügend Raum für Erweiterungen lassen.
(3) Fügen Sie einen Index zum Suchfeld hinzu
Der Index bedeutet nicht unbedingt den Primärschlüssel oder das einzige Feld. Wenn es in Ihrer Tabelle ein Feld gibt, das Sie immer für die Suche verwenden, ist es am besten, es zu indizieren, es sei denn, das Feld, das Sie durchsuchen möchten, ist ein großes Textfeld, dann sollten Sie einen Volltextindex erstellen.
(4) Vermeiden Sie die Verwendung von Select Je mehr Daten aus der Datenbank gelesen werden, desto langsamer wird die Abfrage. Wenn Ihr Datenbankserver und Ihr WEB-Server außerdem zwei unabhängige Server sind, erhöht dies auch die Belastung durch die Netzwerkübertragung. Auch wenn Sie alle Felder in der Datentabelle abfragen möchten, versuchen Sie, das Platzhalterzeichen nicht zu verwenden. Eine sinnvolle Verwendung der integrierten Feldausschlussdefinitionen kann mehr Komfort bieten.
(5) Verwenden Sie ENUM anstelle von VARCHAR
Der ENUM-Typ ist sehr schnell und kompakt. Tatsächlich enthält es einen TINYINT, erscheint jedoch als Zeichenfolge. Auf diese Weise ist es ideal, dieses Feld zum Erstellen einiger Auswahllisten zu verwenden. Wenn beispielsweise die Werte von Feldern wie Geschlecht, ethnische Zugehörigkeit, Abteilung und Status begrenzt und fest sind, sollten Sie ENUM anstelle von VARCHAR verwenden.
(6) Verwenden Sie wann immer möglich NOT NULL
Sofern Sie keinen ganz bestimmten Grund haben, NULL-Werte zu verwenden, sollten Sie Ihre Felder immer auf NOT NULL belassen. NULL benötigt tatsächlich zusätzlichen Speicherplatz und Ihr Programm wird komplexer, wenn Sie Vergleiche durchführen. Dies bedeutet natürlich nicht, dass Sie nicht NULL verwenden können. Die Realität ist sehr kompliziert und es wird immer noch Situationen geben, in denen Sie NULL-Werte verwenden müssen.
(7) Tabellen mit fester Länge werden schneller sein
Wenn alle Felder in der Tabelle „feste Länge“ haben, wird die gesamte Tabelle als „statisch“ oder „fest“ betrachtet -Länge". Beispielsweise enthält die Tabelle keine Felder der folgenden Typen: VARCHAR, TEXT, BLOB. Solange Sie eines dieser Felder einschließen, ist die Tabelle keine „statische Tabelle fester Länge“ mehr und die MySQL-Engine verarbeitet sie auf andere Weise.
Tabellen mit fester Länge verbessern die Leistung, da MySQL schneller sucht. Da diese festen Längen die Berechnung des Offsets der nächsten Daten erleichtern, erfolgt das Lesen natürlich schneller. Und wenn das Feld keine feste Länge hat, muss das Programm jedes Mal, wenn Sie das nächste finden möchten, den Primärschlüssel finden.
Außerdem lassen sich Tabellen mit fester Länge einfacher zwischenspeichern und neu erstellen. Der einzige Nebeneffekt besteht jedoch darin, dass Felder mit fester Länge etwas Platz verschwenden, da Felder mit fester Länge unabhängig davon, ob Sie sie verwenden oder nicht, so viel Platz beanspruchen.
5. Wie ist das Verhalten in der ThinkPHP 3.0-Architektur zu verstehen (Kern + Verhalten + Treiber)?
(1) Kern: Es ist der Kerncode des Frameworks, eine unverzichtbare Sache. TP selbst ist ein Framework, das auf der Grundlage der MVC-Idee entwickelt wurde.
(2) Verhalten: Verhalten spielt eine entscheidende Rolle in der Architektur der neuen Version von ThinkPHP. Zusätzlich zum Systemkern gibt es viele Tag-Erweiterungsbits, und jede Tag-Position kann ihre eigene Funktion ausführen selbständiges Verhalten. Auf diese Weise wurden Verhaltenserweiterungen geboren, und viele Systemfunktionen werden auch durch integrierte Verhaltenserweiterungen vervollständigt. Alle Verhaltenserweiterungen sind austauschbar und additiv und bilden somit die Grundlage für den Aufbau des zugrunde liegenden Frameworks.
(3) Treiber: Datenbanktreiber, Cache-Treiber, Tag-Bibliothekstreiber und Template-Engine-Treiber sowie externe Klassenerweiterungen.
6. Was ist die herkömmliche Konfiguration?
Die sogenannte konventionelle Konfiguration ist die eigene Konfigurationsdatei des Frameworks. Diese Datei befindet sich in Convention.php im Kern-Framework-Verzeichnis und der Konfigurationsinhalt lautet wie folgt. Da es sich bei dieser Datei um eine Konfigurationsdatei handelt, die mit dem Framework geliefert wird, dient sie uns im eigentlichen Entwicklungsprozess hauptsächlich als Referenzbeispiel. Wir ändern den Konfigurationsinhalt dieser Datei selten und konfigurieren die Felder häufiger entsprechend den Anforderungen gemäß der Konvention Definitionen und Anmerkungen zum Anpassen von Konfigurationsinhalten in Modulen oder Common.
7. Was ist SQL-Injection? (Verstehen)
Der SQL-Injection-Angriff ist eines der häufigsten Mittel, mit denen Hacker Datenbanken angreifen.
Einige Programmierer beurteilen die Rechtmäßigkeit von Benutzereingabedaten beim Schreiben von Code nicht. Der Injektor kann einen Datenbankabfragecode in das Formular eingeben und senden, und das Programm fügt die übermittelten Informationen zusammen, um eine vollständige SQL zu generieren -Anweisung wird der Server dazu verleitet, den bösartigen SQL-Befehl auszuführen. Der Injektor ruft erfolgreich einige sensible Daten ab, die auf den vom Programm zurückgegebenen Ergebnissen basieren, und steuert sogar den gesamten Server. Dies ist eine SQL-Injection.
8. Wie verhindert ThinkPHP die SQL-Injection? (Verstehen)
(1) Versuchen Sie, Arrays für Abfragebedingungen zu verwenden, was eine sicherere Methode ist
(2) Wenn Sie Zeichenfolgenabfragebedingungen verwenden müssen, verwenden Sie vorab. Verarbeitungsmechanismus;
(3) Bindungsparameter verwenden
(4) Aktivieren Sie die Datenfeldtypüberprüfung, und Sie können die Konvertierung numerischer Datentypen erzwingen (die Feldtypüberprüfung ist seit Version obligatorisch). 3.1 )
(5) Automatische Überprüfung und automatische Vervollständigungsmechanismen zur benutzerdefinierten Filterung von Anwendungen verwenden
(6) Feldtypprüfung, automatische Überprüfung und automatische Vervollständigungsmechanismen verwenden, um böswillige Dateneingaben zu vermeiden.
9. Wie aktiviere ich den Debugging-Modus? Welche Vorteile bietet der Debug-Modus?
Das Aktivieren des Debugging-Modus ist sehr einfach. Sie müssen nur eine Zeile Konstantendefinitionscode zur Eintragsdatei hinzufügen:
// Um den Debugging-Modus zu aktivieren, wird empfohlen, ihn zu aktivieren Bereitstellungsphasenkommentare während der Entwicklungsphase oder setzen Sie es auf false
define('APP_DEBUG', true);
Die Vorteile des Debugging-Modus sind: Aktivieren Sie die Protokollierung, alle Fehlerinformationen und Debugging-Informationen werden detailliert aufgezeichnet Erleichterung des Debuggens; Deaktivieren Sie das Vorlagen-Caching. Änderungen an der Vorlage können sofort wirksam werden. Um die SQL-Analyse zu erleichtern, werden Feldänderungen in der Datentabelle nicht vom Caching beeinflusst. hilft Ihnen, Linux-Bereitstellungsprobleme im Voraus zu erkennen; kann bequem in verschiedenen Phasen des Entwicklungsprozesses verwendet werden, einschließlich Entwicklung, Test und Demonstration usw. Verschiedene Anwendungsmodi können unabhängige Projektkonfigurationsdateien konfigurieren.
10. Welche Konfigurationsmodi werden in TP unterstützt? Priorität?
Konventionelle Konfiguration->Anwendungskonfiguration->Moduskonfiguration->Debug-Konfiguration->Statuskonfiguration->Modulkonfiguration->Erweiterte Konfiguration->Dynamische Konfiguration
Das Obige ist die Ladereihenfolge der Konfigurationsdateien. Da die spätere Konfiguration die vorherige Konfiguration mit demselben Namen überschreibt (wenn sie nicht wirksam wird), ist die Priorität von rechts nach links.
11. Was sind die URL-Muster in TP? Welches ist die Standardeinstellung?
ThinkPHP unterstützt vier URL-Modi, die durch Festlegen des URL_MODEL-Parameters definiert werden können, einschließlich Normalmodus, PATHINFO, REWRITE und Kompatibilitätsmodus.
Der Standardmodus ist: PATHINFO-Modus, setzen Sie URL_MODEL auf 1
12 Was sind die Systemvariablen in TP? Wie erhalte ich Systemvariablen?
(1)系统变量:_ENV、 $ _POST、 $_GET、 _SESSION和 $_COOKIE变量
(2)获取系统变量:
{KaTeX-Analysefehler: „EOF“ erwartet, „}“ an Position erhalten 25: …ver.script_name}̲ // 输出_SERVER['SCRIPT_NAME']变量
{KaTeX parse error: Expected 'EOF', got '}' at position 22: …session .user_id}̲ // 输出_SESSION['user_id']变量
{KaTeX parse error: Expected 'EOF', got '}' at position 21: ….get.pageNumber} ̲ // 输出_GET['pageNumber']变量
{KaTeX parse error: Expected 'EOF', got '}' at position 18: …ink.cookie.name}̲ / / 输出_COOKIE['name']变量
13、ThinkPHP框架中D函数与M函数的区别是什么?
M方法实例化模型无需用户为每个数据表定义模型类, D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会自动调用Model基类🎜>五、smarty模板引擎
1、编译和缓存区别?
smarty的编译过程就是把模板拿过来,把里面的标签替换成相应php代码, 这就是smarty的编译, 其实就是php和html混合的过程smarty的缓存需要手动开启,smarty的缓存就是把编译好的文件执行后,同时生成一份静态的html页面,再次访问的时候,你访问的就是是html文件了,所以就效率来说,要高一些。
2
、什么是smarty? Smarty的优点是什么?Smarty是一个使用PHP写出来的PHP模板引擎,目的是要使用PHP程序同美工分离,使的程序员改变程序的逻辑内容时不会影响到美工的页面设计, 美工重新修改页面时不会影响到程序的程序逻辑,这在多人合作的项目中
Smarty优点(1) Schnell: im Vergleich zu anderen Template-Engines.
(2) Kompilierter Typ: Ein in Smarty geschriebenes Programm muss zur Laufzeit in eine PHP-Datei ohne Template-Technologie kompiliert werden
(3) Caching-Technologie: Sie kann konvertieren, was der Benutzer letztendlich sieht HTML-Dateien werden in einer statischen HTML-Seite zwischengespeichert
(4) Plug-in-Technologie: Smarty kann Plug-ins anpassen.
Orte, an denen Smarty nicht geeignet ist
(1) Inhalte, die in Echtzeit aktualisiert werden müssen. Beispielsweise müssen die Daten wie bei der Lagerbestandsanzeige häufig aktualisiert werden
(2) Kleine Projekte. Kleine Projekte, die aufgrund ihrer Einfachheit sowohl einen Künstler als auch einen Programmierer erfordern
3. Verwenden Sie {$smarty}, um Variablen in der Vorlage beizubehalten
{KaTeX Parse-Fehler: Erwartetes 'EOF', bekam '}' an Position 16: smarty.get.page}̲ //Ähnlich wie beim Zugriff auf _GET[page]
{KaTeX in einem PHP-Skript-Parse-Fehler: Erwartetes 'EOF', bekam '}' an Position 16: smarty.cookies.}̲
{smarty.post.}
{KaTeX-Analysefehler: „EOF“ erwartet, „}“ an Position 16 erhalten: smarty.session.}̲
{smarty.server.🎜>
4. Zugriffsvariablen in PHP in Vorlagen
5. Variablenvermittler
Zusammenfassung der klassischen PHP-Interviewfragen 2018 (aktualisiert) – PHP-Interviewfragen6 Wenn PHP die MySQL-Datenbank abfragt, werden bei der Abfrage der chinesischen Ergebnisse verstümmelte Zeichen angezeigt. Wie kann man es lösen?
(1) Datei-Meta (beim Festlegen der Browser-Analyse) (2) Kodierungseinstellungen beim Herstellen einer Verbindung zur Datenbank (3) Wird in PHP-Dateien verwendet Header-Funktion bestimmt die Kodierung7. Caching-Mechanismus
Wenn das Caching aktiviert ist, generiert smarty auch eine statische HTML-Seite, wenn diese nicht innerhalb der eingestellten Zeit abläuft , Wenn Sie es erneut besuchen, greifen Sie auf die HTML-Datei zu, wodurch die Notwendigkeit, die Datenbank zu lesen, reduziert wird, sodass die Effizienz höher ist.8. Smarty-Zuweisungs- und Ladevorlage
$Smarty->assign(name,value)$Smarty->display('index .html ')
9. Wozu dient die Marty-Template-Technologie?
Um PHP und HTML zu trennen, sollten Künstler und Programmierer ihre eigenen Aufgaben erfüllen, ohne sich gegenseitig zu stören.10. Was sind die wichtigsten Smarty-Konfigurationen?
(1) smarty.class.php einführen (2) Instanziieren Sie das Smarty-Objekt (3) Ändern Sie den Standardvorlagenpfad erneut; (4) Ändern Sie den Pfad der standardmäßigen kompilierten Datei erneut. (5) Ändern Sie den Pfad der standardmäßigen Konfigurationsdatei erneut -Ändern Sie den Standard-Cache-Pfad. (7) Sie können festlegen, ob der Cache aktiviert werden soll. (8) Sie können die linken und rechten Trennzeichen festlegen.11. Auf welche Details müssen Sie bei der Nutzung von smarty achten?
Smarty ist eine Template-Engine, die auf dem MVC-Konzept basiert. Sie unterteilt ein Seitenprogramm zur Implementierung in zwei Teile: die Ansichtsebene und die Steuerungsebene. Mit anderen Worten, die Smarty-Technologie integriert Benutzeroberfläche getrennt vom PHP-Code.
Auf diese Weise können Programmierer und Künstler ihre jeweiligen Aufgaben erfüllen, ohne sich gegenseitig zu stören.
12. Achten Sie bei der Verwendung von smarty auf folgende Punkte:
(1) Konfigurieren Sie smarty richtig. Es ist hauptsächlich notwendig, das Smarty-Objekt zu instanziieren und den Pfad der Smarty-Vorlagendatei zu konfigurieren.
(2) Zuweisung zuweisen und Anzeigeseite auf der PHP-Seite anzeigen. (3) Smarty Vorlagendateien dürfen nicht als PHP-Code-Snippet angezeigt werden. Alle Kommentare, Variablen und Funktionen müssen in Trennzeichen enthalten sein.6. Sekundäres Entwicklungssystem (DEDE, ecshop)
1. Verständnis der sekundären Entwicklung
2 Sekundäre Entwicklung, Einfach ausgedrückt bedeutet dies, vorhandene Software anzupassen und zu ändern, Funktionen zu erweitern und dann die gewünschten Funktionen zu erreichen. Im Allgemeinen wird der Kern des ursprünglichen Systems nicht geändert.2. MVC
Modell (Modell) Datenverarbeitung.Vorlagenanzeige anzeigen.
Controller steuert den Prozess.Was ist das Konzept von MVC? Was sind die Hauptaufgaben jedes Levels?
MVC (Model-View-Controller) ist ein Software-Designmuster oder eine Programmieridee.M bezieht sich auf die Modellmodellebene, V ist die Ansichtsebene (Anzeigeebene oder Benutzeroberfläche) und C ist die Controllerebene.
Der Zweck der Verwendung von mvc besteht darin, M und V zu trennen, sodass ein Programm problemlos verschiedene Benutzeroberflächen verwenden kann. Bei der Website-Entwicklung ist die -Modellebene im Allgemeinen für das Hinzufügen, Löschen, Ändern und Überprüfen von Datenbanktabelleninformationen verantwortlich, die Ansichtsebene ist für die Anzeige von Seiteninhalten verantwortlich , und die -Steuerung Die Controller-Schicht spielt eine regulierende Rolle zwischen M und V. Die Controller-Schicht entscheidet, welche Methode welcher Modellklasse aufgerufen werden soll. Nach der Ausführung von entscheidet die Controller-Schicht, welche Ansichtsebene, der das Ergebnis zugewiesen werden soll.3. Beim Zugriff auf das sekundäre Entwicklungsprogramm nach der Installation werden einige Warnungen und Fehler angezeigt
Ändern Sie entsprechend den Fehlern die Serverkonfigurationsparameter und Baidu4. Funktion, Vorlagenersetzung, Funktionsergänzung und -änderung
Tatsächlich wird es für objektorientierte Anwendungen verwendet, und das Ersetzen von Vorlagen ähnelt der Verwendung von Smarty5, Welche sekundären Entwicklungstools haben Sie verwendet?
Dedecms phpcms ecshop, im Grunde ist es kein Problem zu lernen, wenn Sie über eine gute Grundlage verfügen.6. Ist es besser, eine Primärentwicklung wie PHP oder eine Sekundärentwicklung durchzuführen?
Im Allgemeinen nutzen kleine und mittlere Unternehmen aus Effizienzgründen CMS-Systeme für die Sekundärentwicklung. Wenn Sie alles auf einmal entwickeln möchten, ist das natürlich in Ordnung, solange Sie wissen, wie man das Framework verwendet, und genügend Zeit haben. Große Unternehmen entwickeln in Teams, um Urheberrechtsprobleme zu vermeiden.
7. Wie werden im sekundären Entwicklungsprozess die Methodenzugriffe zwischen vielen Klassen übertragen?
Es handelt sich nicht um eine Klassenvererbung, sondern um eine Objektkombination, die die instanziierten Objekte global weiterleitet.
8 Wenn dedecms das Verzeichnis ändert, können bestimmte Elemente im Hintergrund nicht eingegeben werden. Wie kann man es lösen?
Ändern Sie die Hintergrundkerneinstellungen auf den aktuellen Projektverzeichnisnamen
9. Was ist das Verständnis des benutzerdefinierten Modells in dedecms?
Im DreamWeaver-System gibt es das Konzept des Inhaltsmodells, mit dem Websites mit unterschiedlichen Inhaltsformen erstellt werden können. Das System verfügt über die folgenden Modelle: gewöhnliche Artikel, Fotoalben, Software, Produkte, Verschlusssachen, Spezialthemen.
Durch das systemeigene Modell können wir damit verschiedene Arten von Websites erstellen. Sie können beispielsweise einen Atlas verwenden, um eine Bilder-Site zu erstellen, und ein Softwaremodell verwenden, um eine Software-Download-Site zu erstellen.
Natürlich werden die oben genannten Modelle, die mit dem System geliefert werden, als Systemmodelle bezeichnet. Benutzer können einige Modelle selbst definieren, z. B. Bücher, Musikalben usw. Nur durch die Anpassung dieser Modelle können sie Websites mit mehr Inhalten erstellen Formen.
Es ist gleichbedeutend damit, dass wir die Tabellenstruktur automatisch hinzufügen, um sie an Änderungen der aktuellen Bedürfnisse anzupassen
10 Konzepte beim Entwerfen und Verwenden von Vorlagen müssen Sie die folgenden Konzepte verstehen
(1) Abschnittsvorlage (Cover):
bezieht sich auf die Vorlage, die von der Website-Homepage oder dem Cover-Kanal wichtigerer Spalten verwendet wird und im Allgemeinen mit „index_identification ID.htm“ benannt wird. Darüber hinaus kann ein einzelnes Seiten- oder benutzerdefiniertes Tag, das vom Benutzer definiert wird, auch auswählen, ob Abschnittsvorlagen-Tags unterstützt werden sollen. Wenn dies unterstützt wird, verwendet das System die Abschnittsvorlagen-Tag-Engine zum Parsen, bevor der Inhalt ausgegeben oder eine bestimmte Datei generiert wird.
(2) Listenvorlage:
bezieht sich auf die Vorlage für die Liste aller Artikel in einer bestimmten Spalte der Website, im Allgemeinen benannt mit „list_identification ID.htm“.
(3) Dateivorlage:
stellt die Vorlage der Dokumentanzeigeseite dar, z. B. die Artikelvorlage, im Allgemeinen mit „article_identification ID.htm“ benannt.
(4) Andere Vorlagen:
Zu den allgemeinen Systemvorlagen gehören: Homepage-Vorlage, Suchvorlage, RSS, JS-Kompilierungsfunktionsvorlage usw. Darüber hinaus können Benutzer auch eine zu erstellende Vorlage anpassen Jede Datei.
11. Wie viele Tags werden in dede verwendet?
Listeninhalts-Tags können nur innerhalb ihres Gültigkeitsbereichs verwendet werden, Listen-Tags können nur in Listen verwendet werden und Inhalts-Tags können nur in Inhalts-Tags verwendet werden.
Globale Tags können auf allen Seiten verwendet werden
12. Vertraut mit häufig verwendeten Klassenbibliotheken
(zum Beispiel: dedesql.class.php) ; vertraut mit der Systemfunktionsbibliothek (common.func.php); vertraut mit der Front-End-Eintragsdatei (common.inc.php)
7. Entwicklung der öffentlichen WeChat-Plattform
1. WeChat-Betriebsmechanismus
Welche Sprache wird für die Kommunikation zwischen dem offiziellen Konto und PHP verwendet: So empfangen Sie XML
Weixin.php Offizielle Kontodaten:
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//Daten empfangen XML-Daten
2. Nachrichtentyp
WeChat bietet derzeit 7 grundlegende Nachrichtentypen, nämlich:
(1) Textnachricht (Text); (2) Bildnachricht (Bild); >
(3) Stimme (4) Video (5) Standort (6) Linknachricht (Link); (7) Ereignis-Push (Ereignis) Typ. Beherrschen Sie das Datenübertragungsformat beim Senden verschiedener Nachrichtentypen3 Die Funktion zum Einlesen der gesamten Datei in eine Zeichenfolge ist
File_get_contents4. Häufig verwendete Funktionen
Die Funktion, die XML-Daten in Objekte analysiert, istsimplexml_load_string( )
Die Funktion, die Zeichenfolgen in Arrays umwandelt, ist___ explosion_________, die Funktion, die ein Array in einen String umwandelt, ist ____implode________.Der String, der den URL-String codiert, ist ____urlencode________.Die Rolle der Sprintf-Funktion
Sie können dies im Handbuch überprüfen.
6. Warum kann das offizielle WeChat-Konto keine Dienste bereitstellen?
(1) Netzwerkgrund, Datenschnittstellengrund(2) Codefehler, wie man den Grund errät
Überprüfen Sie, wo geändert werden muss, wenn der Code vorhanden ist richtigSie können die Daten ausgeben und einen Blick darauf werfen. Verwenden Sie PHP, um Dateien zu bedienen$myfile = fopen(“newfile.txt”, “w”); txt="aaaaaaaaaa";fwrite(txt ="aaaaaaaaaa"; fwrite(txt="aaaaaaaaaa";fwrite(myfile, txt);fclose(txt); fclose(txt);fclose(myfile);
7. Benutzerdefiniertes Menü-Ereignis-Push
Klicken Sie aufKlicken Sie auf den Sprunglink
Scannen Sie den QR Code zum Push-EreignisScannen Sie den QR-Code zum Pushen und PopupPopup des Systems zum Aufnehmen von Bildern und Posten von BildernPopup des WeChat-Album-Foto-Sender-EventsÖffnen Sie die Ereignisse zur geografischen Standortauswahl8. Die Rolle des Tokens
Überprüfung des Sicherheitsmechanismus, der zur Sicherheitsüberprüfung zwischen WeChat-Server und PHP-Server verwendet wird9. Die Rolle von Appid und Secret
Beim Anfordern der API-Schnittstelle (z. B. Menübedienung) müssen Sie die Appid- und Secrect-Werte übergeben Erhalten Sie den AnwendungsautorisierungscodeVielen Dank fürs Lesen und ich hoffe, dass Ihr Interview gut verläuft
Empfohlenes Tutorial: "PHP-Tutorial"
Das obige ist der detaillierte Inhalt vonSammlung von PHP-Interviewfragen 2021. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!