Heim > Schlagzeilen > Hauptteil

Schauen Sie sich die grundlegenden Fragen zu Computernetzwerk-Interviews an, die ByteDance häufig testet!

Freigeben: 2021-04-26 10:08:11
nach vorne
9614 Leute haben es durchsucht

In diesem Artikel stellen wir Ihnen einige der beliebtesten Front-End-Interviewfragen von ByteDance zum Thema Computernetzwerke vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Schauen Sie sich die grundlegenden Fragen zu Computernetzwerk-Interviews an, die ByteDance häufig testet!

Hinweis: Die (xx) Zahl vor jeder Frage gibt die Häufigkeit dieser Frage an. Diese Computernetzwerkgrundlage basiert auf den Fragen und entsprechenden Antworten und Referenzlinks, die aus über 30 Front-End-Interviews zusammengestellt wurden . Warten. Der Inhalt des Artikels wird von der Person zusammengestellt, die das Angebot erhalten hat.

(3) Frage: HTTP-Cache


Der HTTP-Cache ist in starken Cache und ausgehandelten Cache unterteilt:

  • Überprüfen Sie zunächst, ob der starke Cache verfügbar ist, indem Sie Cache-Control verwenden. Lesen Sie es dann direkt Caching

  • Wenn nicht, treten Sie in die Verhandlungs-Cache-Phase ein und initiieren Sie eine HTTP-Anfrage. Der Server prüft, ob die Ressource aktualisiert ist, indem er bedingte Anforderungsfelder wie If-Modified-Since und If enthält -None-Match:

    • Wenn die Ressource aktualisiert wird, geben Sie die Ressource und den Statuscode 200 zurück

    • Wenn die Ressource nicht aktualisiert wird, weisen Sie den Browser an, den Cache direkt zu verwenden, um die Ressource abzurufen

(5) Frage: Häufig verwendete HTTP-Statuscodes und Verwendungsszenarien?


  • 1xx: Zeigt an, dass sich das Protokoll derzeit in einem Zwischenstatus befindet und nachfolgende Anforderungen erforderlich sind.

  • 2xx: Zeigt an, dass die Anforderung erfolgreich war.

  • 3xx: Zeigt an, dass der Umleitungsstatus erforderlich ist eine neue Anfrage.

  • 4xx: Zeigt an, dass die Anfrage erfolgreich ist 200 Anforderungserfolg gibt es eine Antwortkörper

  • 404 Ressource nicht gefunden
  • 4 00 Anforderungsfehler

    500 Serverseitiger Fehler
  • 503 Server ausgelastet
  • Wissen Sie, was der Statuscode 302 ist? Welche 302-Szenarien sind Ihnen beim Surfen im Internet begegnet?

  • Und 302 bedeutet vorübergehende Umleitung. Auf diese Ressource kann vorübergehend nicht zugegriffen werden, aber nach einer bestimmten Zeit kann immer noch darauf zugegriffen werden. Wenn für den Zugriff auf Ressourcen auf einer bestimmten Website eine Genehmigung erforderlich ist, muss sich der Benutzer anmelden und Nach dem Einloggen können Sie nach Erreichen der Anmeldeseite mit dem Besuch fortfahren.

    301 ist ähnlich, es wird zu einer neuen Website gesprungen, aber 301 bedeutet, dass die Ressource der aufgerufenen Adresse dauerhaft entfernt wurde. Auf diese Adresse sollte in Zukunft auch nicht zugegriffen werden Krabbeln. Die zurückgegebene Adresse kann aus dem Standortheader der zurückgegebenen Antwort abgerufen werden. Das Szenario von 301 sieht wie folgt aus:
  • Springen Sie beispielsweise von http://baidu.com zu https://baidu.com
  • Der Domainname wurde geändert
  • (2) Frage : Gängige HTTP-Anfragemethoden, Unterschiede und Verwendung? .Http/1.1-Bestimmungen Die folgende Anforderungsmethode:
  • Get: Angegebene Daten
  • Head: Metallinformationen
  • Post: Daten senden

Put: Daten ändern


LÖSCHEN: Daten löschen

    CONNECT: Richten Sie einen Verbindungstunnel für den Proxyserver ein.
  • OPTIONS: Listen Sie die Anforderungsmethoden auf, die auf Ressourcen implementiert werden können, die häufig domänenübergreifend verwendet werden.
  • TRACE: Verfolgen Sie den Anforderungs-Antwort-Übertragungspfad.


() F: Was verstehen Sie unter Computernetzwerken

  • Anwendungsschicht, Präsentationsschicht, Sitzungsschicht, Transportschicht, Netzwerkschicht, Sicherungsschicht, physikalische Schicht
  • (3) Frage: Was ist HTTPS? ? Der spezifische Prozess
  • HTTPS richtet eine Sicherheitsschicht zwischen HTTP und TCP ein. Wenn HTTP mit TCP kommuniziert, muss es zunächst eine Sicherheitsschicht durchlaufen, das Datenpaket verschlüsseln und dann das verschlüsselte Datenpaket an TCP übertragen TCP muss das Datenpaket entschlüsseln, bevor es an das oben genannte HTTP übergeben werden kann.
  • Der Browser übermittelt eine Liste von Client-Zufallsdaten und Verschlüsselungsmethoden. Nachdem der Server sie erhalten hat, übergibt er eine Liste von Server-Zufallsdaten und Verschlüsselungsmethoden sowie ein digitales Zertifikat (einschließlich des öffentlichen Schlüssels). Wenn die Überprüfung erfolgreich ist, wird ein pre_random generiert, dann mit dem öffentlichen Schlüssel verschlüsselt und an den Server übertragen. Der Server verwendet client_random, server_random und pre_random, um das Geheimnis mit dem öffentlichen Schlüssel zu verschlüsseln, und verwendet dieses Geheimnis dann als geheimen Schlüssel für spätere Übertragungen zum Verschlüsseln und Entschlüsseln der Daten.

  • (4) Frage: Drei-Wege-Handshake und Vier-Wege-Welle
  • Warum ein Drei-Wege-Handshake notwendig ist: ​​Um die Sende- und Empfangsfähigkeiten der anderen Partei zu bestätigen.
  • Drei-Wege-Handshake
  • Hauptprozess des Drei-Wege-Handshakes:
    • Zuerst befinden sich beide Parteien im Status GESCHLOSSEN, dann beginnt der Server, einen bestimmten Port abzuhören und wechselt in den Status LISTEN.

    • Dann initiiert der Client aktiv eine Verbindung, sendet SYN und wechselt dann zu SYN -SENT selbst, seq = x

    • Nachdem der Server es empfangen hat, gibt er SYN seq = y und ACK ack = x + 1 (für das vom Client gesendete SYN) zurück, wird zu SYN-REVD

    • und Dann sendet der Client erneut ACK seq = x + 1, ack = y + 1 wird an den Server übergeben und wechselt in den Status EASTABLISHED. Wenn der Server ACK empfängt, wechselt er ebenfalls in den Status ESTABLISED. Daher muss die Serialisierung von ACK um eins erhöht werden. Alles, was eine Peer-Bestätigung erfordert, verbraucht die Serialisierung von TCP-Nachrichten. Warum nicht zweimal?

    Die Empfangsfähigkeit des Kunden kann nicht bestätigt werden.

    Wenn der Client zuerst eine SYN-Nachricht sendet, diese aber im Netzwerk bleibt, geht TCP davon aus, dass das Paket verloren gegangen ist, überträgt es dann erneut und die Verbindung wird mit zwei Handshakes hergestellt. Warten Sie, bis der Client die Verbindung schließt. Wenn das Paket jedoch später beim Server ankommt, empfängt der Server es, sendet die entsprechende Datentabelle und stellt die Verbindung her. Zu diesem Zeitpunkt hat der Client jedoch die Verbindung geschlossen, was zu einer Verschwendung von Verbindungsressourcen führt.

    Warum nicht viermal?

    Mehr als vier Mal ist in Ordnung, aber drei Mal ist genug p, Der Status ändert sich in FIN-WAIT-1

    Nachdem der Server ihn empfangen hat, sendet er eine ACK-Bestätigung, ack = p + 1, und wechselt dann in den CLOSE-WAIT-StatusNachdem der Client sie empfangen hat , es wechselt in den FIN-WAIT-2-Status

    Warten Sie nach einer Weile, bis die Daten verarbeitet werden, senden Sie FIN und ACK erneut, seq = q, ack = p + 1, treten Sie in die LAST-ACK-Phase ein Nachdem der Client die FIN erhalten hat, nachdem der Client die FIN erhalten hat, geben Sie TIME_WAIT ein (warten Sie auf 2MSL) und senden Sie dann ACK an den Server ack = 1 + 1

    • Nachdem der Server die FIN erhalten hat, wechselt er in den GESCHLOSSENEN Zustand

    • Der Client muss zu diesem Zeitpunkt noch auf zwei MSLs warten. Wenn er diese nicht erhält, zeigt die erneute Sendeanforderung des Servers an, dass die Bestätigung erfolgreich angekommen ist. Nach dem Winken wechselt der Client in den Status GESCHLOSSEN erneut gesendet werden. Warum müssen Sie auf 2MSL (Maximum Segment Lifetime) warten? Wenn eine neue Anwendung verwendet wird, werden nutzlose Datenpakete empfangen, was zu einer Verwirrung der Datenpakete führt. Daher ist es am sichersten, auf das Senden aller Datenpakete durch den Server zu warten, bevor eine neue Anwendung gestartet wird.

    • 1 MSL sorgt dafür, dass die letzte ACK-Nachricht der aktiven Abschlusspartei in vier Wellen endlich den Peer erreichen kann

    • 1 MSL sorgt dafür, dass der Peer das ACK nicht erhält, dann kann die erneut übertragene FIN-Nachricht ankommen

    • Warum viermal statt dreimal?
    • **Wenn es dreimal ist, werden ACK und FIN auf der Serverseite in einer Welle kombiniert. Eine so lange Verzögerung kann verhindern, dass eine TCP-FIN die Serverseite erreicht, und der Client sendet sie dann erneut FIN

    Referenzinformationen

    https://zhuanlan.zhihu.com/p/86426969

    • F: Was soll ich tun, wenn die Datenübertragung während der Interaktion abgeschlossen ist und ich nicht Sie möchten die Verbindung noch nicht trennen?
    • Das Verbindungsfeld des Antworttexts in HTTP ist als Keep-Alive gekennzeichnet.

    Wissen Sie etwas über TCP-Schiebefenster?

    In der TCP-Verbindung muss TCP für Sender und Empfänger die gesendeten Daten in den

    Sendepufferbereich

    und die empfangenen Daten in den Empfangspufferbereich stellen. Es kommt häufig vor, dass der Absender zu viel sendet und der Empfänger dies nicht verarbeiten kann. Daher ist eine Flusskontrolle erforderlich, bei der das Senden des Absenders über die Größe des Empfangspuffers gesteuert wird. Wenn der Empfangspuffer der anderen Partei voll ist, kann sie nicht weiter senden. Dieser Flusskontrollprozess erfordert die Aufrechterhaltung eines Sendefensters auf der Sendeseite und eines Empfangsfensters auf der Empfangsseite. TCP-Schiebefenster werden in zwei Typen unterteilt:

    Sendefenster
      und
    • Empfangsfenster

      .

    Referenzen


    https://juejin.im/post/5e527c58e51d4526c654bf41#heading-38


    F: Was ist der Unterschied zwischen WebSocket und

    Essence Different

    Ajax, also asynchrones JavaScript und XML, ist eine Webentwicklungstechnologie zum Erstellen interaktiver Webanwendungen Websocket ist ein neues Protokoll von HTML5, das Echtzeitkommunikation zwischen Browsern und Servern ermöglicht

      Leben Verschiedene Zyklen:
      • Websocket ist eine lange Verbindung, die Sitzung wird immer aufrechterhalten.

      • Ajax wird nach dem Senden und Empfangen getrennt Front-End- und Back-End-Daten

      Ajax Nicht-Echtzeit

        Initiator:
      • AJAX-Client initiiert

      WebSocket-Server und Client pushen sich gegenseitig

      Kennen Sie WebSocket?
      • Lange Abfragen und kurze Abfragen, WebSocket ist lange Abfragen.
      • In einem E-Commerce-Szenario kann sich beispielsweise der Warenbestand ändern, daher muss dies dem Benutzer rechtzeitig angezeigt werden, damit der Client weiterhin Anfragen sendet und der Server dann unabhängig davon weiterhin nach Änderungen sucht Ob sie sich ändern oder nicht, werden alle zurückgegeben. Dies ist eine kurze Abfrage.

        Die Leistung einer langen Abfrage besteht darin, dass keine Rückgabe erfolgt, sondern vor der Rückgabe auf die Änderung oder Zeitüberschreitung (normalerweise mehr als zehn Sekunden) gewartet wird Senden von Anfragen, sodass beide Parteien die Anzahl der Anfragen reduzieren.

      Referenzlink


      https://www.jianshu.com/p/3fc3646fad80

      HTTP Wie implementiert man eine lange Verbindung? Ab wann tritt eine Zeitüberschreitung auf?

      Durch die Einstellung Connection: keep-alive im Header (Anfrage- und Antwortheader) wird das HTTP1.0-Protokoll unterstützt, aber ab dem HTTP1.1-Protokoll ist die Verbindung lang Verbindung standardmäßig
      • HTTP Allgemein Es wird einen httpd-Daemon geben, in dem Sie das Keep-Alive-Timeout festlegen können. Wenn die TCP-Verbindung länger als diese Zeit inaktiv ist, wird sie auch geschlossen Im HTTP-Header

      TCPs Keep-Alive enthält drei Parameter, die in net.ipv4 des Systemkernels festgelegt werden: Wenn die TCP-Verbindung für tcp_keepalive_time inaktiv ist, erfolgt ein Erkennungspaket, wenn keine Bestätigung von der anderen Partei erfolgt empfangen, wird es bei jedem tcp_keepalive_intvl erneut gesendet, bis tcp_keepalive_probes gesendet wird. Verwerfen Sie den Link.


      tcp_keepalive_intvl = 15

      • tcp_keepalive_probes = 5

      • tcp_keepalive_time = HTTP Es gibt keine langen und kurzen Links, nur TCP-lange TCP-Verbindungen können einen TCP-Link wiederverwenden Initiieren Sie mehrere HTTP-Anfragen, was den Ressourcenverbrauch reduzieren kann. Wenn Sie beispielsweise einmal HTML anfordern, müssen Sie möglicherweise auch nachfolgende JS/CSS/Bilder usw. anfordern.

        • Referenzlink

        • https:/ /blog.csdn.net/weixin_37672169 /article/details/80283935
        • https://www.jianshu.com/p/3fc3646fad80

      F: Was ist der Unterschied zwischen Fetch API und traditionellem Request

      ?

      fetch entspricht der Trennung von Bedenken, verwendet Promise, API ist häufiger vorhanden, unterstützt Async/AWAIT
      • einfache Semantik, semantischer
      • kann von Isomorphic-Fetch verwendet werden, was für Referenzressourcen praktisch ist

      Https:// /github.com/camsong/blog/issues/2
      • (2) Frage: Welche Arten von Dateien können im Allgemeinen per POST gesendet werden? Datenverarbeitungsprobleme
      • Text, Bilder, Videos, Audio usw. Kann

      Text/Bild/Audio/ oder Anwendung/JSON usw.

      Frage: Wie stellt TCP wirksame Übertragungs- und Überlastungskontrollprinzipien sicher?

      • TCP ist ein verbindungsorientiertes, zuverlässiges Transportschicht-Kommunikationsprotokoll.

      Zuverlässigkeit spiegelt sich wider in: zustandsbehaftet und kontrollierbar


      • Was kontrollierbar ist, bedeutet, dass bei Paketverlust oder bei schlechtem Netzwerkzustand zu gesprungen wird Wenn Sie Ihr eigenes Verhalten ändern, reduzieren Sie die Sendegeschwindigkeit oder senden Sie sie erneut

      • , damit die oben genannten Maßnahmen die effektive Übertragung von Datenpaketen gewährleisten können.

      Prinzip der Überlastungskontrolle

      Der Grund dafür ist, dass die gesamte Netzwerkumgebung besonders schlecht sein kann und es leicht zu Paketverlusten kommt, daher sollte der Absender darauf achten.
        Verwenden Sie hauptsächlich drei Methoden:
      • langsamer Startschwellenwert + Stauvermeidung

        schnelle Neuübertragung
      • schnelle Antwort

      langsamer Startschwellenwert + Stauvermeidung.

      Zur Staukontrolle im Allgemeinen TCP behält hauptsächlich zwei Kernzustände bei:

      Überlastungsfenster (cwnd)

        Langsamer Startschwellenwert (ssthresh)
      • Verwenden Sie das Überlastungsfenster auf dem Absender, um die Größe des Sendefensters zu steuern.

        Dann wird ein relativ konservativer langsamer Startalgorithmus verwendet, um sich langsam an das Netzwerk anzupassen. Während der ersten Übertragungsperiode stellen Sender und Empfänger zunächst eine Verbindung durch einen Drei-Wege-Handshake her, bestimmen die Größe ihrer jeweiligen Empfangsfenster und Initialisieren Sie dann die Überlastung auf beiden Seiten des Fensters, und nach jeder RTT-Runde (Empfänger- und Sendeverzögerung) verdoppelt sich die Größe des Überlastungsfensters, bis der Schwellenwert für den langsamen Start erreicht ist.

        Dann beginnen wir mit der Vermeidung von Überlastungen, indem wir das Überlastungsfenster in jeder RTT-Runde verdoppeln und nun in jeder Runde eins hinzufügen.

        Schnelle Neuübertragung

        Wenn während des TCP-Übertragungsvorgangs ein Paketverlust auftritt, sendet die empfangende Seite eine wiederholte Bestätigung. Beispielsweise geht das 5. Paket verloren, 6 und 7 werden erreicht und dann die empfangende Seite 5, 6 und 7 senden alle die ACK des vierten Pakets. Zu diesem Zeitpunkt erhält der Absender 3 doppelte ACKs. Wenn er erkennt, dass das Paket verloren gegangen ist, wird er sofort erneut übertragen, ohne auf RTO zu warten (Timeout-Neuübertragungszeit).

        Selektive Neuübertragung: Fügen Sie optional das SACK-Attribut zum Nachrichtenkopf hinzu, markieren Sie die Pakete, die über den linken und rechten Rand angekommen sind, und übertragen Sie dann die Pakete, die nicht angekommen sind, erneut.

        Schnelle Wiederherstellung

        Wenn Das sendende Ende erhält nach 3 doppelten ACKs einen Paketverlust und ist in einen Überlastungszustand des aktuellen Netzwerkzustands eingetreten. Anschließend tritt es in die Phase der schnellen Wiederherstellung ein:

        • Reduziert den Überlastungsschwellenwert auf die Hälfte des Überlastungsfensters

        • Dann wird die Größe des Überlastungsfensters zum Überlastungsschwellenwert

        • Dann vergrößert sich das Überlastungsfenster linear, um sich an die Netzwerkbedingungen anzupassen

        F: Was macht OPTION? Geben Sie ein Beispiel für die Verwendung von OPTION?


        dient dazu, eine Prüfanfrage zu senden, um festzustellen, welche Einschränkungen eine Anfrage für eine bestimmte Zieladresse haben muss, und dann die eigentliche Anfrage entsprechend den Einschränkungen zu senden.

        Zum Beispiel wird die Vorabprüfung auf domänenübergreifende Ressourcen zuerst mit der OPTIONS-Methode von HTTP gesendet. Wird zur Bearbeitung domänenübergreifender Anfragen verwendet

        F: Kennen Sie http? Welche Ebene der Vereinbarung? (Anwendungsschicht)


        • Flexibel und skalierbar. Es gibt keine Einschränkungen, dass Leerzeichen Wörter und Zeilenumbrüche trennen. Es können nicht nur Texte, sondern auch beliebige Ressourcen wie Bilder und Videos übertragen werden

        • Zuverlässige Übertragung, basierend auf TCP/IP, daher erbt diese Funktion

        • Anfrage-Antwort, kommen und gehen

        • Zustandslos, jede HTTP-Anfrage ist unabhängig, irrelevant und muss keine Kontextinformationen speichern standardmäßig

        Nachteile:

        • Klartextübertragung ist nicht sicher

        • Bei der Wiederverwendung einer TCP-Verbindung kommt es zu einer Peer-Überlastung

        • Zustandslos In einem Szenario mit langen Verbindungen muss eine große Menge Kontext vorhanden sein gespeichert, um die Übertragung einer großen Anzahl von Duplikaten zu vermeiden

          Anwendungsschicht

        Präsentationsschicht

        Sitzungsschicht


        Transportschicht

        Netzwerkschicht

        • Datenverbindungsschicht

        • Physische Schicht

        • TCP/IP vier -Schichtkonzept:
        • Anwendungsschicht: Anwendungsschicht, Präsentationsschicht, Sitzungsschicht: HTTP

        • Transportschicht: Transportschicht: TCP/UDP

        • Netzwerkschicht: Netzwerkschicht: IP

        Datenverbindungsschicht: Datenverbindungsschicht, physikalische Schicht

        (3) Frage: Wie gewährleistet das TCP-Protokoll Zuverlässigkeit und warum ist UDP unzuverlässig?

        • TCP ist ein verbindungsorientiertes, zuverlässiges Transportschicht-Kommunikationsprotokoll
        • UDP ist ein verbindungsloses Transportschicht-Kommunikationsprotokoll, das IP-Eigenschaften erbt und auf Datagrammen basiert
        • Warum ist TCP zuverlässig? Die Zuverlässigkeit von TCP spiegelt sich im Status und in der Steuerung wider. Es zeichnet genau auf, welche Daten von der anderen Partei empfangen wurden und welche Daten nicht empfangen wurden. Außerdem wird sichergestellt, dass die Datenpakete in der richtigen Reihenfolge ankommen ohne Fehler zuzulassen. Dies ist, was TCP zu bieten hat. Wenn es erkennt, dass Pakete verloren gegangen sind oder die Netzwerkumgebung schlecht ist, passt TCP sein Verhalten entsprechend der spezifischen Situation an, steuert seine eigene Sendegeschwindigkeit oder erneut senden, was kontrollierbar ist
        • Server-Push

        Referenzen
        • https://juejin.im/post/5d032b77e51d45777a126183
        Weitere Programmierkenntnisse finden Sie unter:

        Programmiervideo

        ! !
    Verwandte Etiketten:
    Quelle:微信
    Erklärung dieser Website
    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
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!