Golang
Hogyan valósul meg a Go-ban a pánik állapotok kezelése és a vészhelyzetek által okozott hibák kezelése?
Mit csináltak pontosan a duplikátumokkal a felfedezés után? Hol tisztították őket?
Milyen módszereket és eszközöket használtál a rendszerek terhelési problémáinak elemzéséhez és okainak meghatározásához?
Milyen parancsokat szoktál használni Linux operációs rendszerben?
Milyen megközelítéseket lehet alkalmazni a szálbiztonság biztosítására több szálas környezetben a szeletekkel való munkavégzés során?
Milyen műveletek megengedettek nil szelettel való munkavégzéskor a programozási nyelvben?
Mesélj egy nehéz feladatról, amit meg tudtál oldani egy Linux rendszerhez írt szkripttel
Hogyan lehet szabályozni a cache-ben tárolt adatok mennyiségét?
Készség arra, hogy az egyetlen Backend szakértő szerepét töltse be a csapatban
Mi az alapvető oka annak, hogy a sync.Map típust használjuk Go-ban?
Milyen jó gyakorlatok és antipatternek vannak az egységtesztelésben? Hogyan lehet felismerni, hogy a tesztek jók?
Mik az előnyei és hátrányai a cache használatának rendszerekben?
func Exclude(a, b []int) []int { set := make(map[int]struct{}) for _, v := range b { set[v] = struct{}{} } result := make([]int, 0) for _, v := range a { if _, ok := set[v]; !ok { result = append(result, v) } } return result } Fordítási hiba # command-line-arguments ./main.go:39:32: szintaktikai hiba: váratlan sorvége, { várható az if feltétel után
Szorultál-e már azzal, hogy különböző szolgáltatások közötti interakciókat valósítson meg?
Hogyan történik a szelet (slice) átadása egy függvénynek egy programozási nyelvben?
Mi az a Saga minta?
Miért nem vették igénybe a Testcontainers-t?
/* 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 }
Egy (id PRIMARY KEY, data JSON) táblázat — elég jó a PostgreSQL index a kulcs szerinti kereséshez?
Mi a különbség a virtualizáció és a konténerizáció között?