Das Folgende ist eine Interviewfrage von Tencent aus dem Jahr 2019. Ich teile sie mit Ihnen und hoffe, dass sie für alle hilfreich ist.
(Empfohlenes Video-Tutorial: Java-Lehrvideo)
- Wählen Sie ein Projekt aus Ihrem Lebenslauf und sagen Sie uns, auf welche großen Herausforderungen Sie dabei gestoßen sind? Und Ihre Ideen zur Lösung des Problems?
- ⼼Ein Code muss mehrere Redis-Befehle ausführen, um die Atomizität ohne Sperren sicherzustellen.
Lua-Skript verwenden: https://segmentfault.com/a/1190000009811453
- Sprechen wir über Datenstrukturen wie Binärbäume und rote Bäume?
Verstehen Sie diesen Artikel: https://juejin.im/post/5a27c6946fb9a04509096248
- Erzählen Sie mir etwas über die Unterschiede und Verwendungsszenarien von B-Tree und B+Tree?
- B-Baum:
B-Baum ist ein Baum, der unter Ausnutzung der Eigenschaften von Plattenblöcken erstellt wird. Jeder Festplattenblock hat einen Knoten und jeder Knoten enthält viele Schlüssel. Durch die Erhöhung der Anzahl der Knotenschlüsselwörter im Baum verfügt der Baum über weniger Ebenen als der ursprüngliche Binärbaum, wodurch die Anzahl und Komplexität der Datensuche verringert wird.
B-Tree nutzt geschickt das Prinzip des Festplatten-Read-Ahead, um die Größe eines Knotens auf eine Seite festzulegen (jede Seite ist 4 KB), sodass jeder Knoten nur eine E/A benötigt, um den vollständigen Ladevorgang abzuschließen.
Geben Sie ein.
B-Tree-Daten können in jedem Knoten gespeichert werden.
B+Baum: - B+Baum ist eine Variante von B+Baum. Daten werden nur in Blattknoten gespeichert. Auf diese Weise speichert jeder Knoten mehr Schlüsselwörter und der Baum hat weniger Ebenen, sodass die Datenabfrage schneller erfolgt. Alle Schlüsselwortzeiger sind in Blattknoten vorhanden, sodass die Anzahl der Suchvorgänge jedes Mal gleich ist Die Abfragegeschwindigkeit ist stabiler.
Welche Version von MySQL und welche Speicher-Engine verwenden B+tree für den Index? Sie müssen zunächst die Implementierungsprinzipien von B + Tree und Red Tree verstehen. B+tree verfügt über sequentielle Zugriffszeiger, die rote Bäume nicht haben. -
Sprechen Sie über die Unterschiede zwischen gängiger Nachrichten-Middleware?
- RabbitMQ ist die erste Wahl für kleine und mittlere Unternehmen: einfache Verwaltungsoberfläche und hohe Parallelität.
- Weitere verwandte Empfehlungen für Interviewfragen:
Java-Interviewfragen und -antworten-
⼼Große Unternehmen können sich für RocketMQ entscheiden: Es bietet mehr Parallelität und kann die RocketMQ-Entwicklung anpassen.
- ⽽Protokollsammelfunktion, Kafka ist die erste Wahl, speziell für Big Data vorbereitet.
- Wie stellt Rabbitmq die Zuverlässigkeit von Nachrichten sicher?
Details „⾯Question Bank/rabbitmq“-
Springcloud Service Discovery Prinzip? a. Senden Sie alle 30 Sekunden einen Heartbeat-Check, um die Miete zu erneuern. Wenn der Kunde die Miete nicht mehrmals verlängern kann, wird sie innerhalb von 90 Sekunden aus dem Server-Registrierungscenter entfernt. - a. Registrierungsinformationen und Aktualisierungen werden auf andere Eureka-Knoten kopiert. Die Replikation erfolgt alle 30 Sekunden, um ihre Dienste zu finden und Fernanrufe zu tätigen.
b. Der Client kann auch einige Serviceinstanzinformationen zwischenspeichern, sodass der Client die Serviceadresse auch dann noch finden kann, wenn Eureka ausfällt.
Die verschiedenen Komponenten von Springcloud vorstellen? Was kann außer Eureka noch für das Registrierungscenter von Springcloud verwendet werden? How springcloud works - Features ActiveMQ RabbitMQ RocketMQ kafka
Development language java erlang java scala
Single machine throughput 10,000 level 10,000 level 100,000 level
Timeliness ms level us level ms level within ms level
Availability ⾼High (master-slave architecture) ⾼High (Master-Slave-Architektur) ⾾Sehr hoch (verteilte Architektur) ⾾Sehr hoch (verteilte Architektur)
Ausgereiftes Produkt, das in vielen Unternehmen verwendet wird; verschiedene Protokolle werden gut unterstützt
Basierend auf Erlang-Entwicklung, also der Parallelität Die Leistungsfähigkeit ist sehr stark, die Leistung ist extrem gut und die Latenz ist sehr gering; die Verwaltungsschnittstelle ist umfangreich
Die MQ-Funktion ist relativ vollständig und die Skalierbarkeit ist gut
Nur die Haupt-MQ wird unterstützt. Funktionen wie einige Nachrichtenabfragen, Nachrichtenverfolgung und andere Funktionen werden nicht bereitgestellt. Schließlich ist es für Big Data vorbereitet und wird im Bereich Big Data häufig verwendet.
springcloud besteht aus den folgenden Kernkomponenten:
Eureka: Wenn jeder Dienst startet, registriert der Eureka-Client den Dienst beim Eureka-Server, und der Eureka-Client kann die Registrierung auch der Reihe nach vom Eureka-Server abrufen, um zu wissen, wo sich andere Dienste befinden . Welche ⾥
Ribbon: Wenn eine Anfrage zwischen Diensten initiiert wird, erfolgt der Lastausgleich basierend auf Ribbon und eine Maschine wird aus mehreren Maschinen eines Dienstes ausgewählt
Feign: Feign-basierter dynamischer Proxy-Mechanismus, basierend auf Anmerkungen und ausgewählten Maschinen, Die Anforderungs-URL ist eine gespleißte Adresse, initiieren Sie eine Anforderung. Hystrix: Die Anforderung wird über den Thread-Pool von Hystrix initiiert. Dadurch wird die Isolierung verschiedener Dienstaufrufe realisiert und das Problem der Dienstlawine vermieden das Front-End, Das mobile Endgerät muss das Back-End-System aufrufen, das einheitlich über das Zuul-Gateway eingegeben wird, und das Zuul-Gateway leitet die Anfrage an den entsprechenden Dienst weiter
Das Registrierungszentrum kann auch zookeeper verwenden.
Was sind die aktuellen limitierenden Methoden für Microservices?
Spring Cloud Gateway: https://windmt.com/2018/05/09/spring-cloud-15-spring-cloud-gateway-ratelimiter/
Ist die Dienstisolierung weiterhin erforderlich, wenn der Strom begrenzt ist?
https://www.javazhiyin.com/25964.html
- Dubbo verfügt über mehrere Arten des Lastausgleichs? Erfolgt der Lastausgleich auf der Serverseite oder auf der Clientseite?
Dubbo-Lastausgleich Auf der Clientseite verfügt Dubbo über 4 integrierte Lastausgleichsstrategien: a. RandomLoadBalance: Zufälliger Lastausgleich. Wählen Sie zufällig eine aus. Dies ist Dubbos Standard-Lastausgleichsstrategie. - b. RoundRobinLoadBalance: Lastausgleich abfragen. Umfrage zur Auswahl.
c. LeastActiveLoadBalance: Die minimale Anzahl aktiver Anrufe, zufällig mit der gleichen Anzahl aktiver Anrufe. Die aktive Zählung bezieht sich auf die Differenz der Zählungen vor und nach dem Anruf. Sorgen Sie dafür, dass der langsame Anbieter weniger Anfragen erhält, denn je langsamer der Anbieter, desto größer ist der Unterschied in der Anzahl vor und nach dem Aufruf.
d. ConsistentHashLoadBalance: Konsistenter Hash-Lastausgleich. Anfragen mit denselben Parametern landen immer auf derselben Maschine.
Wie implementiert man die verteilte Redis-Sperre? Welche Themen erfordern Aufmerksamkeit? - Erfahren Sie mehr über diesen Artikel: https://juejin.im/post/5bbb0d8df265da0abd3533a5
Erzählen Sie mir etwas über den Quellcode, den Sie gelesen haben? Welche Designmuster oder Design-Highlights werden verwendet? - Für eine spezifische Analyse müssen Sie vor dem Interview etwas Quellcode lesen, z. B. den Spring-Quellcode.
Wie implementiert man AOP? Wo wird AOP im Projekt verwendet? - Master: https://juejin.im/post/5bf4fc84f265da611b57f906
Welche Rolle spielt der Postprozessor? - Spring-Bean-Postprozessor BeanPostProcessor: https://www.jianshu.com/p/f80b77d65d39
Spring-Bean-Bereich, wann der Anforderungsbereich verwendet werden soll. - Im Detail lesen: https://blog.csdn.net/icarus_wang/article/details/51586776
Sag mir das Ergebnis dieser Frage?
1 package com.giveu.web;
2
3 public class VolatileTest {
4 public static volatile int race = 0;
5
6 public static void increase() {
7 race++;
8 }
9
10 private static final int THREADS_COUNT = 10;
11
12 public static void main(String[] args) {
13 Thread[] threads = new Thread[THREADS_COUNT];
14 for (int i = 0; i < THREADS_COUNT; i++) {
15 threads[i] = new Thread(new Runnable() {
16 @Override
17 public void run() {
18 for (int i = 0; i < 10000; i++) {
19 increase();
20 }
21 }
22 });
23 threads[i].start();
24 }
25 while (Thread.activeCount() > 1) {
26 Thread.yield();
27 }
28 System.out.println(race);
29 }
30
Nach dem Login kopieren
-
Das Programm endet nicht und es erfolgt kein Ausdruck.
Verwandte Empfehlungen:
Java-Einführungs-Tutorial
Das obige ist der detaillierte Inhalt vonFragen zum Java-Interview 2019 (Tencent). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!