Milyen programozási nyelveket használsz a Go mellett?
Golang
Most dolgozik vagy sem, és milyen formátumban: iroda, hibrid, távoli?
/* 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 }
func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) n := len(s) for right := 0; right < n; right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }
Milyen teljesítménymutatókat használt az utolsó projektben végzett munkája értékelésekor?
""" A mozik helyek egy sorban vannak elrendezve. Egy néző, aki éppen érkezik, kiválaszt egy helyet, hogy a lehető legtávolabb üljön a többi nézőtől a sorban. Vagyis, a helytől,\nahol ülni fog, a legközelebbi nézőig terjedő távolságnak maximálisnak kell lennie. Biztosítva van, hogy mindig vannak szabad helyek a sorban, és már legalább egy néző ül. Írjon egy függvényt, amely a megadott helyek sorozata (nullák és egyek tömbje) alapján visszaadja a távolságot (a székek közötti számokat) a kiválasztott helytől a legközelebbi nézőig. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }
Milyen tapasztalatai vannak az azonosítási és jogosultsági rendszerek bevezetésében és beállításában?
Mi a különbség az L4-es és az L7-es terheléselosztó között?
""" 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.
/* * Egy egész számokat tartalmazó tömb és egy X szám adott, * meg kell találni a leghosszabb nem üres al-tömböt, amelynek minimuma X. * Visszaadja ennek az al-tömbnek a hosszát vagy -1-et, ha ilyen nincs. */
Hogyan határozzák meg a Map adatstruktúrába kulcs szerint történő elem hozzáadásának végrehajtási idejét?
Melyik projektet válasszuk technikai interjúhoz, és hogyan írjuk le?
Hogyan lehet vizuálisan vagy algoritmikusan meghatározni, hogy egy elem egyedi-e a Map adatszerkezetben?
Miért van szükség két if ellenőrzésre (a 79. sorban és a len(buf)==MaxItems sorban), egy helyett?
// Két egész számokat tartalmazó tömb esetén N hosszúságú, // minden K értékre 1-től N-ig, számolja meg a közös számokat a K hosszúságú prefixekben. // A tömbben lévő számok ismétlődhetnek, az metszet számítása a sokszorosságokat figyelmen kívül hagyva történik. // Az A tömb K hosszúságú prefixe az A tömb első K eleme // A [1, 1] => [1], [1, 1] // B [1, 1] => [1], [1, 1] // R [1, 1] // [1, 2, 5] => [1], [1, 2], [1, 2, 5] // [1, 5, 4] => [1], [1, 5], [1, 5, 4] // [1, 1, 2]
Milyen kérés-szám mutató volt elérhető adatírás közben?
[név] jelezte: a 20. sorban a uniq nem az egyedi karakterek számát tartalmazza, hanem valami mást. Pontosan mit?
Milyen mutatója volt az adatolvasás során másodpercenkénti műveletek számának, amit elért vagy elemeztél?
// Két rendezett nem csökkenő sorrendben lévő egész számokból álló sorozat van. // Vissza kell adni az első sorozat összes olyan elemét, amelyek nem szerepelnek a másodikban. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }
Hogyan mozgatjuk az ablakot a sliding window algoritmusban?