Fortgeschrittene Kenntnisse des Internet-Java-Ingenieurs, vollständige Lese- und Schreibkenntnisse
Der Großteil des Inhalts dieses Projekts stammt von Chinese Hushan und das Urheberrecht liegt beim Autor. Der Inhalt umfasst Wissen in den Bereichen hohe Parallelität, Verteilung, hohe Verfügbarkeit, Mikrodienste und massive Datenverarbeitung. Wir haben diesen Teil des Wissens systematisch organisiert, um den Lesern das Lernen und Nachschlagen zu erleichtern.
Wir arbeiten auch hart daran, das Algorithmusprojekt zu aktualisieren! Wenn Sie sich auf schriftliche Interviewalgorithmen vorbereiten oder Ihre Programmierfähigkeiten weiter verbessern möchten, sind Sie herzlich willkommen bei Star und folgen Sie doocs/leetcode
Bevor wir uns mit diesem Projekt befassen, werfen wir einen Blick auf die Aussagen der technischen Interviewer im Diskussionsforum. Dieses Projekt lädt alle Entwicklerfreunde ein, einige ihrer Ideen und praktischen Erfahrungen im Diskussionsforum auszutauschen. Möglicherweise möchten Sie auch doocs/advanced-java mit Star folgen, um über die neuesten Entwicklungen im Projekt auf dem Laufenden zu bleiben.
Architektur mit hoher Parallelität
Nachrichtenwarteschlange
- Warum Nachrichtenwarteschlange verwenden? Was sind die Vor- und Nachteile von Nachrichtenwarteschlangen? Was sind die Vor- und Nachteile von Kafka, ActiveMQ, RabbitMQ und RocketMQ?
- Wie kann die hohe Verfügbarkeit der Nachrichtenwarteschlange sichergestellt werden?
- Wie kann sichergestellt werden, dass Nachrichten nicht wiederholt konsumiert werden? (So stellen Sie die Idempotenz des Nachrichtenverbrauchs sicher)
- Wie kann die zuverlässige Übertragung von Nachrichten sichergestellt werden? (Wie man mit dem Problem des Nachrichtenverlusts umgeht)
- Wie kann die Reihenfolge der Nachrichten sichergestellt werden?
- Wie können die Probleme mit der Verzögerung und dem Ablauf der Nachrichtenwarteschlange gelöst werden? Was tun, wenn die Nachrichtenwarteschlange voll ist? Es gibt Millionen von Nachrichten, die seit mehreren Stunden im Rückstand sind. Wie können wir sie lösen?
- Wenn Sie gebeten würden, eine Nachrichtenwarteschlange zu schreiben, wie würden Sie die Architektur entwerfen? Sagen Sie mir Ihre Gedanken.
Suchmaschine
- Können Sie das Prinzip der verteilten Architektur von ES erklären (wie erreicht ES eine Verteilung)?
- Wie funktioniert das Schreiben von ES-Daten? Wie funktioniert die Abfrage von ES-Daten? Können Sie das zugrunde liegende Lucene vorstellen? Kennen Sie den invertierten Index?
- Wie kann ES die Abfrageeffizienz verbessern, wenn die Datenmenge groß ist (Milliarden Ebenen)?
- Was ist die Bereitstellungsarchitektur des ES-Produktionsclusters? Wie viele Daten enthält jeder Index ungefähr? Wie viele Shards gibt es pro Index ungefähr?
Cache
- Wie wird Caching im Projekt verwendet? Welche Folgen hat Caching bei falscher Anwendung?
- Was ist der Unterschied zwischen Redis und Memcached? Was ist das Threading-Modell von Redis? Warum ist Single-Thread-Redis viel effizienter als Multi-Thread-Memcached?
- Welche Datentypen gibt es bei Redis? In welchen Szenarien eignet es sich besser?
- Was sind die Ablaufstrategien von Redis? Können Sie den LRU-Code von Hand schreiben?
- Wie kann eine hohe Parallelität und hohe Verfügbarkeit von Redis sichergestellt werden? Können Sie das Master-Slave-Replikationsprinzip von Redis vorstellen? Können Sie das Sentinel-Prinzip von Redis vorstellen?
- Was ist die Master-Slave-Architektur von Redis?
- Wie erreicht Redis Sentinel Cluster eine hohe Verfügbarkeit?
- Was sind die Persistenzmethoden von Redis? Was sind die Vor- und Nachteile verschiedener Persistenzmechanismen? Wie wird der zugrunde liegende Persistenzmechanismus implementiert?
- Können Sie erklären, wie der Redis-Clustermodus funktioniert? Wie werden Redis-Schlüssel im Cluster-Modus angesprochen? Welche Algorithmen gibt es für die verteilte Adressierung? Verstehen Sie den konsistenten Hash-Algorithmus? Wie füge ich einen Knoten dynamisch hinzu und lösche ihn?
- Verstehen Sie, was Lawine, Penetration und Zusammenbruch von Redis ist? Was passiert nach einem Redis-Absturz? Wie soll das System mit dieser Situation umgehen? Wie gehe ich mit der Redis-Penetration um?
- Wie kann die Doppelschreibkonsistenz zwischen Cache und Datenbank sichergestellt werden?
- Was ist das Problem der Parallelitätskonkurrenz in Redis? Wie kann dieses Problem gelöst werden? Kennen Sie die CAS-Lösung für Redis-Transaktionen?
- Wie wird Redis in der Produktionsumgebung bereitgestellt?
- Haben Sie jemals den Prozess des Redis-Rehashs verstanden?
Unterdatenbank und Untertabelle
- Warum sollten wir Datenbanken und Tabellen trennen (wie sollte beim Entwurf eines Systems mit hoher Parallelität die Datenbankebene gestaltet werden)? Welche Datenbank- und Table-Sharding-Middleware haben Sie verwendet? Was sind die Vor- und Nachteile verschiedener Subdatenbank- und Subtabellen-Middleware? Wie teilen Sie die Datenbank vertikal oder horizontal auf?
- Derzeit gibt es ein System, das nicht in Datenbanken und Tabellen unterteilt ist. Wie kann es so gestaltet werden, dass das System dynamisch von ungeteilten Datenbanken und Tabellen zu geteilten Datenbanken und Tabellen wechseln kann?
- Wie entwerfe ich ein Unterdatenbank- und Tabellenschema, das dynamisch erweitert und verkleinert werden kann?
- Wie gehe ich mit dem ID-Primärschlüssel um, nachdem die Datenbank in Tabellen unterteilt ist?
Lese- und Schreibtrennung
- Wie realisiert man die Trennung von Lesen und Schreiben in MySQL? Was ist das Prinzip der MySQL-Master-Slave-Replikation? Wie kann das Verzögerungsproblem der MySQL-Master-Slave-Synchronisation gelöst werden?
System mit hoher Parallelität
- Wie entwerfe ich ein System mit hoher Parallelität?
verteiltes System
Interview mit Serienbombardements
Systemspaltung
- Warum Systemspaltung? Wie führt man eine Systemaufteilung durch? Ist es in Ordnung, Dubbo nach der Trennung nicht mehr zu verwenden?
Verteiltes Service-Framework
- Sag mir, wie Dubbo funktioniert? Kann die Kommunikation fortgesetzt werden, wenn das Registrierungscenter nicht verfügbar ist?
- Welche Serialisierungsprotokolle unterstützt Dubbo? Erzählen Sie mir etwas über die Datenstruktur von Hessisch? Weiß PB Bescheid? Warum ist PB am effizientesten?
- Was sind Dubbos Lastausgleichsstrategien und Clusterfehlertoleranzstrategien? Was ist mit dynamischen Proxy-Strategien?
- Was ist Dubbos Spi-Idee?
- Wie können Service-Governance, Service-Verschlechterung, Fehlerwiederholung und Timeout-Wiederholung basierend auf Dubbo durchgeführt werden?
- Wie gestaltet man die Idempotenz verteilter Serviceschnittstellen (z. B. keine wiederholten Abzüge)?
- Wie kann die Reihenfolge verteilter Serviceschnittstellenanforderungen sichergestellt werden?
- Wie entwerfe ich selbst ein Dubbo-ähnliches RPC-Framework?
- Was ist P des CAP-Theorems?
Verteilte Sperre
- Welche Anwendungsszenarien gibt es für Zookeeper?
- Wie entwerfe ich verteilte Sperren mit Redis? Ist es möglich, Zookeeper zum Entwerfen verteilter Sperren zu verwenden? Welche der beiden oben genannten Methoden zur Implementierung verteilter Sperren ist effizienter?
Verteilte Transaktionen
- Verstehen Sie verteilte Transaktionen? Wie löst man das Problem der verteilten Transaktionen? TCC Was soll ich tun, wenn die Netzwerkverbindung fehlschlägt? Wie kann die Konsistenz von XA sichergestellt werden?
verteilte Sitzung
- Wie implementiert man eine verteilte Sitzung während der Clusterbereitstellung?
Hochverfügbare Architektur
- Einführung in Hystrix
- Systemarchitektur der Detailseite einer E-Commerce-Website
- Die Hystrix-Thread-Pool-Technologie implementiert die Ressourcenisolation
- Der Hystrix-Semaphormechanismus implementiert die Ressourcenisolation
- Fein abgestimmte Kontrolle der Hystrix-Isolationsrichtlinien
- Tauchen Sie tief in die Ausführungsinterna von Hystrix ein
- Optimieren Sie die Abfrageschnittstelle für Batch-Produktdaten basierend auf der Anforderungs-Cache-Anforderungs-Caching-Technologie
- Fallback-Verschlechterungsmechanismus basierend auf lokalem Cache
- Ein detaillierter Blick auf die Funktionsprinzipien der Hystrix-Leistungsschalter
- Tauchen Sie tief in die Thread-Pool-Isolierung und Schnittstellenstrombegrenzung von Hystrix ein
- Bieten Sie Sicherheitsschutz für die Zeitüberschreitung von Serviceschnittstellenaufrufen basierend auf dem Zeitüberschreitungsmechanismus
Hochverfügbares System
- Wie gestaltet man ein hochverfügbares System?
Strombegrenzung
- Wie kann der Durchfluss begrenzt werden? Wie macht man das bei der Arbeit? Erzählen Sie mir etwas über die konkrete Implementierung?
Sicherung
- Wie führe ich einen Leistungsschalter durch?
- Was sind die Fuse-Frameworks? Kennen Sie das konkrete Umsetzungsprinzip?
- Wie erfolgt die technische Auswahl des Sicherungsrahmens? Sentinel oder Hystrix?
Downgrade
- Wie kann ich ein Downgrade durchführen?
Microservice-Architektur
- Das gesamte Kapitel zur Microservice-Architektur ist eine zusätzliche Ergänzung und wird später aktualisiert. Leser sind auch herzlich eingeladen, an ergänzenden Verbesserungen teilzunehmen.
- Beschreibung der Microservice-Architektur
- Migrieren Sie von der monolithischen Architektur zur Microservices-Architektur
- Ereignisgesteuertes Datenmanagement für Microservices
- Wählen Sie eine Microservice-Bereitstellungsstrategie
- Vor- und Nachteile der Microservice-Architektur
Spring Cloud-Microservice-Architektur
- Was sind Microservices? Wie kommunizieren Microservices unabhängig voneinander?
- Was sind die Unterschiede zwischen Spring Cloud und Dubbo?
- Sprechen Sie über Spring Boot und Spring Cloud, wie Sie sie verstehen?
- Was ist ein Service-Leistungsschalter? Was ist ein Service-Downgrade?
- Was sind die Vor- und Nachteile von Microservices? Erzählen Sie uns von den Fallstricken, auf die Sie bei der Projektentwicklung gestoßen sind?
- Welche Microservice-Technologie-Stacks kennen Sie?
- Microservice-Governance-Strategie
- Sowohl Eureka als auch Zookeeper können Dienstregistrierungs- und Erkennungsfunktionen bereitstellen.
- Lassen Sie uns über den Hauptaufrufprozess der Service-Discovery-Komponente Eureka sprechen?
- ...
Massive Datenverarbeitung
- Wie finde ich dieselbe URL aus einer großen Anzahl von URLs?
- Wie findet man hochfrequente Wörter aus großen Datenmengen?
- Wie finde ich die IP heraus, die die Baidu-Website an einem bestimmten Tag am häufigsten besucht?
- Wie finde ich eindeutige Ganzzahlen in einer großen Datenmenge?
- Wie kann festgestellt werden, ob eine Zahl in einer großen Datenmenge vorhanden ist?
- Wie frage ich die beliebtesten Abfragezeichenfolgen ab?
- Wie zählt man die Anzahl verschiedener Telefonnummern?
- Wie finde ich den Median aus 500 Millionen Zahlen?
- Wie sortiere ich nach Abfragehäufigkeit?
- Wie finde ich die Top-500-Nummern?
- Erzählen Sie mir von den gängigen Routinen für TopK-Probleme in Big Data?
Stars-Trends
Hinweis: Dieses Trenddiagramm wird automatisch regelmäßig von actions-starcharts, Autor @MaoLongLong, aktualisiert
Doocs-Community-Qualitätsprojekte
Die Doocs-Technologie-Community setzt sich dafür ein, ein vollständiges und kontinuierlich wachsendes Lernökosystem für Internetentwickler zu schaffen! Im Folgenden sind einige hervorragende Projekte unter Doocs aufgeführt. Entwicklerfreunde sind herzlich eingeladen, weiterhin Aufmerksamkeit zu schenken.
# | Projekt | beschreiben | Hitze |
---|
1 | Advanced-Java | Internet-Java-Ingenieure verfügen über umfassende Kenntnisse in fortgeschrittenen Bereichen: Sie decken Kenntnisse in Bereichen wie hohe Parallelität, Verteilung, hohe Verfügbarkeit, Microservices und Massendatenverarbeitung ab. |
|
2 | Leetcode | Eine Vielzahl von Programmiersprachen implementiert LeetCode, „Sword Pointer Offer (2nd Edition)“ und „Programmer Interview Code (6th Edition)“ Problemlösungen. |
|
3 | Quellcode-Jäger | Quellcode-Analyse gängiger Internet-Komponenten-Frameworks. |
|
4 | jvm | Zusammenfassung des Wissens über die zugrunde liegenden Prinzipien der Java Virtual Machine. |
|
5 | Coding-Interview | Eine Sammlung von Fragen zu Programmierinterviews, darunter „The Sword Points to Offer“, „The Beauty of Programming“ usw. |
|
6 | md | Ein äußerst prägnanter WeChat Markdown-Editor. |
|
7 | Fachbücher | Eine Liste lesenswerter Fachbücher. |
|
Mitwirkender
Vielen Dank an alle folgenden Freunde für ihre Beiträge zur technischen Community von Doocs. Bitte klicken Sie hier, um an der Projektwartung teilzunehmen.
Offizieller Account
Das einzige öffentliche Konto „ Doocs “ in der Doocs-Technologie-Community. Scannen Sie gerne den QR-Code, um ihm zu folgen und sich auf den Austausch relevanter Kenntnisse im technischen Bereich und der neuesten Brancheninformationen zu konzentrieren . Natürlich können Sie auch mein persönliches WeChat-Konto (Hinweis: GitHub) hinzufügen, um in die technische Austauschgruppe aufgenommen zu werden.
Folgen Sie dem öffentlichen Konto „ Doocs “ und antworten Sie auf das PDF, um das Offline-PDF-Dokument dieses Projekts (im Wesentlichen 283 Seiten) zu erhalten, was das Lernen bequemer macht!