Heim  >  Artikel  >  Backend-Entwicklung  >  2017php klassische Interviewfragen

2017php klassische Interviewfragen

不言
不言Original
2018-04-21 10:32:071511Durchsuche

Der in diesem Artikel vorgestellte Inhalt bezieht sich auf die klassischen Interviewfragen von 2017. Jetzt kann ich ihn mit Ihnen teilen.

1 Die wichtigsten Aspekte der PHP-Sprache Der Vorteil ist plattformübergreifend. Was ist plattformübergreifend? 1. PHP-Grundlagen:


Die optimale Kombination der PHP-Betriebsumgebung ist Apache+MySQL+PHP Es ist auf verschiedenen Betriebssystemen (wie Windows, Linux usw.) konfiguriert und wird nicht durch das Betriebssystem eingeschränkt, daher wird es als plattformübergreifend bezeichnet

2. Wie viele Methoden Gibt es Möglichkeiten zur Datenübermittlung bei der WEB-Entwicklung? Was ist der Unterschied? Welche Methode verwendet Baidu?

Zwei Methoden von Get und Post

Unterschied: 1. Get ruft Daten vom Server ab und Post überträgt Daten an den Server

2. Der von Get übergebene Wert ist in der URL sichtbar, der per Post übergebene Wert ist jedoch nicht in der URL sichtbar

4 Der von Get übergebene Wert liegt im Allgemeinen innerhalb von 2 KB und die Größe des per Post übergebenen Werts ist in Ordnung. In php.ini festgelegt

5. Get ist nicht niedrig in der Sicherheit, Post ist sicherer , aber die Ausführungseffizienz ist höher als bei Post

Vorschläge:

1. Die Get-Methode ist weniger sicher als die Post-Methode vertrauliche Informationen und es wird empfohlen, die Post-Datenübermittlungsmethode zu verwenden; es wird empfohlen, die Get-Methode für die Datenabfrage zu verwenden; , Ändern oder Löschen von Daten;

Die von Baidu verwendete Get-Methode, da sie aus ihrer URL ersichtlich ist

3 , Template-Engines, Systeme usw. von PHP

Framework: Es gibt viele Frameworks wie Zendframe, CI, Yii usw. Was wir gelernt haben, ist thinkphp

Vorlagen-Engine: Es gibt viele, einige sind in den Lehrbüchern, was wir gelernt haben, ist intelligent

System: Es gibt Es gibt viele, wie zum Beispiel: Kangshengs Produkte (uchome, supesite, discuzX usw.), Empire System, DEDE (Dreamweaver), Ecshop usw. Was wir gelernt haben, ist DEDECMS, Ecshop

4 , sagen Sie mir, welches Web Welche Frontend-Technologien beherrschen Sie?

Kompetent in p+CSS-Webseitenlayout, JavaScript, jQuery-Framework, Photoshop-Bildverarbeitung

5 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 uns, auf welche Sicherheitsmechanismen bei der Entwicklung geachtet werden sollte.

①Verhindern Sie die Remote-Übermittlung; ②Verhindern Sie die SQL-Injection, filtern Sie spezielle Codes; ③Verhindern Sie die Überflutung der Registrierungsmaschine; verwenden Sie Verifizierungscode; die Betriebseffizienz des Programms während der Programmentwicklung?

① Optimieren Sie SQL-Anweisungen. Versuchen Sie, select * in Abfrageanweisungen nicht zu verwenden. Verwenden Sie zum Überprüfen, welches Feld weniger Unterabfragen verwendet und durch Tabellenverbindungen ersetzt werden kann ; ②Datentabelle Erstellen Sie Indizes in; ③ Generieren Sie einen Cache für im Programm häufig verwendete Daten.

8.

PHP ist die beste Kombination mit MYSQL-Datenbanken. Natürlich kann PHP auch mit anderen Datenbanken verwendet werden, z. B. verfügt PHP über reservierte Funktionen für den Betrieb von MSSQL. Verwenden Sie

9. Heutzutage wird häufig die dreischichtige Struktur von MVC in der Programmierung verwendet. Was sind die Vorteile von MVC?

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 der Ansichtsschicht zu Die Vorteile sind: ① Es kann Code-Wiederverwendbarkeit erreichen und Code-Redundanz vermeiden; ②M und V realisieren Code-Trennung, sodass dasselbe Programm unterschiedliche Ausdrücke verwenden kann

10 Format verstehen?

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 Unterschiede zwischen Print, Echo und print_r?

① 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 relativ gesehen eine Funktion mit einem Rückgabewert ist. Wenn Sie nur Echo ausgeben, ist die Geschwindigkeit schneller, und print_r wird normalerweise zum Drucken von Informationen über Variablen verwendet, die normalerweise beim Debuggen verwendet werden.

② print dient zum Drucken einer Zeichenfolge

③ print_r dient zum Drucken eines zusammengesetzten Typs wie eines Array-Objekts

12. Was ist der Unterschied zwischen SESSION und COOKIE?

①Speicherort: Sitzung wird auf dem Server gespeichert, Cookie wird im Browser gespeichert

②Sicherheit: Sitzungssicherheit ist höher als Cookie

③session ist ein „Sitzungsdienst“. Sie müssen den Dienst nicht aktivieren, wenn Sie ihn verwenden 🎜>14. PHP zur Verarbeitung von Arrays Häufig verwendete Funktionen? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)

①array() erstellt ein Array; ②count() gibt die Anzahl der Elemente im Array zurück; ③array_push() schiebt ein oder mehrere Elemente am Ende des Arrays (auf den Stapel geschoben); ④array_combine() gibt den Wert einer einzelnen Spalte im Eingabearray zurück; ⑥array_reverse(); gibt das Array in umgekehrter Reihenfolge zurück; ⑦array_unique( )Löschen Sie doppelte Werte im Array; ⑧in_array() prüft, ob der angegebene Wert im Array vorhanden ist;

15 Strings in PHP verarbeiten? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)

①trim() entfernt Leerzeichen und andere Zeichen auf beiden Seiten der Zeichenfolge; ②substr_replace() ersetzt einen Teil davon die Zeichenfolge „Ersetzen“ durch eine andere Zeichenfolge; ③substr_count() zählt, wie oft eine Teilzeichenfolge in der Zeichenfolge vorkommt; ⑤strtolower() wandelt die Zeichenfolge in Großbuchstaben um; Buchstaben; ⑦strtr() konvertiert bestimmte Zeichen in einem String; ⑧strrchr() findet das erste Vorkommen eines Strings in einem anderen String; strrev() kehrt sich um; der String; strlen() gibt die Länge des Strings zurück; print() gibt einen oder mehrere Strings in ein Array auf; ) erkennt, ob die Variable ein String ist; mb_substr() ist eine Funktion zum Ausschneiden von Chinesisch und Englisch

16 Zeit verarbeiten? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)

date_default_timezone_get() gibt die Standardzeitzone zurück.

date_default_timezone_set() legt die Standardzeitzone fest.

date() formatiert die Ortszeit/das lokale Datum.

getdate() gibt Datums-/Uhrzeitinformationen zurück.

gettimeofday() gibt die aktuelle Zeitinformation zurück.

microtime() gibt die Anzahl der Mikrosekunden in der aktuellen Zeit zurück.

mktime() gibt den Unix-Zeitstempel eines Datums zurück.

strtotime() analysiert jede Datums- oder Zeitbeschreibung in englischem Text in einen Unix-Zeitstempel.

time() gibt den Unix-Zeitstempel der aktuellen Zeit zurück.

17. Was sind die gemeinsamen Funktionen von PHP für die Datenbankverarbeitung? (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

18. Was sind die allgemeinen Funktionen zum Bearbeiten von Dateien in PHP? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion)

①Datei öffnen; ④Datei schreiben; ⑥Datei erstellen usw. Dieses Element ist sehr wichtig und wird häufig zum Generieren von Dateien bei der Arbeit verwendet. Bitte lesen Sie das PHP-Handbuch und prüfen Sie es sorgfältig

19 Was sind die allgemeinen Funktionen von PHP-Betriebsverzeichnissen (Ordnern)? (Konzentrieren Sie sich auf die „Parameter“ und den „Rückgabewert“ der Funktion) ②Verzeichnis löschen; ④Verzeichnis erstellen; Verzeichnis Warten Sie, dieses Element ist bei der Arbeit sehr wichtig. Es wird häufig zum Erstellen oder Löschen von Verzeichnissen für zwischengespeicherte und statische Seiten verwendet. Bitte lesen Sie das PHP-Handbuch sorgfältig durch

Zurück nach oben

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.

Datenbearbeitung: Auswählen, einfügen, aktualisieren, löschen,

Datenkontrolle: gewähren, widerrufen

Datenabfrage: auswählen

3. Was sind die Integritätsbeschränkungen?

Antwort: Datenintegrität bezieht sich auf die Genauigkeit und Zuverlässigkeit von Daten.

ist in die folgenden vier Kategorien unterteilt:

1) Entitätsintegrität: legt fest, dass jede Zeile der Tabelle eine eindeutige Entität in der ist Tisch.

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: Dies 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 Datenbeschädigungen zu verhindern . Fehlende oder bedeutungslose Daten häufen sich in der Datenbank.

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.

Tabellenbezogene Einschränkungen: einschließlich Spalteneinschränkungen (NOT NULL (Nicht-Null-Einschränkungen)) und Tabelleneinschränkungen (PRIMARY KEY, fremd). Schlüssel, Scheck, EINZIGARTIG).

4. Was ist eine Transaktion? und seine Eigenschaften?

Antwort: Transaktion: Es handelt sich um eine Reihe von Datenbankoperationen und die grundlegende logische Einheit von Datenbankanwendungen.

Transaktionsmerkmale:

(1) Atomizität: Das heißt, Unteilbarkeit, Transaktionen werden entweder alle ausgeführt oder keine davon.

(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.

Oder verstehen Sie es so:

Eine Transaktion ist eine Gruppe von SQL-Anweisungen, die als logische Arbeitseinheit miteinander verbunden sind. Wenn eine Anweisungsoperation fehlschlägt, wird die Der gesamte Vorgang wird ausgeführt. Wenn er fehlschlägt, werden zukünftige Vorgänge auf den Zustand vor dem Vorgang zurückgesetzt, oder es wird ein Knoten darauf vorhanden sein. Um sicherzustellen, dass etwas entweder ausgeführt oder nicht ausgeführt wird, können Transaktionen verwendet werden. Damit eine gruppierte Anweisung als Transaktion betrachtet werden kann, muss sie die ACID-Tests bestehen, nämlich Atomizität, Konsistenz, Isolation und Haltbarkeit.

5. Was ist ein Schloss?

Antwort: 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: Zu den Sperren gehören Sperren auf Zeilenebene und Sperren auf Tabellenebene

6. Was ist eine Ansicht? Was ist ein Cursor?

Antwort: 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. Im Vergleich zu Abfragen mit mehreren Tabellen ist es für uns einfacher, Daten zu erhalten.

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 Änderungen an der aktuellen Zeile des Ergebnissatzes vornehmen. 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?

Antwort: Die 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 mehrmals aufgerufen werden kann das Programm später. 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?

Antwort: 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. Durch das Erstellen eines Index können Sie eine einzelne Spalte oder mehrere Spalten angeben. Der Nachteil besteht darin, dass die Dateneingabe verlangsamt und die Datenbank vergrößert wird.

9. Wie kann man die drei Paradigmen auf populäre Weise verstehen?

Antwort: Erste Normalform: 1NF ist eine Atomizitätsbeschränkung für Attribute, die erfordert, dass Attribute atomar und nicht zerlegbar sind

Nein. Zweite Normalform: 2NF ist eine Einschränkung der Eindeutigkeit von Datensätzen, die erfordert, dass Datensätze eindeutige Identitäten haben, d. h. die Einzigartigkeit von Entitäten; dritte Normalform: 3NF ist eine Einschränkung der Feldredundanz, d Andere Felder erfordern, dass Felder nicht redundant sind. .

10. Was ist eine Basistabelle? Was ist eine Ansicht?

Antwort: Die Basistabelle ist eine Tabelle, die unabhängig existiert. In SQL entspricht eine Beziehung einer Tabelle. Eine Ansicht ist eine Tabelle, die aus einer oder mehreren Basistabellen abgeleitet ist. Die Ansicht selbst wird nicht unabhängig in der Datenbank gespeichert, sondern ist eine virtuelle Tabelle

11. Beschreiben Sie die Vorteile von Ansichten?

Antwort: (1) Ansichten können Benutzervorgänge vereinfachen. (2) Ansichten ermöglichen es Benutzern, dieselben Daten aus mehreren Blickwinkeln zu betrachten. (3) Ansichten bieten ein gewisses Maß an Logik für die Datenbank Unabhängigkeit; (4) Ansichten können Sicherheitsschutz für vertrauliche Daten bieten.

12. Was bedeutet NULL?

Antwort: Der Wert NULL steht für UNBEKANNT: Er steht nicht für „“ (leere Zeichenfolge). 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

13. 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 - eindeutig Identifiziert einen Datensatz, es darf keine Duplikate geben und er darf nicht leer sein

Fremdschlüssel – der Fremdschlüssel einer Tabelle ist der Primärschlüssel einer anderen Tabelle, der Fremdschlüssel Der Schlüssel kann dupliziert werden und er kann leer sein. Wert

Index – Dieses Feld hat keine doppelten Werte, kann aber einen Nullwert haben

Funktion:

Primärschlüssel – wird zur Gewährleistung der Datenintegrität verwendet

Schlüssel – wird zum Herstellen von Verbindungen mit anderen Tabellen verwendet

Index – zur Verbesserung der Geschwindigkeit der Abfragesortierung

Zahl:

Primärschlüssel – es kann nur einen Primärschlüssel geben

Fremdschlüssel – eine Tabelle kann mehrere Fremdschlüssel haben

Index – eine Tabelle kann mehrere eindeutige Indizes haben

14 dass das Feld nur Werte in einem bestimmten Bereich akzeptiert?

Antwort: Überprüfen Sie die Einschränkung, die in der Datenbanktabelle definiert ist, um den in die Spalte eingegebenen Wert zu begrenzen.

Trigger können auch verwendet werden, um die Werte zu begrenzen, die Felder in Datenbanktabellen akzeptieren können. Für diese Methode müssen jedoch Trigger in der Tabelle definiert werden, was in einigen Fällen problematisch sein kann . Geringere Auswirkungen auf die Leistung.

15. Welche Methoden gibt es zur Optimierung von SQL-Anweisungen? (Wählen Sie einige aus)

(1) In der Where-Klausel: Die Verbindung zwischen Where-Tabellen muss vor anderen Where-Bedingungen geschrieben werden und den Bedingungen, die die maximale Anzahl von Datensätzen herausfiltern können muss am Ende der Where-Klausel geschrieben werden. 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) Um die Abfrage zu optimieren, versuchen Sie, vollständige Tabellenscans zu vermeiden. Erwägen Sie zunächst die Erstellung von Indizes für die beteiligten Spalten in „wo“ und „sortieren nach“.

(6) Versuchen Sie, eine Nullwertbeurteilung von Feldern in der where-Klausel zu vermeiden, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt

(7) Versuchen Sie, Ausdrucksoperationen für Felder in der where-Klausel zu vermeiden, da dies dazu führen würde, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt

16 . SQL-Anweisung Was ist der Unterschied zwischen „korrelierter Unterabfrage“ und „nicht korrelierter Unterabfrage“?

Antwort: Unterabfrage: Eine in anderen Abfragen verschachtelte Abfrage wird als Abfrage bezeichnet.

Eine Unterabfrage wird auch als innere Abfrage bezeichnet, und die Anweisung, die die Unterabfrage enthält, wird als äußere Abfrage (auch als Hauptabfrage bezeichnet) bezeichnet.

Alle Unterabfragen können in zwei Kategorien unterteilt werden, nämlich korrelierte Unterabfragen und nicht korrelierte Unterabfragen

(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.

Daher sind nicht korrelierte Unterabfragen effizienter als korrelierte Unterabfragen

17. Was ist der Unterschied zwischen char und varchar?

Antwort: Es ist ein Typ mit fester Länge, während Varchar ein Typ mit variabler Länge ist. Der Unterschied zwischen ihnen ist:

In Bei einer Datenspalte vom Typ char(M) belegt jeder Wert M Bytes. Wenn eine Länge kleiner als M ist, füllt MySQL sie rechts mit Leerzeichen auf. (Auffüllzeichen werden während des Suchvorgangs entfernt.) In einer Datenspalte vom Typ varchar(M) nimmt jeder Wert gerade genug Bytes plus ein Byte ein, um seine Länge aufzuzeichnen ( Das heißt, die Gesamtlänge beträgt L+1 Bytes ).

18. MySQL-Speicher-Engine, der Unterschied zwischen Myisam und Innodb.

Antwort: Einfacher Ausdruck:

MyISAM ist eine nicht-transaktionale Speicher-Engine; geeignet für Anwendungen mit häufigen Tabellensperren; tritt auf; geeignet für kleine Datenmengen, geringe Parallelität

Innodb ist eine Speicher-Engine, die bei richtiger Gestaltung Transaktionen mit vielen Einfüge- und Aktualisierungsvorgängen unterstützt Nur auf Sperrebene), geeignet für Big Data und große Parallelität.

19. Welche Datentabellentypen gibt es?

Antwort: 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.

20. Die MySQL-Datenbank wird als Speicher des Veröffentlichungssystems verwendet. Der Zuwachs von mehr als 50.000 Elementen pro Tag wird voraussichtlich drei Jahre dauern.

a. Entwerfen Sie eine gut gestaltete Datenbankstruktur, ermöglichen Sie teilweise Datenredundanz und versuchen Sie, Join-Abfragen zu vermeiden, um die Effizienz zu verbessern.

b. Wählen Sie den entsprechenden Tabellenfelddatentyp und die Speicher-Engine aus und fügen Sie die Indizes entsprechend hinzu.

c. Master-Slave-Lese- und Schreibtrennung der MySQL-Bibliothek.

d. Suchen Sie nach regulären Tabellen, um die Datenmenge in einer einzelnen Tabelle zu reduzieren und die Abfragegeschwindigkeit zu verbessern.

e. Fügen Sie Caching-Mechanismen wie Memcached, APC usw. hinzu.

f. Generieren Sie statische Seiten für Seiten, die sich nicht häufig ändern.

g. Schreiben Sie effizientes SQL. Beispielsweise wird SELECT * FROM TABEL in SELECT field_1, field_2, field_3 FROM TABLE geändert.

21 Welche Methode verwenden Sie für Websites mit hohem Datenverkehr, um das Problem der Statistik zu lösen? der Seitenbesuche?

Antwort: a. Bestätigen Sie, ob der Server den aktuellen Datenverkehr unterstützen kann.

b. Datenbankzugriff optimieren.

c. Verbieten Sie den externen Zugriff auf Links (Hotlinking), wie z. B. das Hotlinking von Bildern.

d. Datei-Downloads kontrollieren.

e. Verwenden Sie verschiedene Hosts, um den Datenverkehr zu verteilen.

f. Verwenden Sie eine Browsing-Statistiksoftware, um die Anzahl der Besuche zu ermitteln und eine gezielte Optimierung durchzuführen.

Zurück nach oben

3. Objektorientierter Teil

1. Was ist objektorientiert? 🎜> Antwort: Objektorientiertes OO = Objektorientierte Analyse OOA + Objektorientiertes Design OOD + Objektorientierte Programmierung OOP; die beliebte Erklärung lautet: „Alles ist ein Objekt“ und alle Dinge werden als unabhängige Objekte betrachtet . (Einheit), sie können ihre eigenen Funktionen vervollständigen, anstatt in Funktionen wie C unterteilt zu werden.

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.

Antwort: privat: privates Mitglied, auf das nur innerhalb der Klasse zugegriffen werden kann.

protected: geschützte Mitglieder, zugänglich innerhalb der Klasse und in geerbten Klassen.

Öffentlich: öffentliche Mitglieder, vollständig öffentlich, keine Zugangsbeschränkungen.

3. Was ist der Unterschied zwischen Heap und Stack?

Antwort: Der Stapel ist ein Speicherplatz, der während der Kompilierung zugewiesen wird, daher muss die Größe des Stapels in Ihrem Code klar definiert sein

Der Heap ist ein Speicherplatz, der während der Ausführung des Programms dynamisch zugewiesen wird. Sie können die Größe des zuzuweisenden Heap-Speichers basierend auf den Ausführungsbedingungen des Programms bestimmen.

4. Der Hauptunterschied zwischen XML und HTML

Antwort: (1) XML unterscheidet zwischen Groß- und Kleinbuchstaben, HTML jedoch nicht .

(2) Wenn in HTML der Kontext deutlich zeigt, wo der Absatz oder Listenschlüssel endet, können Sie das End-Tag

weglassen der Klasse. In XML darf das schließende Tag 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.

5. Was sind die Merkmale der Objektorientierung?

Antwort: Hauptsächlich Kapselung, Vererbung und Polymorphismus. Wenn es 4 Aspekte sind, fügen Sie hinzu: Abstraktion.

Die folgende Erklärung dient dem Verständnis:

Kapselung:

Die Kapselung soll das sicherstellen Softwarekomponenten basieren auf einer hervorragenden Modularität. Das Ziel der Kapselung besteht darin, eine hohe Kohäsion und geringe Kopplung von Softwarekomponenten zu erreichen und die Auswirkungen von Änderungen zu verhindern, die durch gegenseitige Programmabhängigkeit verursacht werden

Vererbung:

Bei der Definition und Implementierung einer Klasse können Sie dies auf Basis einer vorhandenen Klasse tun. Der durch die Klasse definierte Inhalt wird berücksichtigt als eigener Inhalt, und einige neue Inhalte können hinzugefügt werden, oder die ursprüngliche Methode kann geändert werden, 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 bezieht sich auf den spezifischen Typ, auf den die im Programm definierte Referenzvariable und die über die Referenzvariable ausgegebene Methode zeigen Der Aufruf wird nicht während der Programmierung bestimmt, sondern während der Ausführung des Programms, dh auf welches Klasseninstanzobjekt eine Referenzvariable zeigt und in welcher Klasse der von der Referenzvariable ausgegebene Methodenaufruf implementiert werden muss während des Programmablaufs entschieden werden.

Zusammenfassung:

Abstraktion besteht darin, die Ähnlichkeiten und Gemeinsamkeiten einiger Dinge herauszufinden und diese Dinge dann in eine Klasse einzuteilen. In dieser Klasse werden nur die Ähnlichkeiten dieser Dinge berücksichtigt Dinge und Gemeinsamkeiten und ignoriert diejenigen Aspekte, die für das aktuelle Thema und Ziel irrelevant sind, und konzentriert sich auf 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?

Antwort: 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.

Es handelt sich um eine spezielle abstrakte Klasse und eine spezielle Klasse, die die Schnittstellendeklaration verwendet.

(1) Die Operationen abstrakter Klassen werden durch das Vererbungsschlüsselwort „extens“ implementiert, und die Verwendung von Schnittstellen wird durch das Schlüsselwort „implements“ implementiert.

(2) Es gibt Datenelemente in der abstrakten Klasse, die eine Datenkapselung realisieren können, aber die Schnittstelle verfügt über keine 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 den Schlüsselwörtern public geändert werden können Stichwort.

(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?

Antwort: 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() zum Deklarieren der Konstruktormethode verwendet, 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 Methoden der übergeordneten Klasse überlädt, mit Beispielen

Antwort: Überladen, also das Überschreiben der Methoden der übergeordneten Klasse, also die Verwendung von Methoden in der Unterklasse, um die von der übergeordneten Klasse geerbten Methoden zu ersetzen, wird auch als Methodenumschreiben bezeichnet.

Der Schlüssel zum Überschreiben der Methode der übergeordneten Klasse besteht darin, in der übergeordneten Klasse dieselbe Methode in der Unterklasse zu erstellen, einschließlich Methodenname, Parameter und Rückgabewerttyp. In PHP ist lediglich erforderlich, dass die Namen der Methoden gleich sind.

9. Welche sind die am häufigsten verwendeten magischen Methoden? Beispiel

Antwort: PHP legt fest, dass Methoden, die mit zwei Unterstrichen (__) beginnen, als magische Methoden reserviert sind. Daher wird empfohlen, dass Ihr Funktionsname nicht mit __ beginnt, es sei denn, dies ist für Redundanz. Enthält vorhandene magische Methoden.

__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 Attribute 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 aufgerufen, wenn ein Objekt in einen String umgewandelt wird. 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?

Antwort: $dieses aktuelle Objekt

selbst aktuelle Klasse

übergeordnetes übergeordnetes Objekt des aktuellen Klasse Klasse

$this wird in der aktuellen Klasse verwendet, verwenden Sie ->, um Eigenschaften und Methoden aufzurufen.

self wird auch in der aktuellen Klasse verwendet, muss aber mit :: aufgerufen werden.

parent wird in der Klasse 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.

Antwort: Die Konstanten in der 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 unterscheidet sich von dem auf Variablen. Das Format für den Zugriff auf Konstanten ist der Klassenname plus das Bereichsoperatorsymbol (doppelter Doppelpunkt). .

Das heißt: Klassenname :: Klassenkonstantenname

12. Wie verwende ich den Bereichsoperator::? In welchen Situationen wird es verwendet?

Antwort: Klassenkonstanten aufrufen

Statische Methoden aufrufen

13 Wie funktioniert es?

Antwort: 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 dieser Klassendatei basierend auf dem Namen der instanziierten Klasse, wenn festgestellt wird, dass diese Klassendatei im Pfad dieser Klassendatei vorhanden ist

Führen Sie include oder require aus, um die Klasse zu laden, und das Programm wird dann weiter ausgeführt. Wenn die Datei in diesem Pfad nicht vorhanden ist, wird ein Fehler angezeigt.

Durch die Verwendung der magischen Funktion zum automatischen Laden entfällt die Notwendigkeit, viele Include- oder Require-Funktionen zu schreiben.

Zurück nach oben

4. ThinkPHP-Teil

1. Gängige PHP-Frameworks

Antwort: thinkPHP

yii

ZendFramework

CakePhp

sy

2. Wie man es versteht TP Einzeleintragsdatei in?

Antwort: ThinkPHP verwendet einen Einzeleingangsmodus 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:

Definieren Sie den Framework-Pfad, den Projektpfad und das Projekt Name (optional)

Definiert zugehörige Konstanten für den Debugging-Modus und den Ausführungsmodus (optional)

Laden der Framework-Eintragsdatei (erforderlich)

3. Was ist die MVC-Schichtung in ThinkPHP? (Verstehen)

Antwort: MVC ist eine Methode zur Trennung der logischen Schicht 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 das Modell vervollständigt Klasse.

Controller (C): Anwendungscontroller (Kerncontroller-App-Klasse) und Aktionscontroller übernehmen beide die Rolle des Controllers. Der Aktionscontroller übernimmt die Geschäftsprozesssteuerung, während der Anwendungscontroller Der Controller ist dafür verantwortlich Terminsteuerung.

Ansicht (V): Sie besteht aus Ansichtsklasse und 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 die allgemeine Bedeutung basierend auf ihrem eigenen Verständnis ausdrücken)

Antwort:

(1) Wählen Sie die richtige Speicher-Engine

Nehmen Sie MySQL als Beispiel, einschließlich zweier Speicher-Engines, MyISAM und InnoDB. Jede Engine hat Vor- und Nachteile.

MyISAM eignet sich für Anwendungen, die eine große Anzahl von Abfragen erfordern, ist jedoch nicht sehr gut für eine große Anzahl von Schreibvorgängen. 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 ein Prinzip: 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 dem Suchfeld einen Index 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 der Netzwerkübertragung. Auch wenn Sie alle Felder in der Datentabelle abfragen möchten, vermeiden Sie die Verwendung des Platzhalterzeichens *. Eine sinnvolle Verwendung der integrierten Feldausschlussdefinitionen kann hilfreicher sein.

(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

Es sei denn, Sie haben einen ganz bestimmten Grund, NULL-Werte zu verwenden, sollten Sie Ihre Felder immer behalten NICHT NULL. 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 „fester Länge“ betrachtet werden. 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 es einfach machen, den Offset der nächsten Daten zu berechnen, sodass das Lesen natürlich sehr schnell geht. 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 ThinkPHP 3.0-Architektur drei (Kern + Verhalten + Treiber) zu verstehen?

Antwort: Kern + Verhalten + Treiber

Offizielle TP-Abkürzung: CBD

Kern ( Kern): Es ist der Kerncode des Frameworks, eine unverzichtbare Sache. TP selbst ist ein Framework, das auf der Grundlage der MVC-Idee entwickelt wurde.

Verhalten: Das Verhalten spielt eine entscheidende Rolle in der Architektur der neuen Version von ThinkPHP. Auf dem Kern des Systems sind viele Label-Erweiterungsbits gesetzt, und jede Label-Position kann nacheinander ihre eigenen unabhängigen Aktionen ausführen. 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.

Treiber: Datenbanktreiber, Cache-Treiber, Tag-Bibliothekstreiber und Template-Engine-Treiber sowie externe Klassenerweiterungen.

Rahmen. Tatsächlich handelt es sich um ein halbfertiges Produkt einer bestimmten Anwendung, eine Reihe von Komponenten, die Sie auswählen und verwenden können, um Ihr eigenes System zu vervollständigen. Vereinfacht ausgedrückt nutzt man die von anderen aufgebaute Bühne und tritt auf. Darüber hinaus handelt es sich bei Frameworks in der Regel um ausgereifte, kontinuierlich aktualisierte Software.

6. Was ist die herkömmliche Konfiguration?

Antwort: Konventionskonfiguration Vorherige Seite Nächste Seite Konventionen sind wichtiger als Konfigurationen. Dies ist eine wichtige Idee, der das System folgt. Das System verfügt über eine integrierte Konventionskonfigurationsdatei (Confconvention. php befindet sich im Systemverzeichnis) ), die allgemeinen Parameter sind standardmäßig entsprechend den meisten Verwendungszwecken konfiguriert. Daher müssen Sie für die Konfigurationsdatei des Anwendungsprojekts häufig nur andere oder neue Konfigurationsparameter als die herkömmliche Konfiguration konfigurieren. Wenn Sie die Standardkonfiguration vollständig übernehmen, müssen Sie nicht einmal eine Konfigurationsdatei definieren.

Die herkömmliche Konfigurationsdatei wird automatisch vom System geladen und muss nicht in das Projekt geladen werden.

7. Was ist SQL-Injection? (Verstehen)

Antwort: Der SQL-Injection-Angriff ist eines der häufigsten Mittel, mit denen Hacker Datenbanken angreifen. Einige Programmierer beurteilen die Rechtmäßigkeit der Benutzereingabedaten beim Schreiben von Code nicht. Der Injektor kann einen Datenbankabfragecode in das Formular eingeben und ihn senden. Das Programm fügt die übermittelten Informationen zusammen, um eine vollständige SQL-Anweisung zu generieren getäuscht. Führen Sie den bösartigen SQL-Befehl aus. 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 SQL-Injection? (Verstehen)

Antwort: (1) Versuchen Sie, Arrays für Abfragebedingungen zu verwenden, was sicherer ist;

(2) Wenn Als letzten Ausweg müssen Zeichenfolgenabfragebedingungen verwendet werden. Verwenden Sie den Vorverarbeitungsmechanismus. (3) Aktivieren Sie die Datenfeldtypüberprüfung. Sie können die Konvertierung numerischer Datentypen erzwingen ist seit Version 3.1 obligatorisch. Die Feldtypüberprüfung wird durchgeführt)

(4) Verwenden Sie automatische Überprüfungs- und Autovervollständigungsmechanismen für benutzerdefinierte Filterung für Anwendungen; (5) Verwenden Sie Feldtypprüfung, automatische Validierung und automatische Vervollständigungsmechanismen, um böswillige Dateneingaben zu vermeiden.

9. Wie aktiviere ich den Debugging-Modus? Welche Vorteile bietet der Debug-Modus?

Antwort: Das Aktivieren des Debugging-Modus ist sehr einfach. Sie müssen nur eine Zeile Konstantendefinitionscode zur Eintragsdatei hinzufügen:

//Debugging-Modus aktivieren

define('APP_DEBUG', true);

//Laden Sie die Framework-Eintragsdatei

require './ThinkPHP/ThinkPHP.php';

Nach Abschluss Während der Entwicklungsphase und der Bereitstellung in der Produktionsumgebung löschen Sie einfach den Debug-Modus-Definitionscode, um in den Bereitstellungsmodus zu wechseln. Nach dem Aktivieren des Debugging-Modus lädt das System zunächst die Standard-Debugging-Konfigurationsdatei des Systems und dann die Debugging-Konfigurationsdatei des Projekts. Die Vorteile des Debugging-Modus sind:

Protokollierung aktivieren, alle Fehlermeldungen und Debugging-Informationen werden detailliert aufgezeichnet, um das Debuggen zu erleichtern;

Vorlagen-Caching deaktivieren, Vorlagenänderungen können sofort wirksam werden;

SQL-Protokolle aufzeichnen, um die SQL-Analyse zu erleichtern

Feld-Caching deaktivieren, und Änderungen an Datentabellenfeldern werden vom Cache nicht beeinflusst;

Überprüfen Sie die Datei-Groß-/Kleinschreibung genau (auch auf Windows-Plattformen), um Probleme bei der Linux-Bereitstellung im Voraus zu erkennen.

kann bequem auf verschiedene Arten verwendet werden Phasen des Entwicklungsprozesses, einschließlich Entwicklung, Test und Demonstration usw. Bei Bedarf können separate Projektkonfigurationsdateien für verschiedene Anwendungsmodi konfiguriert werden.

10. Welche Konfigurationsmodi werden in TP unterstützt? Priorität?

Antwort: ThinkPHP hat in der Projektkonfiguration ein eigenes einzigartiges hierarchisches Konfigurationsmodell erstellt. Seine Konfigurationsebene spiegelt sich wider in:

Konventionelle Konfiguration -> ;Projektkonfiguration->Debug-Konfiguration->Gruppenkonfiguration->Erweiterte Konfiguration->Dynamische Konfiguration

Das Obige ist die Ladereihenfolge der Konfigurationsdatei, da die nachfolgende Konfiguration erfolgt will Überschreibt die vorherige Konfiguration mit demselben Namen (ohne wirksam zu werden), sodass die Priorität von rechts nach links ist.

11. Was sind die URL-Muster in TP? Welches ist die Standardeinstellung?

Antwort: 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?

Antwort: Die Methode zum Erhalten von Systemvariablen:

muss nur aufgerufen werden in Aktion Die folgende Methode:

$this-> Methodenname („Variablenname“, [„Filtermethode“], [„Standardwert“])

13. Was ist der Unterschied zwischen D-Funktion und M-Funktion im ThinkPHP-Framework?

Antwort: Die M-Methode instanziiert das Modell, ohne dass der Benutzer eine Modellklasse für jede Datentabelle definiert. Die D-Methode kann die Modellklasse automatisch erkennen. Es wird automatisch instanziiert. Definieren Sie die Modellklasse. Wenn sie nicht vorhanden ist, wird die M-Methode automatisch aufgerufen, um die Modell-Basisklasse zu instanziieren. Gleichzeitig werden instanziierte Modelle nicht wiederholt instanziiert (Einzelfallmodus).

Zurück nach oben

5. Smarty Template Engine

1. Was ist der Unterschied zwischen Kompilierung und Caching?

Der Kompilierungsprozess von smarty besteht darin, die Vorlage zu nehmen und die darin enthaltenen Tags durch den entsprechenden PHP-Code zu ersetzen smarty Die Kompilierung ist eigentlich der Prozess des Mischens von PHP und HTML

Smartys Cache muss manuell aktiviert werden, um zu kompilieren Nachdem die Datei ausgeführt wurde, wird gleichzeitig eine statische HTML-Seite generiert. Wenn Sie erneut darauf zugreifen, greifen Sie auf die HTML-Datei zu, sodass die Effizienz höher ist

2. Was ist Smarty? Was sind die Vorteile von Smarty?

Smarty ist eine Anwendung, die die in PHP geschriebene PHP Template Engine verwendet. Ziel ist es, das PHP-Programm vom Künstler zu trennen, sodass der Programmierer den logischen Inhalt des Programms ändern kann, ohne das zu beeinträchtigen Seitengestaltung des Künstlers Die Programmlogik des Programms wird durch eine erneute Änderung der Seite nicht beeinträchtigt, was insbesondere bei Mehrpersonen-Kooperationsprojekten wichtig ist. (Es ist auch einfach, Multi-Style-Programme zu entwickeln)

Vorteile von Smarty

1. Schnell: im Vergleich zu anderen Template-Engines.

2. Kompilierter Typ: Ein in Smarty geschriebenes Programm muss zur Laufzeit in eine Nicht-Template-Technologie-PHP-Datei kompiliert werden

3 Caching-Technologie : Es kann die HTML-Datei, die der Benutzer schließlich sieht, in einer statischen HTML-Seite zwischenspeichern

4. Plug-in-Technologie: Smarty kann Plug-ins anpassen.

Ungeeignete Orte für die Nutzung von smarty

1. Inhalte, die in Echtzeit aktualisiert werden müssen. Beispielsweise sind wie bei der Bestandsanzeige häufige Datenaktualisierungen erforderlich. 2. Kleine Projekte. Kleine Projekte, die aufgrund ihrer Einfachheit sowohl Künstler als auch Programmierer erfordern

3. Verwenden Sie {$smarty}, um Variablen in Vorlagen beizubehalten

{$smarty.get.page } //Ähnlich wie der Zugriff auf $_GET[page]

{smarty.cookies.}

{smarty.post.} im PHP-Skript

{smarty.session.}

{smarty.server.}

4. Zugriffsvariablen in PHP in der Vorlage

Es gibt ein System in PHP Skript Es gibt zwei Arten von Konstanten und benutzerdefinierten Konstanten, auf die auch in Smarty-Vorlagen zugegriffen werden kann. Der Wert der Konstanten kann direkt ausgegeben werden, solange die Variable über {$ beibehalten wird schlau}. Beispiel für die Ausgabe einer Konstante in einer Vorlage:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5. Variablen Moderator

{$var|modifier1|modifier2|.....}

<{$str}>

<{$str|. <{*Der erste Buchstabe wird großgeschrieben*}>

<{$str|upper}><{*Großbuchstaben*}> ;< br>

<{$str|lower}><{*all Kleinbuchstaben*}> <{$str|lower|upper}><{*alle Großbuchstaben, angepasst von links nach rechts*}>

<{ $leg| truncate}><{*String Interception, Standard 80 Zeichen*}>

<{$leg|truncate:10}> ;<{* String-Abfangen, erste 10, einschließlich...drei Zeichen*}>

6 Wenn PHP die MySQL-Datenbank abfragt, erscheinen bei der Abfrage der chinesischen Ergebnisse verstümmelte Zeichen. Wie kann man es lösen? ? ? ?

1. Dateieigenschaften (speichern unter)

2. Datei-Meta (beim Einrichten der Browser-Analyse)

3. Kodierungseinstellungen beim Herstellen einer Verbindung zur Datenbank

4 Dateien Bestimmen Sie die Kodierung

7. Caching-Mechanismus

Wenn Caching aktiviert ist, generiert smarty gleichzeitig eine statische HTML-Seite Zum festgelegten Zeitpunkt gibt es keine statische HTML-Seite. Wenn Sie nach dem Ablauf erneut darauf zugreifen, greifen Sie auf die HTML-Datei zu, wodurch die Notwendigkeit zum Lesen der Datenbank verringert wird und die Effizienz höher ist.

8. Intelligente Zuweisungs- und Ladevorlagen

$Smarty->assign(name,value)

$Smarty->display('index.html')

9. Wozu dient die Marty-Template-Technologie?

Um PHP und HTML zu trennen, erfüllen Künstler und Programmierer ihre eigenen Aufgaben, ohne sich gegenseitig zu stören.

10. Was sind die wichtigsten Smarty-Konfigurationen?

1. Stellen Sie smarty.class.php vor;

2. Instanziieren Sie das Smarty-Objekt; 🎜>3. Ändern Sie den Standard-Vorlagenpfad erneut;

5. Ändern Sie den Standard-Konfigurationsdateipfad erneut.

6. Ändern Sie den Standard-Cache-Pfad erneut.

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 Kontrollebene,

Mit anderen Worten: Die intelligente Technologie trennt die Benutzeroberfläche vom PHP-Code. Auf diese Weise können Programmierer und Künstler ihre Aufgaben erfüllen, ohne sich gegenseitig zu stören.

12. Achten Sie bei der Nutzung von smarty auf folgende Punkte:

1. Smarty richtig konfigurieren. Es ist hauptsächlich notwendig, das Smarty-Objekt zu instanziieren und den Pfad der Smarty-Vorlagendatei zu konfigurieren.

Verwenden Sie die Zuweisungs- und Anzeigeseite auf der 2.php-Seite >

3. PHP-Codeausschnitte sind in Smarty-Vorlagendateien nicht zulässig. Alle Kommentare, Variablen und Funktionen müssen in Trennzeichen enthalten sein.

A.{}

B foreach

C

D. include

E. Literal

Zurück nach oben

6. Sekundäres Entwicklungssystem (DEDE, ecshop):

1. Verständnis der Sekundärentwicklung

Sekundärentwicklung besteht einfach ausgedrückt darin, vorhandene Software anzupassen und zu ändern, Funktionen zu erweitern und dann die gewünschten Funktionen zu erreichen, im Allgemeinen der Kernel davon das ursprüngliche System wird nicht verändert.

2. MVC

Modelldatenverarbeitung.

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 Modellebene, 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

Die Modellebene ist im Allgemeinen für das Hinzufügen, Löschen, Ändern und Überprüfen von Datenbanktabelleninformationen verantwortlich,

Die Ansichtsschicht ist für die Anzeige des Seiteninhalts verantwortlich

Die Controller-Schicht spielt eine regulierende Rolle zwischen M und V. Die Controller-Schicht entscheidet, welche Methode verwendet wird welche Modellklasse aufgerufen werden soll,

Nach der Ausführung entscheidet die Controller-Schicht, welcher Ansichtsschicht das Ergebnis zugewiesen werden soll.

3. Beim Zugriff auf das sekundäre Entwicklungsprogramm nach der Installation werden einige Warnungen und Fehler angezeigt

Ändern Sie basierend auf dem Fehler die Serverkonfigurationsparameter und Baidu

Funktion, Vorlagenersetzung, Funktionsergänzung und -änderung

Tatsächlich handelt es sich um die Verwendung objektorientierter Anwendungen, und das Ersetzen von Vorlagen ähnelt der Verwendung von Smarty

5. Welche Sekundärentwicklung wurde 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 oder eine Sekundärentwicklung wie PHP durchzuführen?

Im Allgemeinen verwenden kleine und mittlere Unternehmen das CMS-System für die Sekundärentwicklung, alles aus Effizienzgründen. 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 Prozess der Sekundärentwicklung Methodenzugriffe zwischen vielen Klassen übertragen?

Es handelt sich nicht um eine Klassenvererbung, sondern um eine

Objektkombination, die das instanziierte Objekt über

8. Wenn dedecms das Verzeichnis ändert, kann ein bestimmtes Element im Hintergrund nicht eingegeben werden.

Ändern Sie die Hintergrundkerneinstellungen in den aktuellen Projektverzeichnisnamen

9. Was versteht man unter benutzerdefinierten Modellen in dedecms?

Im DreamWeaver-System gibt es das Konzept des Inhaltsmodells, mit dem Websites mit unterschiedlichen Inhaltsformen erstellt werden können. Das System umfasst die folgenden Modelle: gewöhnliche Artikel, Fotoalben, Software usw Produkte, Verschlusssachen, Spezialthemen. Durch die mit dem System gelieferten Modelle können wir damit verschiedene Arten von Websites erstellen. Sie können beispielsweise einen Atlas verwenden, um eine Bilder-Site zu erstellen, und Sie können Software-Vorlagen 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 ., und passen Sie diese Modelle an. Nur dann können Sie eine Website mit mehr Inhalten erstellen.

Es ist gleichbedeutend damit, dass wir automatisch eine Tabellenstruktur hinzufügen, um uns an Änderungen der aktuellen Bedürfnisse anzupassen

10 Die folgenden Konzepte müssen beim Entwerfen und Verwenden von Vorlagen in dede

1. Abschnittsvorlage (Cover):

bezieht sich auf die Vorlage, die von der Website-Homepage oder dem Cover-Kanal wichtigerer Spalten verwendet wird. Sie wird im Allgemeinen mit „index_identification ID.htm“ benannt. Darüber hinaus kann eine einzelne Seite oder ein vom Benutzer definiertes benutzerdefiniertes Tag 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 mit „ list_identification ID.htm ” Benennung.

3. Dateivorlage:

stellt die Vorlage der Dokumentanzeigeseite dar, z. B. eine Artikelvorlage. Verwenden Sie im Allgemeinen „article_identification ID.htm“. " Name.

4. Andere Vorlagen:

Zu den allgemeinen Systemvorlagen gehören: Homepage-Vorlage, Suchvorlage, RSSS, JS-Kompilierungsfunktionsvorlage usw., Darüber hinaus können Benutzer auch eine Vorlage anpassen, um eine beliebige Datei zu erstellen.

11.

Tags wie Listeninhalte können nur in ihrem eigenen Bereich 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 benutzerdefinierten Funktionsbibliotheken (extend.func .php); Vertraut mit der Front-End-Eintragsdatei (common.inc.php)

Zurück nach oben

7. Entwicklung der öffentlichen WeChat-Plattform

1.

WeChat-Betriebsmechanismus

Welche Sprache wird für die Kommunikation zwischen dem offiziellen Konto und PHP verwendet:

🎜> So erhalten Sie öffentliche Kontodaten in Weixin.php:

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//Daten empfangen XML-Daten

2. Nachrichtentypen

WeChat bietet derzeit 7 grundlegende Nachrichten Typen:

(1) Textnachricht (Text);

(2) Bildnachricht (Bild);

(3) Stimme (Stimme)

(4) Video (Video)

(5) Standort;

(6) Linknachricht (Link);

(7) Ereignis-Push (Ereignis)

Typ. Beherrschen Sie das Datenübertragungsformat beim Senden verschiedener Nachrichtentypen

4. Funktion zum Einlesen der gesamten Datei in eine Zeichenfolge Ja

File_get_contents

5. Häufig verwendete Funktionen

Die Funktion, die XML-Daten in Objekte analysiert, ist

simplexml_load_string( )

Die Funktion zum Konvertieren eines Strings in ein Array ist ___ explosion____ , die Funktion, die ein Array in einen String umwandelt, ist ____implode________ .

6. Die Rolle der Sprintf-Funktion

Sie können hierzu im Handbuch nachsehen.

7. Gründe, warum das offizielle WeChat-Konto keine Dienste bereitstellen kann?

1. Netzwerkgrund, Datenschnittstellengrund

2. Codefehler, wie man den Grund errät

Überprüfen Sie, wo Sie es geändert haben, ob der Code korrekt ist

Sie können die Daten ausgeben und einen Blick darauf werfen. Verwenden Sie PHP, um Dateien zu verwalten

$myfile = fopen("newfile.txt", "w");

$txt ="aaaaaaaaaa";

fwrite($myfile, $txt);

fclose($ myfile );

8. Ereignis-Push des benutzerdefinierten Menüs

Klicken Sie auf den Sprunglink

Klicken Sie auf den Sprunglink

Scannen Sie den Code, um das Ereignis zu pushen

Scannen Der Code wird gedrückt und erscheint

Das Ereignis, dass das System Bilder aufnimmt und veröffentlicht, erscheint

Das Ereignis dass das WeChat-Albumposter erscheint

Ereignis, das die geografische Standortauswahl öffnet

Die Rolle des Tokens

Sicherheitsmechanismusüberprüfung, verwendet für die Sicherheitsüberprüfung zwischen WeChat-Server und PHP-Server

10. Die Rolle von Appid und Secret

API-Schnittstelle anfordern (z. B. Menübedienung). Sie müssen die Appid- und Secret-Werte übergeben, um den Anwendungsautorisierungscode zu erhalten


Zurück nach oben

8. Beschreibung der Technologien, die Sie beherrschen: 1 . Wenn Sie PHP + MYSQL als Richtung verwenden, beherrschen Sie die Smarty-Template-Engine, das ThinkPHP-Framework, die öffentliche WeChat-Plattformentwicklung, DEDE, Ecshop und andere sekundäre Entwicklungssysteme und verfügen über ein gewisses Verständnis für objektorientierte Datenbanken Datenbanken; vertraut mit PHP-Entwicklung unter Linux

2. Front-End-Technologie: Beherrscht das P+CSS-Webseitenlayout, Javascript, JQuery-Framework, AJAX-Technologie, Photoshop-Bildverarbeitung

3. Ein Jahr Erfahrung in der Projektentwicklung, Nutzung von Smarty zur Entwicklung von „XXXXXXXX“, Nutzung von ThinkPHP zur Entwicklung von „XXXXXXXX“, Nutzung der öffentlichen WeChat-Plattform zur Entwicklung des öffentlichen Kontos von „Employment Service Network“ und Nutzung von Dream Weaver System zur Entwicklung Über Unternehmenswebsites usw.

Verwandte Empfehlungen:

Zusammenfassung der neuesten PHP-Klassiker-Interviewfragen 2017

Zusammenfassung von PHP-Interviewfragen

Das obige ist der detaillierte Inhalt von2017php klassische Interviewfragen. 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