Golang
Что такое микросервисная архитектура и какие плюсы-минусы по сравнению с монолитом?
Работаете?
Расскажи про стажировку: как долго работал стажёром, когда перешёл на полную ставку, что было с учёбой?
Что было самой технически сложной задачей, над которой тебе прям голову пришлось сломать?
Что вы знаете о программе мультитрек Яндекса?
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("Кол-во backends в слайсе 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) } }
В чём разница между процессами, потоками и горутинами в Go?
Знаешь понятие негативный кеш?
Есть ли способ управлять и тюнить stop-the-world сборщик мусора в Go?
Как ты относишься к дежурствам? Был ли у тебя такой опыт?
Есть ли моменты, которые могут демотивировать в работе, помимо уже озвученного?
Что такое GMP-модель планировщика Go?
Что такое переменные окружения? Зачем нужны?
Что такое выравнивание структур в Go? Как оптимизировать поля структуры по памяти?
Как передаются аргументы в функцию — по значению или по ссылке?
На чём писал на JavaScript — чистый JS или какой-то фреймворк, например React?
Расскажи про свою текущую работу: что там делал и какая зона ответственности?
Как безопасно обращаться к одному участку памяти из нескольких горутин? Когда использовать мьютексы, а когда атомики?
Что тебе нравится в работе? Что драйвит?
func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }