Golang
Ce se întâmplă dacă pornești 5 trilioane de goroutines? Cum optimizezi?
În ce variant de conversie de tip este posibilă panică și ce construcție permite evitarea acesteia?
Care sunt dezavantajele transmiterii unei entități prin context în Go?
De ce ai intrat pe piață și ce este important acum atunci când alegi un nou angajator, un nou proiect? Există o diferență fundamentală între fintech și retail?
Povestiți-mi despre experiența dvs. cu PostgreSQL: ați proiectat scheme, ați optimizat interogări, ați administrat?
Ai construit analize în timp real sau ce scopuri ai urmărit inițial?
Ce impact ai avut asupra proiectelor anterioare?
De ce Go? Cu ce ai început, cum ai ajuns la acest limbaj?
Ce primitive de sincronizare a goroutine-urilor există în Go?
Ce mijloace de sincronizare în Go cunoști?
Ce știți despre compania VES?
Actualizările documentelor sosesc la serviciu message Document { string Url = 1; // URL-ul documentului, identificatorul său unic uint64 PubDate = 2; // timpul de publicare declarat al documentului uint64 FetchTime = 3; // timpul de primire a acestei actualizări a documentului, poate fi considerat ca un identificator de versiune. Perechea (Url, FetchTime) este unică. string Text = 4; // textul documentului uint64 FirstFetchTime = 5; // inițial absent, trebuie completat } Documentele pot ajunge în orice ordine (nu în ordinea în care au fost actualizate), și pot exista mesaje duplicate. Este necesar să se formeze în ieșire mesaje identice, dar cu câmpuri corectate conform următoarelor reguli (tot ce este mai jos se aplică pentru un grup de documente cu același câmp Url): Câmpul Text și FetchTime trebuie să fie cele ale documentului cu cel mai mare FetchTime primit până acum. Câmpul PubDate trebuie să fie cel al mesajului cu cel mai mic FetchTime. Câmpul FirstFetchTime trebuie să fie egal cu valoarea minimă a FetchTime. Cu alte cuvinte, în fiecare moment, luăm PubDate și FirstFetchTime din prima versiune primită până acum (dacă le sortăm după FetchTime), și Text din ultima. Interfața în cod poate fi implementată astfel: type Processor interface { Process(doc *Document) (*Document, error) } Acest cod va funcționa într-un serviciu care citește mesaje dintr-o coadă (Kafka sau similar), și scrie și rezultatul în coadă. Dacă Process returnează Null, nimic nu se scrie în coadă.
Cum ai influențat schimbarea procesului cu analiza?
Ce este contextul în Go și la ce folosește?
Cu ce ai lucrat cel mai des? Ce tehnologii ai folosit?
Poți gestiona o panică într-unul dintre deferi?
Se pot adăuga sau elimina elemente dintr-un map în timpul procesului de evacuare?
Ați folosit atât gRPC, cât și REST sau doar gRPC?
De ce este o sarcină dificilă din punct de vedere tehnic? De ce nu o funcție de 100 de linii?
Dat un array sortat de numere care conține elemente duplicate. Este necesar să eliminați duplicatele in-place (direct în array-ul original) și să returnați dimensiunea array-ului rezultat. Exemplu: Input: nums = [0,0,1,1,1,2,2,3,3,4] Output: 5, nums = [0,1,2,3,4,_,_,_,_,_] Explicație: În acest array există 5 elemente unice. Plasați-le în primele cinci poziții ale array-ului original și returnați numărul 5. Elementele ulterioare în array-ul original pot fi orice.