Heim  >  Artikel  >  Backend-Entwicklung  >  Unverzichtbare Interviewfragen für PHP-Interviews

Unverzichtbare Interviewfragen für PHP-Interviews

不言
不言Original
2018-05-15 14:04:4321483Durchsuche

Der Inhalt dieses Artikels sind die Interviewfragen, die im PHP-Interview gestellt werden müssen. Ich teile sie hier mit Ihnen und kann auch einige Hinweise auf Freunde in Not geben.

Verwandt Empfehlungen: " Zusammenfassung der PHP-Interviewfragen 2019 (Sammlung)

1. Wie kann CSS positioniert werden? Und die Verwendung von


Position bedeutet auf Englisch „Position“. ​​Sie wird hauptsächlich verwendet, um die Positionierung von Elementen

Es gibt drei Arten der Positionierung in CSS:

position:fixed Feste Positionierung

position:relatvie Relative Positionierung

position:absoluteAbsolute Positionierung

position:static Keine spezielle Positionierung (Standardwert).

Hinweis:

Wenn Sie Positionierungsattribute verwenden, achten Sie darauf, diese in Verbindung mit den Positionierungskoordinaten zu verwenden!

links: gibt an, wie weit das positionierte Element von links

rechts: entfernt ist gibt an, wie weit das Element von rechts

oben entfernt ist: gibt an, wie weit das positionierte Element von oben

unten entfernt ist : Gibt an, wie weit das positionierte Element vom Boden entfernt ist

1 Feste Positionierung

Syntax:

Position: fest

Feste Positionierung, die Positionierung erfolgt relativ zum

Browserfenster . Unabhängig davon, wie die Seite gescrollt wird, ändert sich die vom Element mit fester Positionierung angezeigte Position nicht!

Eigenschaften:

Feste Positionierungselemente liegen außerhalb des Standarddokumentenflusses

Die Ebene der festen Positionierungselemente ist höher als die der Elemente im Standarddokumentenfluss, also feste Positionierung Elemente werden die Elemente im Standarddokumentfluss abdecken

Festes Positionierungselement, das keinen Platz mehr einnimmt

Festes Positionierungselement, seine angezeigte Position wird nicht gescrollt, wenn der Browser scrollt

2 Relative Positionierung

Syntax:

position:relative;

Relative Positionierung ist relativ zu „

ursprüngliches Selbst“ Kommen Sie und positionieren Sie sich!“

Eigenschaften:

Ein relativ positioniertes Element bricht nicht vom Standarddokumentfluss ab

Wenn ein relativ positioniertes Element die Positionierungskoordinaten nicht festlegt, dann das relativ positionierte Element bleibt immer noch an seiner ursprünglichen Position

Nachdem das relative Positionierungselement die Positionierungskoordinaten festgelegt hat, hinterlässt es eine Grube in seiner Heimatstadt

Das relative Positionierungselement deckt die Elemente im Standarddokumentfluss ab .

Der Positionierungskoordinatenwert eines relativ positionierten Elements kann eine negative Zahl sein

Hinweis:

Relativ positionierte Elemente hinterlassen eine Lücke in ihrer Heimatstadt, daher ist dies im Allgemeinen selten der Fall Allein gelassen Verwendung: Relative Positionierungselemente werden hauptsächlich in Verbindung mit „

Absolute Positionierung“-Elementen verwendet.

3 Absolute Positionierung

Syntax:

position:absolute;

Was ist absolute Positionierung?

Absolut positionierte Elemente werden relativ zum „

Vorfahren positioniertes Element “ positioniert!

Was ist ein Vorfahren-positioniertes Element?

Absolut positioniertes ElementEs wird zunächst geprüft, ob für sein übergeordnetes Element ein Positionierungsattributsatz vorhanden ist.

Wenn ein Positionierungsattributsatz vorhanden ist, ist es relativ zu seinem übergeordneten Element Element zur Durchführung der Positionierung;

Aber wenn sein übergeordnetes Element das Positionierungsattribut nicht festlegt, wird ermittelt, ob das übergeordnete Element seines übergeordneten Elements das Positionierungsattribut festgelegt hat.

Wenn Es wird relativ zum übergeordneten Element seines übergeordneten Elements positioniert

Aber wenn es nicht festgelegt ist, wird die Suche eine Ebene höher fortgesetzt

Wenn seine Vorgängerelemente nicht festgelegt sind das Positionierungsattribut, dann wird es relativ zu „

Browserfenster“ positioniert!

①Wenn Sie die absolute Positionierung selbst festlegen: Wenn das übergeordnete Element das Positionierungsattribut nicht festlegt, wird es relativ zum Körper positioniert.

②Wenn Sie die absolute Positionierung selbst festlegen: Wenn das übergeordnete Element

legt auch das Positionierungsattribut fest, dann wird es relativ zum übergeordneten Element positioniert

③Wenn Sie die absolute Positionierung selbst festlegen: Wenn das übergeordnete Element

auch das Positionierungsattribut festlegt , dann wird es relativ zum übergeordneten Element positioniert

2 Welche Parameter müssen in $.ajax konfiguriert werden, wenn JQ zum Senden einer AJAX-Anfrage verwendet wird? ? Was bedeuten sie? ?


jQuery.ajax(options)

Parameterbeschreibung:

Optionen: Es gibt nur einen Parameter, der Daten sein muss im JSON-Format. Folgende Attribute können festgelegt werden:

async: Ob es asynchron ist, true bedeutet asynchron, false bedeutet synchron. Der Standardwert ist true

Cache: ob zwischengespeichert werden soll, true bedeutet Caching, false bedeutet kein Caching, der Standardwert ist true

complete: Die Rückruffunktion wird ausgelöst, wenn der Ajax-Statuscode 4 ist

contentType: Anforderungsheader, wenn es sich um eine POST-Anfrage handelt, ist dieser Parameter application/x-www-form-urlencoded

data: Der Parameter, der beim Senden einer Ajax-Anfrage übergeben wird, die Anforderung ist eine Zeichenfolge

dataType: der erwartete Rückgabewerttyp, der vom Datentyp text/xml/json sein kann

success: Die Rückruffunktion wird ausgelöst, wenn der Ajax-Statuscode 4 und der Antwortstatuscode 200 ist

Typ: die gesendete HTTP-Anfrage, die abgerufen oder gepostet werden kann

URL: die URL-Adresse der Anfrage

3. Wann sollte eine synchrone Anfrage verwendet werden? ? Wann werden asynchrone Anfragen verwendet? ?


1. Was ist eine synchrone Anfrage: (false)

Eine synchrone Anfrage bedeutet, dass der Browser nach Ausgabe der aktuellen Anfrage nichts mehr tun kann Nachdem die Anfrage abgeschlossen ist und die Daten zurückgegeben wurden, wird der nachfolgende Code ausgeführt, was einer Warteschlange entspricht. Die vorherige Person hat ihre eigenen Angelegenheiten erledigt, bevor die nächste Person fortfahren kann. Das heißt, wenn der JS-Code in das aktuelle AJAX geladen wird, wird der gesamte Code auf der Seite nicht mehr geladen und die Seite befindet sich in einem angehaltenen Animationszustand. Wenn das AJAX abgeschlossen ist, wird es weiterhin ausgeführt Codes und die Seite geben den angehaltenen Animationsstatus frei (dh wenn Ajax zurückkehrt) Nach dem Empfang der Daten wird die folgende Funktion 2 ausgeführt.
2. Was ist eine asynchrone Anfrage: (true)
Eine asynchrone Anfrage bedeutet, dass der Browser während der Anfrage weiterhin etwas tun kann, was keinen Einfluss auf das Laden der Seite hat Die Bedienung des Benutzers, die äquivalent ist zu In beiden Zeilen geht jede ihren eigenen Weg, ohne sich gegenseitig zu beeinflussen.
Im Allgemeinen ist der Standardwert wahr, asynchron. Asynchrone Anfragen beeinträchtigen das Benutzererlebnis überhaupt nicht, egal wie lang oder kurz die Anfrage ist, der Benutzer konzentriert sich auf die Bedienung anderer Inhalte auf der Seite und hat keine Lust zu warten.

4. Welche magischen Methoden hat PHP? ?


Magische Methoden umfassen:

__construct(), Klassenkonstruktor

__destruct(), Klassendestruktor

__call (), rufen Sie

__callStatic() auf, wenn Sie eine unzugängliche Methode im Objekt aufrufen, rufen Sie

__get() auf, wenn Sie eine unzugängliche Methode im statischen Modus aufrufen, rufen Sie

__set( ) wird aufgerufen, wenn eine Mitgliedsvariable einer Klasse festgelegt wird,

__isset() wird aufgerufen, wenn eine Mitgliedsvariable einer Klasse festgelegt wird, und wird aufgerufen, wenn isset() oder empty() für eine unzugängliche Eigenschaft aufgerufen wird.

__unset(), wird aufgerufen, wenn unset() für eine unzugängliche Eigenschaft aufgerufen wird.

__sleep(), wenn serialize() ausgeführt wird, wird diese Funktion zuerst aufgerufen

__wakeup(), wenn unserialize() ausgeführt wird, diese Funktion

__toString( ), die Antwortmethode, wenn die Klasse als Zeichenfolge behandelt wird

__invoke(), die Antwortmethode, wenn ein Objekt durch Aufrufen einer Funktion aufgerufen wird

__set_state(), wenn var_export() aufgerufen wird Exportieren Sie eine Klasse. Diese statische Methode wird aufgerufen.

__clone(), rufen Sie

__autoload() auf, wenn die Objektkopie abgeschlossen ist, versuchen Sie, eine undefinierte Klasse zu laden

__debugInfo(), drucken Sie die erforderlichen Debugging-Informationen

5. Beschreiben Sie kurz die Get-Methode und die Post-Methode


① Verschiedene Methoden zur Übergabe von Parametern

Die Get-Anfrage übergibt Parameter am Ende die URL

Die Post-Anfrage übergibt die Parameter an der Position, an der die Leerzeile angefordert wird

② Die Größen der Parameter sind unterschiedlich

Der Maximalwert der Parameter für Die Get-Anfrage ist 2 KB groß.

Bei der Post-Anfrage gibt es theoretisch keine Begrenzung, aber in der tatsächlichen Anwendung wird sie von der php.ini-Datei beeinflusst, die im Allgemeinen 2 MB groß ist.

③ Die Typen der übergebenen Parameter sind anders

Get-Anfrage kann nur Zeichenfolge übergeben

Post-Anfrage, Sie können nicht nur Zeichenfolge, sondern auch Binärdaten übergeben

④ Unterschiedliche Sicherheit

Relativ gesehen, Die Sicherheit der Post-Anfrage ist etwas höher. Get-Anfrage

hat unterschiedliche Anfrage-Header-Parameter

6. Word-Funktion in PHP


Ich erhalte Funktion

M: Basismodellklasse instanziieren

D: Benutzerdefinierte Modellklasse instanziieren

U: URL-Adresse zusammenstellen

7. Was ist der Unterschied zwischen abstrakt Klasse und Schnittstelle? ?


1. Die Schnittstelle wird über das Schlüsselwort „implementiert“ verwendet. Die Verwendung abstrakter Klassen erfolgt über das Schlüsselwort „extends“. Natürlich können Schnittstellen auch über das Schlüsselwort „extends“ vererbt werden.

2. Mitgliedsvariablen (einschließlich statischer Klassenvariablen) können nicht in der Schnittstelle deklariert werden, Klassenkonstanten können jedoch deklariert werden. In abstrakten Klassen können verschiedene Arten von Mitgliedsvariablen deklariert werden, um die Datenkapselung zu implementieren

3. Schnittstellen haben keine Konstruktoren, während abstrakte Klassen Konstruktoren haben können.

4. Methoden in Schnittstellen sind standardmäßig vom öffentlichen Typ, während Methoden in abstrakten Klassen durch private, geschützte oder öffentliche Methoden geändert werden können.

5. Eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren, aber eine Klasse kann nur von einer abstrakten Klasse erben.

Gemeinsame Punkte: Wird zur Spezifikation verwendet

Abstrakte Klasse: kann nicht instanziiert werden, kann nur über das Schlüsselwort abstract vererbt werden; die abstrakte Klasse muss mindestens

An enthalten abstrakte Methode. Diese abstrakte Methode hat keinen Methodenkörper und muss von Unterklassen überschrieben werden

Schnittstelle: über die Schnittstelle deklariert; Mitgliedskonstanten und Methoden in der Schnittstelle müssen nicht mit dem Schlüsselwort public geschrieben werden;

ExtrahierenDer ElefantKlasseist eineArtnichtkann Die Klasse , die in implementiert ist, nur kann sein für seine andere wie ÜbergeordneteKlasse wird verwendet von. Abstrakte Klassen werden mit den Schlüsselwörtern abstract

deklariert.

Abstrakte Klassen ähneln gewöhnlichen Klassen und enthalten Mitgliedsvariablen und Mitgliedsmethoden. Der Unterschied zwischen den beiden besteht darin, dass eine abstrakte Klasse mindestens eine abstrakte Methode enthalten muss,

Abstrakte Methoden haben keinen Methodenkörper und diese Methode ist von Natur aus dazu gedacht, von Unterklassen überschrieben zu werden. Das Format der abstrakten Methode ist: abstrakte Funktion abstractMethod();

Die Schnittstelle wird über das Schlüsselwort interface deklariert. Die Mitgliedskonstanten und Methoden in der Schnittstelle sind öffentlich Sie müssen das Schlüsselwort public nicht schreiben. Die Methoden in der

-Schnittstelle haben auch keinen Methodenkörper. Die Methoden in der Schnittstelle sind grundsätzlich auch für die Implementierung durch Unterklassen vorgesehen. Die von abstrakten Klassen und Schnittstellen implementierten Funktionen sind sehr ähnlich. Der größte Unterschied besteht darin, dass Schnittstellen Mehrfachvererbung implementieren können. Die Wahl zwischen abstraktem

oder Schnittstelle in einer Anwendung hängt von der konkreten Implementierung ab.

Unterklassen erben abstrakte Klassen mithilfe von Extends und Unterklassen implementieren Schnittstellen mithilfe von Implements.

8. Wie versteht man den Namensraum? ?

Klassen- und Funktionsmethodenkonflikte verhindern


Namespace kann die folgenden zwei Probleme lösen:

(1) Vom Benutzer geschriebener Code und Name Konflikte zwischen PHP-internen Klassen/Funktionen/Konstanten oder Klassen/Funktionen/Konstanten von Drittanbietern.

(2) Erstellen Sie einen Alias ​​für eine sehr lange Kennung, um die Lesbarkeit des Codes zu verbessern und die Menge des geschriebenen Codes zu reduzieren.

9. Welche PHP-Version unterstützt ab sofort Namespaces? ?

ThinkPHP3.2


PHP beginnt mit der Unterstützung von Namespaces in Versionen nach 5.3.0.

10. Welche Erweiterungen hat PHP? ?

PDO: Eine von PHP definierte, leichte, konsistente Schnittstelle für den Zugriff auf die Datenbank.


CURL-Erweiterung

GD-Erweiterung

Memcache

Mysql

11. Was soll ich tun, wenn es einen Konflikt in SVN gibt? ?

SVN-Rolle: kollaborative Entwicklung.


Integration:

Update:

12. Wie versteht man MVC? ?

MVC ist ein Framework-Muster, das die Trennung von Anwendungseingabe, -verarbeitung und -ausgabe erzwingt. Anwendungen, die MVC verwenden, sind in drei Kernkomponenten unterteilt: Modell, Ansicht und Controller. Sie erledigen jeweils ihre eigenen Aufgaben.


MVC bezieht sich auf ein Programmiermodell im Softwaredesign. In diesem Modus werden Geschäftsvorgänge, Datenanzeige und Dateninteraktion in Operationen aufgeteilt

M: stellt ein bestimmtes Modell (Modell) dar und seine Hauptfunktion besteht darin, mit der Datenbank zu interagieren

V: Der Vertreter ist eine bestimmte Ansicht (Ansicht), deren Hauptfunktion darin besteht, mit Benutzern für Daten zu interagieren

C: Der Vertreter ist ein bestimmter Controller (Controller), dessen Hauptfunktion darin besteht, bestimmte Geschäftslogik zu verarbeiten

Eine Anwendung wird durch Modell, Ansicht und Controller vervollständigt. Vorgänge im Zusammenhang mit der Datenbank werden von der Modellschicht bereitgestellt und ausgegeben Die Controller-Schicht ist dafür verantwortlich, die Anfrage zu empfangen, sie zur Verarbeitung an das entsprechende Modell zu verteilen und dann die Ansichtsschicht zur Anzeige aufzurufen.

13. Welche Felder gibt es in der Produkttabelle? ?

Produkt-ID, Produktname, Produktnummer, Produktkategorie-ID, Marktpreis, unser Ladenpreis, Produkt-Miniaturansicht, Produkt-Miniaturansicht, ob es sich um einen Verkaufsschlager handelt, 1 bedeutet Verkaufsschlager, 0 bedeutet Nein, ob es sich um einen Verkaufsschlager handelt wird empfohlen, 1 bedeutet Empfehlung 0 bedeutet nicht empfohlen, ob es sich um einen Verkaufsschlager handelt 1 bedeutet neues Produkt 0 bedeutet nein, Zeit hinzufügen, zeigt an, ob das Produkt gelöscht wurde 1 normal 0 Löschstatus, ob das Produkt im Angebot ist 1 Verkauf 0 Off-Shelf-Status,

14. Gleiche Produkt-ID Was soll ich tun, wenn die Attribute unterschiedlich sind? ?

Die Attribute in der Produkttabelle werden in einem Satz gespeichert und die Attributtabelle

15. Cookie und Sitzung


Vergleichen Sie die Zweitens gibt es folgende Punkte:

1. Funktionsspeicherort: Cookie speichert Benutzerinformationen auf der Clientseite, Sitzung speichert Benutzerinformationen auf der Serverseite

2. Cookie speichert eine Zeichenfolge, Objekte werden in der Sitzung gespeichert;

3 Aktionszeit: Cookies können für eine lange Zeit auf dem Client gespeichert werden und die Sitzung wird geschlossen, wenn die Sitzung endet; >4. Im Allgemeinen speichern Cookies unwichtige Benutzerinformationen, wichtige Informationen werden pro Sitzung gespeichert.

5. Cookies werden in zwei Arten unterteilt: Sitzungscookies und Dateicookies. Beim Schließen des Browsers verschwinden die Daten des Sitzungscookies und legen die Ablaufzeit fest. Nach dem Schließen des Browsers sind die Daten beim erneuten Öffnen des Browsers noch vorhanden .

16. Das Implementierungsprinzip des Warenkorbs


Es gibt zwei Situationen:

1. Der Benutzer ist nicht angemeldet. und die Daten werden im Cookie gespeichert. Wenn sich der Benutzer anmeldet, werden die Daten im Cookie an die Datenbank übertragen.

2. Nach der Anmeldung des Benutzers werden die Daten direkt in der Datenbank gespeichert.

17. RBAC-Berechtigungsverwaltung

Rollenbasierte Zugriffskontrolle (Rollenbasierte Zugriffskontrolle)

Fünf Tabellen: zwei Zwischentabellen Admin, Rolle, Regel, Admin_role, Role_rule

Drei Tabellen: eine Zwischentabelle

Der Prozess der Steuerung, ob verschiedene Administratoren über Code auf eine bestimmte Methode zugreifen können, ist die Berechtigungskontrolle.


RBAC (Role-Based AccessControl, rollenbasierte Zugriffskontrolle) bedeutet, dass Benutzern Rollen und Berechtigungen zugeordnet werden. Einfach ausgedrückt hat ein Benutzer mehrere Rollen und jede Rolle verfügt über mehrere Berechtigungen. Auf diese Weise wird ein Berechtigungsmodell „Benutzer-Rolle-Berechtigung“ aufgebaut. In diesem Modell besteht im Allgemeinen eine Viele-zu-Viele-Beziehung zwischen Benutzern und Rollen sowie zwischen Rollen und Berechtigungen.

18. Wie man die Schnittstellenentwicklung versteht

Laden Sie zuerst die Schnittstellendatei eines Drittanbieters herunter,

19. Wie verhindert man SMS-Bombing mit SMS-Bestätigungscode? ?

JS-Client-Überprüfung

Grenzwert für die Anzahl der Textnachrichten für Mobiltelefonnummern (Zähler)

(1) Grafische Überprüfung hinzufügen

Böswillige Angreifer nutzen automatisierte Tools, um die Schnittstelle „

Dynamic SMS Acquisition“ aufzurufen, um dynamische SMS-Nachrichten zu senden. Der Hauptgrund dafür ist, dass Angreifer automatisch eine große Anzahl von Anrufen an die Schnittstelle tätigen können. Durch die Verwendung von Bildverifizierungscodes können automatische Aufrufe von Tools wirksam verhindert werden. Das heißt, bevor der Benutzer den Vorgang „Dynamische SMS abrufen“ ausführt, wird ein Bildverifizierungscode angezeigt, der den Benutzer zur Eingabe des Verifizierungscodes auffordert Der Server sendet eine dynamische SMS an das Mobiltelefon des Benutzers. Diese Methode kann das Problem des SMS-Bombings effektiv lösen.

Der sichere grafische Verifizierungscode muss die folgenden Schutzanforderungen erfüllen

-

Der Generierungsprozess ist sicher:Das Bild Der Bestätigungscode muss auf der Serverseite generiert und überprüft werden. - Der Verwendungsprozess ist sicher: Er ist einmal gültig und unterliegt der Bestätigungsanfrage des Benutzers. - Der Bestätigungscode selbst ist sicher: Er ist nicht einfach werden von Identifizierungstools erkannt und können Brute-Force-Cracking wirksam verhindern.

Beispiel für grafische Verifizierung:

(2) Einzelne IP

Begrenzung der Anzahl der Anfragen

Bild Nach dem Codieren des Codes kann die Verifizierung effektiv verhindert werden, dass Angreifer automatisch die Funktion „

Dynamische SMS“ aufrufen.Wenn der Angreifer jedoch den Verifizierungsfehler des Bildverifizierungscodes ignoriert, ist dies eine große Zahl Die Anzahl der Ausführungsanfragen wird den Server zusätzlich belasten und die Geschäftsnutzung beeinträchtigen. Es wird empfohlen, dass die Serverseite die Anzahl der Anfragen für eine einzelne IP innerhalb einer Zeiteinheit begrenzt. Sobald die Anzahl der Benutzeranfragen (einschließlich der Anzahl der fehlgeschlagenen Anfragen) den festgelegten Schwellenwert überschreitet, werden Anfragen an die IP für einen bestimmten Zeitraum ausgesetzt Wenn die Situation besonders ernst ist, kann die IP auf die schwarze Liste gesetzt werden, um Zugriffsanfragen von dieser IP zu verbieten. Diese Maßnahme kann eine große Anzahl von Anfragen von einer IP-Adresse begrenzen, Angreifer daran hindern, eine große Anzahl von Benutzern über dieselbe IP anzugreifen, die Schwierigkeit von Angriffen erhöhen und die normale Geschäftsentwicklung sicherstellen.

(3) Sendezeit begrenzen

Es wird empfohlen, das Intervall zwischen dem wiederholten Senden dynamischer Textnachrichten zu begrenzen. Das heißt, wenn ein einzelner Benutzer das Senden einer dynamischen Textnachricht anfordert, kann die serverseitige Einschränkung erst nach einer bestimmten Zeit durchgeführt werden Zeit (normalerweise 60 Sekunden hier). Zweite dynamische SMS-Anfrage. Diese Funktion kann das Benutzererlebnis weiter schützen und schädliche Spam-Verifizierungs-SMS-Nachrichten einschließlich manueller Angriffe verhindern.

Dynamischer SMS-Bestätigungscode-Verwendungsprozess abschließen

20. ?

21. Wie lege ich die Gültigkeitsdauer der Sitzung fest? ?

22. Synchrone Rückrufe und asynchrone Rückrufe zur Zahlung? ?


Spezifischer synchroner Rückruf und asynchroner Rückruf

Synchronisierte Rückruffunktion: um dem Benutzer zu ermöglichen, nach Abschluss der Zahlung zur entsprechenden Händlerseite zu springen (um sicherzustellen, dass dass die Benutzerzahlung abgeschlossen ist. Anschließend kann die Zahlung des Benutzers korrekt verarbeitet werden)

Asynchrone Callback-Funktion: Stellen Sie sicher, dass der Händler die Zahlung des Benutzers korrekt verarbeitet

23. Alipays Zahlungsvorgang?


1. Beantragen Sie Alipay-Kontoinformationen und erhalten Sie die entsprechende APPID, den öffentlichen Schlüssel (geben Sie ihn an Alipay) und den privaten Schlüssel (behalten Sie ihn selbst)

2. Laden Sie das offizielle Dokument herunter, erstellen Sie lokal einen Demotest, legen Sie APPID, synchrone und asynchrone Rückrufadresse, privaten Alipay-Schlüssel und andere Informationen in config.php fest.

3. Erstellen Sie eine Hintergrundanwendung

4. Verwenden Sie Code speziell, um die Zahlungsfunktion zu implementieren

24. Welche Rolle spielen asynchrone Rückrufe? ?


Asynchrone Rückruffunktion: Stellen Sie sicher, dass der Händler die Zahlung des Benutzers korrekt abwickelt

1. Stellen Sie sicher, dass keine Synchronisierung ausgeführt wird und keine asynchrone einseitige Anfrage gestellt wird. ()

2. Lösen Sie das Problem abgebrochener Bestellungen

3. Relativ sicher

Synchrone Rückruffunktion: Wenn der Benutzer die Zahlung abschließt, kann er zum entsprechenden Händler springen Seite (stellen Sie sicher, dass die Zahlung des Benutzers korrekt verarbeitet werden kann, nachdem die Zahlung des Benutzers abgeschlossen ist) (Get-Methode)

Asynchrone Rückruffunktion: Stellen Sie sicher, dass der Händler die Zahlung des Benutzers korrekt verarbeitet hat (Post-Methode)

25. Mehrdimensionale Attribute des Produktmoduls

26. Häufig verwendete Linux-Befehle

zum Suchen von Dateien:

find

-name um nach dem Dateinamen zu suchen

-Gruppe: Suche nach der Gruppe, zu der die Datei gehört

-Benutzer: Suche nach dem Eigentümer der Datei

locateBefehl, wird zum Abrufen von Daten verwendet

locate file name

df command: display disk information

-l : lokale Festplatte anzeigenFestplatteninformationen

-h : Festplatteninformationen anzeigen in 1024 Basis

-H : Festplatteninformationen in 1000 Basis

- T : Informationen zum Festplattenformat anzeigen

-t : Festplatteninformationen im angegebenen Format anzeigen

cd Benutzername: Eingeben für

cd ~: Nach Hause gehen

yy: Kopieren p: Einfügen

vim Dateiname: Datei anzeigen

27, hppt Statuscode? ?

1, 301 MovedPermanently: Die angeforderte Ressource wurde dauerhaft an einen neuen Speicherort verschoben und alle zukünftigen Verweise auf diese Ressource sollten einen von mehreren in dieser Antwort zurückgegebenen URIs verwenden.

Permanente Weiterleitung.

2. 302 Vorübergehend verschieben: Die angeforderte Ressource antwortet vorübergehend auf die Anfrage von einem anderen URI. Da eine solche

Umleitung vorübergehend ist , sollte der Client auch in Zukunft Anfragen an die ursprüngliche Adresse senden

3. 404 Nicht gefunden: Die Anfrage ist fehlgeschlagen und die angeforderte Ressource ist in der Anfrage nicht verfügbar. Auf dem Server gefunden. Es gibt keine Informationen, die dem Benutzer sagen, ob diese Situation vorübergehend oder dauerhaft ist

4. 200 OK: Die Anfrage war erfolgreich und der von der Anfrage erwartete Antwortheader oder Datenkörper wird mit dieser Antwort zurückgegeben. Dieser Statuscode wird angezeigt, wenn


einen normalen Status anzeigt.

200 (Erfolg): Der Server hat die Anfrage erfolgreich verarbeitet. Normalerweise bedeutet dies, dass der Server die angeforderte Webseite bereitgestellt hat
201 (Erstellt): Die Anfrage war erfolgreich und der Server hat die neue Ressource erstellt
202 (Akzeptiert): Der Server hat die Anfrage angenommen, aber noch nicht verarbeitet
203 (Unautorisierte Informationen): Der Server hat die Anfrage erfolgreich verarbeitet, aber die zurückgegebenen Informationen stammen möglicherweise von einer anderen Quelle
204 (Kein Inhalt): Der Server hat die Anfrage erfolgreich verarbeitet, aber es wurde kein Inhalt zurückgegeben
205 (Inhalt zurücksetzen): Der Server hat die Anfrage erfolgreich verarbeitet, aber keinen Inhalt zurückgegeben
206 (Teilinhalt): Der Server hat einen Teil der GET-Anfrage erfolgreich verarbeitet
404 (nicht gefunden): Der Server konnte Die angeforderte Webseite wurde nicht gefunden
500 (interner Serverfehler): Der Server hat einen Fehler festgestellt und konnte die Anforderung nicht abschließen

28 erfordern und einschließen


Die Leistung der require()-Anweisung ähnelt der von include(), alle schließen die angegebene Datei ein und führen sie aus.

Der Unterschied besteht darin, dass die Anweisung include() jedes Mal gelesen und ausgewertet werden muss, wenn ein Fehler gemeldet wird. , wird die Datei nur einmal verarbeitet (tatsächlich ersetzt der Dateiinhalt die require()-Anweisung). Das bedeutet, dass es effizienter ist, require() zu verwenden, wenn der Code wahrscheinlich mehrmals ausgeführt wird. Wenn Sie andererseits jedes Mal, wenn Sie den Code ausführen, eine andere Datei lesen oder eine Schleife haben, die eine Reihe von Dateien durchläuft, verwenden Sie die include()-Anweisung

include, um bei Verwendung zu laden

require wird am Anfang geladen

29. Wie kompiliere ich PHP-Programmerweiterungen im Linux-System? ?

1. Suchen Sie das komprimierte Softwarepaket und entpacken Sie es

2. Kompilieren Sie make &&make install

4. Starten Sie Apache neu

30. Verständnis von Transaktionen


Diese Teile bilden ein Ganzes, und alle Operationen sind erfolgreich scheitern und in den ursprünglichen Zustand zurückkehren!

Bevor Sie die SQL-Anweisung ausführen, führen Sie zunächst die Starttransaktion aus, wodurch eine Transaktion (der Startpunkt der Transaktion) geöffnet wird. Anschließend können Sie mehrere SQL-Anweisungen ausführen Übermittlung, dh in der Transaktion Die Auswirkungen mehrerer SQL-Anweisungen bleiben in der Datenbank erhalten. Oder Rollback, was Rollback bedeutet, also ein Rollback zum Startpunkt der Transaktion, und alle vorherigen Vorgänge wurden rückgängig gemacht!

Vier Hauptmerkmale von Transaktionen (

ACID)

Atomizität: Alle Operationen in einer Transaktion sind irreduzible atomare Einheiten. Alle Vorgänge in der Transaktion werden entweder erfolgreich ausgeführt oder schlagen fehl.

Konsistenz: Nachdem die Transaktion ausgeführt wurde, bleibt der Datenbankstatus mit anderen Geschäftsregeln konsistent. Beispielsweise sollte bei einem Überweisungsgeschäft unabhängig davon, ob die Transaktion erfolgreich ausgeführt wird oder nicht, die Summe der Salden der beiden an der Überweisung beteiligten Konten unverändert bleiben.

Isolation: Isolation bedeutet, dass bei gleichzeitigen Vorgängen verschiedene Transaktionen isoliert werden sollten, damit sich die einzelnen gleichzeitigen Transaktionen nicht gegenseitig stören.

Dauerhaftigkeit: Sobald die Transaktion erfolgreich übermittelt wurde, müssen alle Datenvorgänge in der Transaktion in der Datenbank gespeichert bleiben. Auch wenn die Datenbank unmittelbar nach der Übermittlung der Transaktion abstürzt, muss dies beim Neustart der Datenbank gewährleistet sein. Stellen Sie Daten über einen Mechanismus wieder her.

31.

PHP ruft die aktuelle Zeit time() ab

PHP fängt die Zeichenfolge ab: Substr-Funktion

PHP findet, ob es eine Teilzeichenfolge in der gibt string:

32. Fünf verwandte Array-Verarbeitungsfunktionen?

In_array: Bestimmen Sie, ob ein Element im Array vorhanden ist.

array_reverse() führt einen Flashback der Elemente im Array durch und der Rückgabewert ist das Array nach dem Flashback.

array_splice(array1,start,length,array2) entfernt das entsprechende Element aus dem Array und ersetzt es durch ein neues Element

array_push() (push) fügt ein oder am Ende des hinzu array Mehrere Elemente,

array_pop() (pop) löscht das letzte Element aus dem Array

33 Welche Methoden gibt es für domänenübergreifende Anfragen? ?

JSONP

CORS

34. Wie viele Speicher-Engines gibt es? Was ist der Unterschied? ?

Mysiam vs. innodb


Der MyISAM-Typ unterstützt keine erweiterte Verarbeitung wie die Transaktionsverarbeitung, während der InnoDB-Typ dies tut.

Die MyISAM-Typtabelle legt Wert auf Leistung und ihre Ausführungsgeschwindigkeit ist schneller als die des InnoDB-Typs, bietet jedoch keine Transaktionsunterstützung, während InnoDB Transaktionsunterstützung und erweiterte Datenbankfunktionen wie Fremdschlüssel bereitstellt.

Index erstellen: Alarmtabellenname Index hinzufügen (`Feldname`)

35. Datentyp?


6379

String, Hash, Liste (verknüpfte Liste), Menge (Satz), Zset (geordneter Satz)

36, Redis praktische Fälle – Flash-Verkäufe, Zähler, Empfehlungen, Sammelfälle

Flash-Verkäufe:


Verwenden Sie die verknüpfte Listen- und Pop-Funktion von Redis, auch für viele Benutzer Wenn sie gleichzeitig eintreffen, werden sie nacheinander ausgeführt

1. Speichern Sie nun den Bestand der Produkttabelle in der Warteschlange

2. Starten Sie den Eilkauf und legen Sie den Cache-Zyklus fest das Inventar

3. Führen Sie auf dem Client einen einzelnen Vorgang aus, ermitteln Sie das Inventar der Redis-Warteschlange, bevor Sie eine Bestellung aufgeben

Zähler:

37. Was ist der Unterschied zwischen dem linken Link und der richtige Link in MySQL? ?

Linker Join: Die Datensätze in der linken Tabelle werden in den Abfrageergebnissen basierend auf der linken Tabelle angezeigt. Wenn in der rechten Tabelle keine übereinstimmenden Datensätze vorhanden sind, werden sie mit Null gefüllt.

Rechter Join: Basierend auf der rechten Tabelle werden die Datensätze in der rechten Tabelle in den Abfrageergebnissen angezeigt. Wenn in der linken Tabelle keine übereinstimmenden Datensätze vorhanden sind, werden sie mit Null gefüllt.

Inner Join: Der Status der beiden Tabellen ist gleich und nur Datensätze, die die Join-Bedingungen erfüllen, werden in den Abfrageergebnissen angezeigt.

38. Memcache-Standardportnummer? ? , der Unterschied zwischen Memcache und Redis? Bestehend aus Schlüssel und Wert. Wenn auf einen bestimmten Wert zugegriffen werden soll, wird das Ergebnis mithilfe des LRU-Algorithmus nach und nach gelöscht.

39. MySQL-Sperrmechanismus

40. Was sind die Aspekte der Datenbankoptimierung? ?

1. Datenbankdesign

3. Trennung von Lesen und Schreiben

41. Elektrizität Wann ändert sich bei einem Geschäftsprojekt der Warenbestand? ?

1. Beim Hinzufügen von Produkten erhöht sich der Produktbestand. Für verschiedene Attribute fügt die Bestandstabelle hinzu:

2. Wenn die Bestellzahlung erfolgreich ist, wird der Lagerbestand reduziert

3. Die Bestellzahlung schlägt fehl, der Lagerbestand wird nicht reduziert

4. Kundenretouren, Lagerbestandserhöhung

42. Vermeiden Sie vollständige Tabellenabfragen und erstellen Sie Indizes für entsprechende Felder

2 die zu lang sind und stapelweise abgefragt werden.

3. Nach where darf es keine Funktionsoperation geben

4 Das erste Feld des linken Prinzips muss einen Index haben

5 von

Verwandte Empfehlungen:

Sammlung und Weitergabe von PHP-Interviewfragen

Aufzeichnung häufig gestellter Fragen in PHP-Interviews

Das obige ist der detaillierte Inhalt vonUnverzichtbare Interviewfragen für PHP-Interviews. 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