Sobes.tech

Golang

Ce framework-uri, standarde și pachete folosești în Go?

Senior
wilix
122

Care este diferența dintre fire de execuție și procese?

Senior
AvitoAvito
122

Vorbește despre MVCC (Controlul Concurenței Multi-Versiune) în PostgreSQL.

Senior
А7
122

Cum se poate implementa suma variantelor de tipuri (type sum) în limbajul Go?

Junior — Middle
122

Cum se limitează numărul de apeluri ale worker-ului de polling dacă API-ul este plătit?

Senior
OZONOZON
122

Ce nivel de engleză ai?

Senior
IBS
122

Vorbește-mi despre Redis

Senior
Uzum
122

Ați fost nevoit să luați decizii arhitecturale pe cont propriu?

Senior
CRTEX
122

Explicați conceptul de sistem de fișiere virtual și scopul său principal.

Junior — Middle
Rubytech
122

Cum se scrie o interogare pentru a obține utilizatorul cu penultimul salariu?

Senior
Магнит Тех
122

Cum se gestionează în planificator dacă nu este o solicitare de rețea, ci citirea dintr-un fișier?

Middle
RWB
122

/* Trebuie să transferăm date dintr-o sursă către un consumator. Sursa oferă date în loturi mici (~zece înregistrări), în timp ce consumatorul funcționează mai eficient cu loturi mari (~o mie de înregistrări). Un exemplu real este transferul de date din cozi de tip Kafka către o bază de date Clickhouse. Sursa: - Practic nelimitată. - Sursa nu returnează niciodată mai mult de MaxItems înregistrări într-un singur apel Next. - În cadrul unei "sesiuni" (un apel al funcției Pipe), sursa returnează date noi la fiecare apel Next. - Cu toate acestea, după repornire, sursa va începe de la poziția "confirmată" anterioară, indicată de cookie. Prin urmare, *fiecare* valoare de cookie returnată de Next, după salvarea datelor în receptor, trebuie confirmată cu un apel la Commit, în aceeași ordine în care au fost returnate de Next. Receptor: - Nu poate procesa mai mult de MaxItems odată. Nivel de bază: Este necesar să implementați funcția func Pipe(p Producer, c Consumer) error care citește date din sursă, le grupează într-un buffer de dimensiune cel mult MaxItems și le salvează în receptor, după care confirmă progresul în sursă. Dificultate: Metodele Next, Process și Commit sunt legate de apeluri de rețea și pot dura destul de mult. Pentru a accelera procesul, trebuie paralelizate procesele de citire, scriere și confirmare a progresului. Astfel, în timpul procesului Process sau Commit, citirea din sursă și formarea noului buffer continuă. */ const MaxItems = 9999 type Producer interface { // Next returnează: // - un lot de items de procesat // - un cookie pentru confirmare după finalizarea procesării // - o eroare Next() (items []any, cookie int, err error) // Commit este folosit pentru a marca un lot de date ca procesat Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

Senior
Яндекс
122

În companie te ocupai în principal de migrarea de la PHP la Go?

Middle+
Гоуланг
121

Ce niveluri de izolare a tranzacțiilor există?

Senior
Финтехробот
121

Spuneți-ne puțin despre dvs. — informații cheie pe care un potențial angajator ar trebui să le știe.

Middle
Graveling
121

Ce probleme apar în cazul în care există multe coliziuni?

Middle
RWB
121

Cum au fost utilizate RabbitMQ și ClickHouse?

Middle+
МВидео/эльдорадо
121

Vorbește despre slices în Go.

Middle
RWB
121

De ce ai decis să cauți ceva nou, de ce pleci din compania ta actuală?

Middle+
SelectelSelectel
121

Ce se întâmplă în INNER JOIN dacă un rând din stânga corespunde mai multor rânduri din dreapta?

Middle+
OZONOZON
121
/412