Sobes.tech

Қазіргі уақытта қандай жалақы диапазонын қарастырып жатырсың?

Middle
10

Реляциялық және реляциялық емес деректер базасы дегеніміз не және олар бір-бірінен неге айырмашылықты?

Senior
10

PostgreSQL-мен қаншалықты жұмыс істедіңіз: тек сұраулар жазу ғана ма, әлде деректер базасын баптау, бөлу, шардтау, кластерлерді орналастыру да ма?

Senior
10

Қайсысы нәтижелік каналды оқиды және ол қайда нәтижені жазады, сонда Status әдісі оған қол жеткізе алады?

9

PostgreSQL жалпы қалай құрылымдалған?

Senior
8

Go-да бос интерфейс қалай көрінеді және оны функция аргументі ретінде берсеңіз не болады?

Senior
6

Жалақыдан күтулеріңіз қандай: сынақ мерзімінде ыңғайлы минимум?

6

// ең жақсы() функциясы үшін код үзіндісі // ешқандай артқы жүйе жоқ болған жағдайда қате өңдеу

5

PostgreSQL-да қандай индекстер қолданылады?

Senior
5

Тасаввур қилинг, маълумотлар S3 ёки ташқи сақлашда сақланган, аммо уларни маълумотлар базасига ёзиш мумкин бўлмади. Нима нотўғри бўлиши мумкин ва нима қилардингиз?

Middle
4

Queue әдісін жүзеге асырыңыз

4

Неліктен ауысқың келеді және басқа компанияларды қарастырып жатырсың?

Middle
4

// ең жақсы() функциясы үшін код үзіндісі // ешқандай артқы жүйе жоқ болған жағдайда қате өңдеу

3

Неге 2GIS-пен байланыс орнатуға шешім қабылдадыңыз? Компания немесе нақты вакансия сізді неге қызықтырды?

Middle
3

Деректер базасында бір уақытта деректерге қатынау бойынша жұмыс істедіңіз бе? Қандай механизмдерді қолдандыңыз, мысалы, транзакциялар мен блоктар? Бұл мәселені деректер базасын қатыстырмай шешудің жолдары бар ма?

Senior
3

// ең жақсы() функциясы үшін код үзіндісі // ешқандай артқы жүйе жоқ болған жағдайда қате өңдеу

3

Бұл кодта қалай өңделеді?

Senior
3

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr содержит ip:port конкретной экземпляра func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { data := make([]*backentry,len(addrs)) for i,addr := range addrs{ data[i] = &backentry{ backend: NewBackend(addr), inflight: 0, } } return &Balancer{backends:data} } func(b *Balancer)Invoke(ctx context.Context, req Request) (Response, error){ b.mu.Lock() entry := b.best() atomic.AddInt64(&entry.inflight,1) b.mu.Unlock() defer atomic.AddInt64(&entry.inflight,-1) return entry.backend.Invoke(ctx,req) } func(b *Balancer) best() *backentry{ var best *backentry for _,entry := b.backends{ if best == nil || atomic.LoadInt64(&entry.inflight) < atomic.LoadInt64(&best.inflight){ best = entry } } return best }

2
/420