Heim  >  Artikel  >  Fragen zum Spring Recruitment PHP-Interview 2019 (mit Antworten)

Fragen zum Spring Recruitment PHP-Interview 2019 (mit Antworten)

幸せな気
幸せな気nach vorne
2019-05-23 13:58:3812555Durchsuche

Dieses Interview soll nicht nur eine neue Reise beginnen und die Welt verstehen, sondern auch einen Prozess der Entdeckung der eigenen Mängel und eine Gelegenheit bieten, die Richtung der zukünftigen Entwicklung (Lernen) zu bestimmen. (Beigefügt: Mindmap der Interview-Wissenspunkte)

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

PHP

php ist die beste Sprache der Welt! Keine Widerlegung möglich!

1. Grundlagen

1. Der Unterschied zwischen Sitzung und Cookie
Sitzung ist eine auf der Serverseite gespeicherte Datenstruktur, die zur Verfolgung von Benutzern verwendet wird Status, diese Daten können in Clustern, Datenbanken und Dateien gespeichert werden

Cookie ist ein Mechanismus für den Client zum Speichern von Benutzerinformationen. Er wird zum Aufzeichnen einiger Benutzerinformationen und auch zur Implementierung von Sitzungen verwendet. Ein Weg.

2. Haben Sie PHP7 verwendet? Erfahren Sie mehr über die neuen Funktionen

PHP7 hat sprunghafte Verbesserungen bei der Leistung, neuen Operatoren, einheitlicher Variablensyntax usw. erzielt.

3, Magic Variable

nach der Bedeutung von __dir__ gefragt, dies ist das Verzeichnis, in dem sich die Antwortdatei befindet

4, Magic-Methode

Das ist eine Frage, die mir oft gestellt wird die häufig verwendeten, aber ich war verwirrt, als ich plötzlich nach __invoke()
__construct(), __destruct(), __call(), __callStatic() fragte , __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() und __debugInfo()

2. Datenstrukturen und Algorithmen

1, Stapeldatenstruktur

Solange die Pop-Datenstruktur mit Code implementiert werden kann

2, Blasensortierung

Solange die Blasensortierung mit Code implementiert werden kann

3. Der Unterschied zwischen einem vollständigen Binärbaum und einem vollständigen Binärbaum

Nur die Knotengrade der unteren beiden Schichten können kleiner als 2 sein, und die Knoten der unteren Schicht sind alle auf der äußersten linken Seite der Schicht konzentriert . Ein Binärbaum an bestimmten Positionen ist ein vollständiger Binärbaum
und ein Binärbaum mit einer Tiefe von h und 2^h-1 Knoten Vollständiger Binärbaum

3. Architekturbezogen

1. Was ist der Unterschied zwischen Laravel und ThinkPHP?

Beginnen Sie mit dem Routing. Es werden verschiedene Ebenen von Middleware bis hin zu Controllern, Datenzugriff, Ansichten usw. eingeführt.
Wenn Sie sich beschweren möchten, ist Laravel im Vergleich zu einigen Projekten möglicherweise etwas „schwer“

2 Haben Sie jemals ein eigenes Paket mit Composer veröffentlicht? (Modulare PHP-Entwicklung auf Basis von Composer)

Ich habe mit „Nein“ geantwortet, ich habe gerade erst davon erfahren
Der Interviewer sagte, dass ihr Framework ihr eigenes sei Ein Framework für die sekundäre Entwicklung basierend auf Discuz. Basierend auf seiner hervorragenden Grundlage wird auch das Composer-Abhängigkeitsmanagement in Blabla eingeführt

3 Lassen Sie uns über das Verständnis von MVC sprechen

In Kombination mit Projektbeschreibungsvorlagen Ansichten, die Beziehung zwischen Controllern und der Grundzusammensetzung

4. Schutz

1. XSS-Cross-Site-Scripting-Angriff
2. DDOS-Verkehrsangriff
3, CSRF Cross-Site-Request-Forgery-Angriff
4, SQL-Injection

Benutzereingaben im Front-End-Formular steuern oder begrenzen
Filtern, wenn Parameter und Daten im Back-End usw. übergeben werden

5. Projekt

1. So lösen Sie das Parallelitätsproblem im Projekt

Meine Lösung besteht darin, zunächst die gültigen Anfragen im Frontend zu kontrollieren , zum Beispiel nur eine normale Anfrage pro Minute
Dann Das Backend filtert auch ungültige Anfragen und stellt die Vorgänge dann zur Implementierung in die Warteschlange.

Ein Interviewer fragte: Ist Ihre Warteschlange blockiert? Wenn zwei Benutzer wirklich gleichzeitig kaufen, warten zwei Benutzer. Abgeschlossen, sie verwenden immer noch denselben Thread zum Vervollständigen. Haben Sie darüber nachgedacht, andere Wege zu nutzen, um dies zu erreichen?
Ich sagte nein, er sagte ja Mithilfe des Sperrmechanismus wartet der zweite nacheinander darauf, dass der erste abgeschlossen wird

2. Der spezifische Implementierungsprozess der WeChat-Zahlung

1. Die H5-Seite initiiert eine Zahlungsanforderung und Anfragen zum Generieren eines Zahlungsauftrags
2. Rufen Sie die einheitliche Bestell-API auf, um einen Prepaid-Auftrag zu generieren
3. Generieren Sie Zahlungsparameter, die von der JSAPI-Seite aufgerufen werden, und signieren Sie
4. Der WeChat-Browser aktiviert die Zahlung automatisch JSAPI-Schnittstellenzahlung
5. Zahlung bestätigen
6. Asynchrone Kommunikation Benachrichtigen Sie den Händler über das Zahlungsergebnis. Der Händler erhält die Benachrichtigung und sendet die Bestätigungsnachricht zurück
7. Geben Sie das Zahlungsergebnis zurück und zeigen Sie es an Zeigen Sie dem Benutzer Zahlungsinformationen an

3, implementieren Sie einfach die Anmelde- und Registrierungsfunktion

Jedes Framework berücksichtigt unterschiedliche Aspekte, also schreiben Sie einfach den entsprechenden Code nach Ihrem eigenen Verständnis
4, Wie Um ein Einkaufszentrum zu entwerfen

Ich habe mich zunächst auf ein B2C-Einkaufszentrum beschränkt, dann mit der Datentabelle begonnen und dann einfach Einführung in die Front-End- und Back-End-Implementierungslogik

MYSQL

MySQL-Optimierung hat grundsätzlich oberste Priorität
1. Grundlagen

1. Was ist der Unterschied zwischen InnoDB und MyISAM

Bereitgestellt von InnoDB-Transaktionsverarbeitung, Sperren auf Zeilenebene, unterstützt Fremdschlüssel, unterstützt mehrere Zeilenformate
MyISAM unterstützt nur Sperren auf Tabellenebene, Volltextindizes und Heap-Tabellen

2, was sind die Merkmale von Transaktionen

Atomizität, Konsistenz, Isolation, Haltbarkeit
3, Transaktionsisolationsstufe

Nicht festgeschriebener Lesevorgang, festgeschriebener Lesevorgang, wiederholbarer Lesevorgang, serialisierbar

4 Es gibt ein Tabellenfeld von O_Id, OrderDate, OrderPrice und Customer Wir möchten die Bestellsumme ermitteln. Kunden, deren Betrag weniger als 2000

    SELECT Customer,SUM(OrderPrice) FROM 

Orders

    GROUP BY Customer

    HAVING SUM(OrderPrice)<2000

5 beträgt, fragen die Daten in der Schülertabelle ab, diejenigen, die größer als 60 sind, werden bestanden, andernfalls werden sie nicht bestanden

Punktzahl auswählen, Kategorie=Fall
WANN punkten >=60 THEN 'bestanden'
ELSE 'nicht bestanden' '
ENDE
aus der Punktetabelle

6, fragen Sie die Studentennummer und den Namen der Studenten ab, die nicht alle Kurse abgeschlossen haben

    SELECT a.SNO ,a.SNAME  

    FROM student a  

    WHERE a.`SNO` NOT IN  

        ( SELECT b.`SNO` FROM SC b  

        GROUP BY b.`SNO` HAVING COUNT(*) =  

            ( SELECT COUNT(*)  FROM course)

        );

2 . Optimierung

1, „select * from student where name='red'“, „select *“ from student where name='blue'", optimieren Sie die Anweisung

    select name from student where 

name=&#39;red&#39;
    union
    select 

name from student where name=&#39;blue&#39;

Wenn Sie die or-Bedingung verwenden, kann die myisam-Tabelle den Index verwenden, innodb jedoch nicht.
innodb ersetzt OR durch UNION (gilt für Indexspalten)

2, wie optimiert man im Allgemeinen die Datenbank

Abfragecache, EXPLAIN, (gemeinsamer) Index, Verwendung fest Länge Statische Tabelle

Server

1. Schutz

So schützen Sie den Server

Nur ​​begrenzte Ports öffnen, Anmelde-IPs einschränken, Anmeldekonten einschränken

Es ist auch eine Frage, die in ein Buch eingeordnet werden kann, und zwar entsprechend dem Projekt beantwortet

2. Protokoll

Was ist der Unterschied zwischen Get und Post

Die Parameter von Get sind in der URL enthalten. Die GET-Anfrage wird vom Browser aktiv zwischengespeichert und URL-codiert. Es gibt eine Zeichenbeschränkung für Parameter, die ASCII-Zeichen sein müssen.
Post leitet Parameter durch den Anforderungstext weiter und Es gibt mehrere Codierungsmethoden

3. NginX

So verarbeiten Sie PHP-Skriptanfragen beim Einrichten von Nginx

Die Standardkonfiguration ist die Weiterleitung an FastCGI zur Verarbeitung

4. Welche Daten verwenden Sie Redis zum Zwischenspeichern

Je nach Projekt? Die von Ihnen zwischengespeicherten Daten müssen häufig zwischengespeichert werden.

2. Wie bleibt Redis erhalten und welche Aktualisierungsfrequenz ist konfiguriert?

Konfigurieren Sie die AOF-Datei standardmäßig jede Sekunde 🎜>

3. Ist Redis Multi-Threaded? und wie lange dauert es?

Sie können Redis verwenden. Der offizielle Clusterplan wurde noch nicht in die Praxis umgesetzt. Die Umsetzung kann mehrere Wochen dauern. Abgeschlossen

5. Codeverwaltung

Haben Sie jemals Git verwendet? Wenn zwei Personen den falschen Code übermitteln, wie kann ich das Problem lösen?

Ich habe Git verwendet, um den Code zu übermitteln. Wenn dies passiert, können Sie den Remote-Code zuerst über Git abrufen. , ändern Sie dann den widersprüchlichen Code oder Git-Tag-Inhalt korrekt und senden Sie den Code dann erneut

                                                  🎜>1. Warum Sie Ihren Job verlassen haben

Witzig antworten, ein wenig über das Unternehmen oder sich selbst erwähnenGeld ist weniger, viel ist mehr und weit ist weit weg

2. Ihr ideales Team

Leidenschaft für Technologie, aktive Lösung von Problemen und Zusammenarbeit3. Karriereplanung

Front-End im Detail, Back-End im Detail, Datenoptimierungsanalyse und -erfassung, Serverdurchdringungblabla

Fragen, die ich stellen möchte

Normalerweise fragen sie, welche Projekte das Unternehmen hat, welche technische Struktur es hat, ob es profitabel ist usw.

Verschiedene Unternehmen haben unterschiedliche Technologie-Stacks und unterschiedliche Bedenken. Einige von ihnen fragen nach der spezifischen Lösung des Blockierungsproblems. Einige legen mehr Wert auf die Projekteffizienz, andere achten auch auf den Serveraufbau, ob sie eigene Frameworks erstellt haben und wie sie gängige Frameworks verstehen. Möglicherweise finden Sie dabei die gewünschte Entwicklungsrichtung

Postscript

Ich habe in 5 Tagen 7 Angebote von 9 Unternehmen erhalten, was sich ziemlich gut anfühlt. Während des Vorstellungsgesprächs werden die meisten Unternehmen detaillierte Fragen stellen, die auf den Punkten im Lebenslauf basieren Gleichzeitig können Sie die Breite der Technologie (wie viele Projekte oder Fähigkeiten, die Sie erlebt haben) und die Tiefe der Technologie (Datenoptimierung, Framework-Verständnis und -Produktion, Service) sehen Ich hoffe, dass jeder weiterhin die Technologie üben und erlernen kann, während sich das Projekt weiterentwickelt. (•ㅂ•)/♥ Lasst uns einander ermutigen ~

Anbei: Mindmap der Interview-Wissenspunkte

Fragen zum Spring Recruitment PHP-Interview 2019 (mit Antworten)

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