Sobes.tech

Golang

Hoe worden berichten verwerkt die naar offlinegebruikers worden gestuurd?

139

Heeft u gebruik gemaakt van openbare clouds? Zo ja, welke providers en diensten?

139

/* We moeten gegevens van een bron naar een ontvanger overbrengen. De bron geeft gegevens in kleine batches (~tien records), terwijl de ontvanger efficiënter werkt met grote batches (~duizend records). Een echt voorbeeld is het overzetten van gegevens van Kafka-achtige wachtrijen naar een Clickhouse-database. Bron: - Bijna oneindig. - De bron geeft nooit meer dan MaxItems records terug in één Next-aanroep. - Tijdens één "sessie" (één aanroep van de Pipe-functie) geeft de bron bij elke Next-aanroep nieuwe gegevens. - Na een herstart begint de bron vanaf de vorige "bevestigde" positie, bepaald door cookie. Daarom moet elke cookie-waarde die Next teruggeeft, na het opslaan van gegevens in de ontvanger, worden bevestigd met een Commit-aanroep, in dezelfde volgorde als waarin ze door Next werden teruggegeven. Ontvanger: - Kan niet meer dan MaxItems tegelijk verwerken. Het is nodig om de functie func Pipe(p Producer, c Consumer) error te implementeren, die gegevens uit de bron leest, deze groepeert in een buffer van niet groter dan MaxItems en opslaat in de ontvanger, waarna de voortgang in de bron wordt bevestigd. */ const MaxItems = 9999 type Producer interface { // Next geeft: // - een batch van items om te verwerken // - cookie om te bevestigen wanneer de verwerking is voltooid // - fout Next() (items []any, cookie int, err error) // Commit wordt gebruikt om de gegevensbatch als verwerkt te markeren Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

139

Hoe controleer je of het venster alle benodigde tekens bevat?

139

Vertel ons over je recente projecten en de gebruikte technologische stack.

138

4 - accepteer snel inkomende taken, 5 - geef het resultaat van de taak op verzoek terug 6 - als er geen resultaat is, geef de juiste status terug /* Processor - een service die een lange, resource-intensieve operatie uitvoert. Het is al geïmplementeerd De fouten die het teruggeeft, zijn uitsluitend gerelateerd aan onjuiste invoergegevens, stabiel en het opnieuw aanvragen is zinloos */ type Processor interface { Process([]byte) ([]byte, error) } /* We gaan ervan uit dat we een generator van unieke identificaties (bijvoorbeeld UUID) hebben. De generator garandeert dat er geen botsingen zullen zijn */ type ID string // func NewID() ID /* De scheduler accepteert taken van klanten, plaatst ze in de wachtrij en start de verwerking. Zorgt ervoor dat niet meer dan 'threads' methoden van verwerking gelijktijdig worden uitgevoerd Biedt de mogelijkheid om de status van de taak te controleren en het resultaat te krijgen blokkeert zijn openbare methoden voor verwerking niet */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // initialisatie logica return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // implementatie return "" }

136

Beschrijf het algoritme voor het oplossen van het probleem maxSegment

136

Vertel eens, wat gebeurt er uiteindelijk — hoe accumuleren we de buffer?

135

Is het correct dat je momenteel in [stad] woont en het voor jou handig zou zijn om in een hybride formaat met kantoorbezoeken te werken?

129

Heb je ervaring met het schrijven van programma's met multithreading of asynchrone operaties?

128

Welke anti-patronen in microservice-architectuur ken je?

127

[naam] vroeg: bij het behouden van de positie van een element kleiner dan X, wat wordt de positie?

126

Als je een baan aangeboden krijgt en accepteert, hoe snel zou je klaar zijn om te beginnen met werken?

125

Laten we een voorbeeld bekijken: first=[1,1,2], second=[1,2]. Wat moet jouw algoritme teruggeven en werkt het correct met duplicaten?

125

De load balancer moet begrijpen dat de backend fouten antwoordt, en bij het overschrijden van een drempel voor een bepaalde tijd, deze uitsluiten van de load balancing (Circuit Breaker)

124

Heeft u ervaring met het ontwikkelen en ondersteunen van gedistribueerde systemen?

122

Met welke databases of andere gegevensopslag heb je gewerkt? Hoeveel verzoeken per seconde (RPS) voor schrijven en lezen?

122

Heeft u tijdens uw hele loopbaan leiderschaps taken gedaan?

122

Wat was de grootste hoeveelheid opgeslagen gegevens?

119
/11