Sobes.tech

С какви бази данни или други хранилища на данни сте работили? Колко заявки в секунда (RPS) за запис и четене?

124

Имали ли сте опит в разработването и поддръжката на разпределени системи?

122

Какъв е максималният товар в заявки на секунда, който е обработвал най-натовареният сервиз? Правилно ли е, че е до 5–8 хиляди заявки на секунда?

122

С кои бази данни и други системи за съхранение на данни сте работили?

120

Какъв беше най-големият обем на съхраняваните данни?

119

В кое направление бихте се интересували да се развивате по отношение на задачи и кариера?

112

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

106

Защо разглеждате нови предложения и защо напуснахте предишната си компания?

106

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

98

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

96

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

92

Кой чете резултатния канал и къде пише резултата, за да може методът Status да има достъп до него?

90

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 }

88

На колко хоста или инстанции работеше услугата? Колко контейнера бяха стартирани?

88

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

87

Реализирайте метода Queue

82

Как да реализирате метода Status, за да получите състоянието на задачата по ID?

76

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

67

Реализирайте метода Queue

63

// търсим най-доброто -- ??? // ако не намерите, сравнете inflight

54
/11