Sobes.tech

Golang

Dokumentumfrissítések érkeznek a szolgáltatáshoz message Document { string Url = 1; // A dokumentum URL-je, egyedi azonosítója uint64 PubDate = 2; // a dokumentum bejelentett közzétételi ideje uint64 FetchTime = 3; // ennek a dokumentumfrissítésnek az időpontja, verzióazonosítóként értelmezhető. A (Url, FetchTime) pár egyedi. string Text = 4; // a dokumentum szövege uint64 FirstFetchTime = 5; // kezdetben hiányzik, ki kell tölteni } A dokumentumok tetszőleges sorrendben érkezhetnek (nem a frissítésük sorrendjében), és lehetnek duplikált üzenetek. A kimeneten ugyanazokat az üzeneteket kell létrehozni, de a következő szabályok szerint javított mezőkkel (az alábbiak mindegyike ugyanazzal a Url mezővel rendelkező dokumentumcsoportokra vonatkozik): A Text és FetchTime mezőknek a legnagyobb eddig kapott FetchTime-hoz kell igazodniuk. A PubDate-nek a legkisebb FetchTime-hoz kell igazodnia. A FirstFetchTime-nek a legkisebb FetchTime értékének kell lennie. Más szóval, minden pillanatban a FetchTime szerint rendezett első verzióból származó PubDate és FirstFetchTime, valamint a legutóbbi verzió Textje kerül kiválasztásra. A kód interfésze így valósítható meg: type Processor interface { Process(doc *Document) (*Document, error) } Ez a kód egy olyan szolgáltatásban fog működni, amely üzeneteket olvas egy sorból (Kafka vagy hasonló), és az eredményt szintén a sorba írja. Ha a Process null értéket ad vissza, akkor semmi sem kerül a sorba.

Senior
VKVK
76

Van tapasztalatod a gRPC és a GraphQL terén? Mesélj róluk.

Senior
X5 techX5 tech
76

Ismered a Loop terméket?

Middle
wilix
76

Hogyan viszonyulsz a szolgálatokhoz? Volt már ilyen tapasztalatod?

Senior
ozon_tech
76

Hogyan nézett ki pontosan az optimista zárolási útvonal a Kafka-ból érkező üzenet fogadásától a adatbázis frissítéséig?

Senior
КасперскийКасперский
76

Hogyan kapod meg a feladatokat, kitől érkeznek?

Middle+
SelectelSelectel
76

Milyen adatbázisokkal dolgoztál, és milyen SQL-lekérdezéseket tudsz írni?

Middle+
Лига Цифровой ЭкономикиЛига Цифровой Экономики
76

Hogyan használtad a Kafka-t és a RabbitMQ-t brókerként? Miért kettő?

Senior
Ozon ФинтехOzon Финтех
76

Hogyan párhuzamosíthatjuk a logok feldolgozását worker pool használatával? Hogyan kapjuk meg az eredményeket a goroutine-októl?

Middle+
X5 groupX5 group
76

Mi az array és slice a Go-ban, miben különböznek? Hogyan működik az append és a capacity bővítése?

Senior
ClearWay
76

Mi az replikáció előnye? Milyen költségekkel jár?

Senior
ВайлдберрисВайлдберрис
76

Hatással van-e valamit a csatorna buffer mérete a worker poolban?

Senior
WildberriesWildberries
76

Hogyan lépjen kapcsolatba a külső körvonalon lévő kereskedőkkel?

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

Milyen szinkronizációs eszközök vannak a Go több szálas programozásában?

Senior
I-teco
76

Milyen adatokat tároltak a Redisben, és hogyan értették meg, hogy a hirdetések forrók?

Senior
Cloud.ru
76

Miért használjunk interfészeket?

Middle+
Napoleon IT
76

Nézd meg a fenti adatbázis-sémát — mit lehet hozzáadni, vagy minden rendben van?

Middle
СитиДрайвСитиДрайв
76

Hiba és nil interfésszel rendelkező feladat: mit fog kiírni a kód különböző nil hozzárendelési módokkal?

Senior
Flant
76

Milyen jó gyakorlatok és antipatternek vannak az egységtesztelésben? Hogyan lehet felismerni, hogy a tesztek jók?

Middle+
X5
76

Mesélj a Go ütemező GMP-modelljéről.

Middle
RWB
76
/412