Golang
Go'da heap жана stack ортосундагы айырма эмнеде жана ар бири кандай колдонулат?
Goдогу goroutine планалоочу кандай иштейт (GMP модел)? GMP моделинде M эмне?
Окуучу каналды жабса жана жазуучу дагы жазып жатса, эмне болот? Паникадан кантип сактануу керек?
Компаниянын өнүмдөрү менен мурда тааныш болдубу? Белгилүү бирөө иштейт беле?
Жаңы номенклатура (жаңы товар) Redisте пайда болушу керекпи?
Узак убакыт бооруп, акырында ишке ашпаган же жыйнакталган нерсе болгон эмеспи?
Өзүңүздү деңгээлдер — Middle, Middle+, Senior чегинде кандай баалайсыз?
Хеш таблицасы эмне?
Goда жабык каналга жазуу мүмкүнбү?
Түшүнүксүз тапшырма же абал менен беттешкен учурду жана көрсөтмөлөрдү күтпөстөн аракет кылууга мажбур болгон учурду баяндаңыз.
Таза каналдан окуу учурунда түбөлүк блоктонуудан кантип сакталуу керек? Select деген эмне жана анын үлгүлөрү кандай?
Программалоодо кагылыштарды болтурбоого жардам берген механизмдер барбы?
Go планировщусу кайсы түрдүү көп тапшырмалуулук колдонулат? Эки түрдүү көп тапшырмалуулук барбы?
Go-дөгү сап эмне?
type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex N int K time.Duration } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { if len(b.backends) == 0 { return nil, fmt.Errorf("Байланыштардын саны слайста 0") } b.mu.Lock() index := b.index for b.backends[index].banned { b.index = (b.index + 1) % len(b.backends) index = b.index } b.index = (b.index + 1) % len(b.backends) b.mu.Unlock() backend := b.backends[index] resp, err := backend.Backend.Invoke(ctx, req) if err != nil && backend.countErrors < b.N { backend.mu.Lock() backend.countErrors += 1 if backend.countErrors == b.N { backend.banned = true go func() { time.Sleep(b.K) backend.mu.Lock() defer backend.mu.Unlock() backend.banned = false backend.countErrors = 0 }() } backend.mu.Unlock() } return resp, err } // addrs бардык балансировкаланган мисалдардын даректери func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Бул тапшырмада бизге эмне үчүн WaitGroup керек?
Go'догу интерфейс деген эмне? Duck typing кантип иштейт? Интерфейстин ишке ашырылышын компиляция учурунда текшерсе болобу?
HTTP суроолор менен параллелдүү иштөө үчүн worker pool менен URL-дардын слайсин иштетүүчү код жазгыла.
Кайтарууларды жана төлөмдөрдү кантип иштеттиңиз?
init-контейнерлер жана sidecar-контейнерлер деген эмне?