Sobes.tech

Golang

Milyen szakaszokban teszik fel ezt a kérdést különböző szervezetek interjú folyamatában?

Intern — Junior
329

Hogyan történnek a lekérdezések a PostgreSQL adatbázishoz?

Junior — Middle
324

Melyik volt a legnagyobb adatbázis projekt, amit meg kellett valósítanod vagy támogatnod kellett?

Junior — Middle
321

Hány írási kérés érkezett másodpercenként az adatokhoz?

305

Mely rétegbe helyezik a klienseket külső szolgáltatások és rendszerek esetén?

293

Melyik volt a leghosszabb ideig tartó projekt, amin dolgozott?

Junior — Middle
286

Milyen tapasztalatai vannak a több szálas és párhuzamos számításokat használó alkalmazások fejlesztésében?

Junior — Middle
279

Tudsz tájékozódni a hosztokról? Hány hoszt, hány konténer fut?

274

Hogyan szervezed meg az architektúrát egy kéréshez, amely végrehajtja az üzleti logikát, hív egy külső szolgáltatást (Google), és elmenti az eredményt az adatbázisba? Írd le rétegenként lefelé.

272

Milyen sok példányban/tárolóban működött a szolgáltatás?

266

Milyen elv alapján csökkentjük vagy növeljük a have számlálót?

262

Hogyan történik az adatok csatlakoztatása és megjelenítése a Grafanában?

Junior — Middle
258

func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }

243

Mi a különbség az L4-es és az L7-es terheléselosztó között?

239

Most dolgozik vagy sem, és milyen formátumban: iroda, hibrid, távoli?

239

Mekkora az algoritmus idő- és memóriaigénye?

237

Milyen teljesítménymutatókat használt az utolsó projektben végzett munkája értékelésekor?

Junior — Middle
236

""" A mozi helyei egy sorban vannak elrendezve. Egy éppen érkező néző kiválaszt egy helyet, hogy a lehető legtávolabb üljön a többi nézőtől a sorban. Vagyis, a helytől, ahol ülni fog, a legközelebbi nézőig tartó távolságnak maximálisnak kell lennie. Garantált, hogy mindig vannak szabad helyek, és már legalább egy néző ül. Írjon egy függvényt, amely adott egy helysort (nullák és egyesek tömbje), és visszaadja a (ülések közötti számú szabad helyet) a kiválasztott helytől a legközelebbi nézőig.

235

/* Szükségünk van adatok átadására egyik forrástól a másikhoz. A forrás kis csomagokban (~tíz rekord) adja az adatokat, míg a fogyasztó hatékonyabban működik nagyobb csomagokkal. Egy valós példa a Kafka típusú sorokból történő adatátvitel a Clickhouse adatbázisba. Forrás: - Szinte végtelen. - A forrás soha nem ad vissza több mint MaxItems rekordot egy Next hívásban. - Egy "munkamenet" (egy Pipe függvényhívás) során a forrás minden Next hívásnál új adatokat ad vissza. - Azonban újraindítás után a forrás a korábbi "megerősített" pozícióból kezd, amit cookie jelez. Ezért minden cookie érték, amit a Next visszaad, az adatok tárolása után, Commit hívással kell megerősíteni, ugyanabban a sorrendben, ahogyan a Next visszaadta. Fogyasztó: - Egyszerre nem dolgozhat több mint MaxItems-t. Alapszint: Implementálni kell a func Pipe(p Producer, c Consumer) error függvényt, ami adatokat olvas a forrásból, azokat MaxItems méretű bufferbe csoportosítja és a fogyasztóba menti, majd a forrásban a haladást megerősíti. */ const MaxItems = 9999 type Producer interface { // Next visszaad: // - egy csomagot az adatokból // - egy cookie-t, amit a feldolgozás végén kell megerősíteni // - hibát Next() (items []any, cookie int, err error) // Commit a feldolgozott csomag megerősítésére szolgál Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

234
/11