Golang
// Adott egy egész számokat tartalmazó nums tömb és egy egész számot target // Két számot kell találni, amelyek összege megegyezik a targettel, és vissza kell adni azok indexeit // Feltételezzük, hogy pontosan egy megoldás létezik, és ugyanazt az elemet nem lehet kétszer használni // A választ bármilyen sorrendben vissza lehet adni // Példák: // [2,7,11,15], target = 9, válasz [0,1] (nums[0] + nums[1] == 9) // [3,2,4], target = 6, válasz [1,2] (nums[1] + nums[2] == 6) // [3,3], target = 6, válasz [0,1] (nums[0] + nums[1] == 6)
Vannak indexek ebben a táblában?
func fetch(ctx context.Context, u User) (string, error) { // hálózaton valamit csinálunk time.Sleep(time.Millisecond * 10) // késleltetés szimulálása return u.Name, nil //return "", errors.New("valamilyen hiba") } func Do(ctx context.Context, users []User) (map[string]int64, error) { var mu sync.Mutex var wg sync.WaitGroup ch := make(chan error, len(users)) names := make(map[string]int64, 0) ctxWithCancel, cancel := context.WithCancel(ctx) wg.Add(len(users)) for _, u := range users { go func() { defer wg.Done() select { case name, err := fetch(ctx, u): if err != nil { ch <- err return } mu.Lock() names[name] = names[name] + 1 mu.Unlock() case <-ctxWithCancel.Err: } }() }
Milyen dokumentációt írsz egy új szolgáltatás fejlesztése során?
Mi történik, amikor egy nem inicializált (nil) csatornába írunk?
Mi az a `<-ch` szerkezet a Go-ban?
Mi a különbség a virtualizáció és a konténerizáció között?
/* Egy mikroservice architektúrával rendelkező alkalmazás létezik. Egy mikroservice-t az Backend interfész segítségével lehet absztrahálni. A mikroservice példányhoz való hozzáféréshez használhatja a már megvalósított BackendImpl típust. Minden mikroservice-hez több tucat futó példány tartozik, amelyek mind saját címen érhetők el, addr. Azonban az egyes mikroservice példányok nem megbízhatóak: lehetnek leállások, nem elérhetők vagy túlterheltek. Ezért meg kell valósítania a Balancer típust, amely amely szintén megvalósítja a Backend interfészt, és kliensoldali terheléselosztást végez a mikroservice példányok között, választva minden alkalommal a **legkevésbé terhelt** példányt. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr egy adott példány ip:port címe func NewBackend(addr string) *BackendImpl type Balancer struct { //TODO } var _ Backend = &Balancer{} // addrs tartalmazza az összes kiegyensúlyozott példány címét func NewBalancer(addrs []string) *Balancer { //TODO }
Használta már valamelyik felhőszolgáltatást? Yandex, Google, AWS vagy más felhőszolgáltatások?
fő csomag import ( "fmt" ) func main() { c := make(chan string, 1) go fmt.Println(<-c) c <- "Helló Világ!" fmt.Println("Kimenet!") } fatális hiba: minden goroutine alvó állapotban - deadlock! goroutine 1 [csatorna fogadás]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a A program kilépett: státusz 2.
JSON-címkékkel ellátott modell (pl. RegisterUserRequest) domain modell? Hogyan válasszuk szét helyesen a DTO-t és a domain entitást?
Mi az a Latency, Throughput, MTU és Keep-Alive?
Lehet-e EXPLAIN ANALYZE-t csinálni a produkcióban?
Honnan érkeznek az adatok? Vannak logisztikusok, akik küldik az adatokat, és tároljátok őket?
Mi a DaemonSet működési logikája?
Milyen összegtől kezdve fontolóra veszed az ajánlatot?
Hogyan készíthetünk generikus (bármilyen értéktípussal működő) adatstruktúrát Go-ban?
Miért rossz, ha a Gorutinek szinkronizálás nélkül írnak adatokat egy közös térképre, és hogyan lehet ezt kijavítani?
Milyen volt a rendszer terhelése és hány paraméter volt minden kérésben?
Milyen lehetőségek voltak a DLQ-ból származó üzenetek manuális feldolgozása után? Technikai szempontból mit csináltál velük?