Sobes.tech

Go тілінде тапсырма жазу — практикалық бөлім (әзірлеушінің өмірінен тапсырмалар, алгоритмдерсіз): сервисді жетілдіру немесе түзету. Ұзақтығы — 1,5 сағат.

202

JWT қолданғанда клиент, авторизация микросервісі және дүкен микросервісі арасындағы өзара әрекеттесу қалай болады? Ал JWT болмаса, сессиялармен не өзгереді?

201

Сіздердің жалақыдан күтулеріңіз қандай?

201

Жұмыс тәжірибеңіз туралы айтып беріңіз және не істейсіз?

201

AeroHotels жобасы туралы айтыңыз: соңғы архитектура, сіз қалай бэкендті жобаладыңыз?

200

Қабатталған архитектура дегеніміз не және ол сіздің жобаңызда қалай ұйымдастырылды?

198

Команда құрамы қандай болды? Бұл монофункционалды ма, әлде кросс-функционалды ма?

198

Қазіргі уақытта өзіңіз үшін қызықты болатын қандай лауазымды қарастырып жатырсыз?

197

Груминг және ол жоспарлаудан қалай ерекшеленеді?

195

Міндет: LLM-ге 5 параллель сұраулар шектеуі бар қызмет бар. 6-шы сұрау келгенде, 429 қатесі пайда болады. Бұл мәселені концептуалды түрде қалай шешуге болады?

193

/* Қосымшасы микросервистік архитектураға ие. Микросервис Backend интерфейсі арқылы абстракциялануы мүмкін. Бір микросервисінің бір экземпляріне қол жеткізу үшін ол бұрын жүзеге асырылған BackendImpl типін қолдануға болады. Әр микросервис үшін бірнеше ондаған іске қосылған экземплярлар бар, олардың әрқайсысы өз мекенжайы addr арқылы қол жетімді. Алайда, жеке экземплярлар сенімсіз: олар құлап қалуы, қол жетімсіз болуы немесе жүктемелі болуы мүмкін. Сондықтан, сіз Balancer типін жүзеге асыруыңыз керек, ол да Backend интерфейсін жүзеге асырады және клиент жағындағы жүктемені теңестіруді жүзеге асырады микросервис экземплярлары арасында, әр уақытта **ең аз жүктелген** экземплярды таңдай отырып. */ type Request interface{} 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 Balancer struct { //TODO } var _ Backend = &Balancer{} // addrs барлық балансқа салынатын экземплярлардың мекенжайларын қамтиды func NewBalancer(addrs []string) *Balancer { //TODO }

192

Қандай жұмыс форматын қарастырасыз?

192

Қаржылық күтулеріңіз қандай?

192

Функция қалай жоспарлау, әзірлеу, тестілеу, кодты қарау, шығарылым және кері қайтару кезеңдерінен өтеді?

189

/* берілген жол символдардан тұрады. i және j индекстерінің санын табыңыз (i <= j), олардың арасында қайталанатын символдар жоқ. "aba" үшін жауап 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */

189

Сіз Яндекс мультитрек бағдарламасы туралы не білесіз?

187

Сіз есеп айырысу бойынша жобада LLM-ді қалай енгіздіңіз? Жалпы әдісіңізді бөлісіңіз.

187

Сыртқы LLM-ге жіберу алдында жеке деректермен қалай жұмыс істедіңіз?

186

/* Берілген жол символдардан тұрады. i және j индекстерінің санын табыңыз (i <= j), олардың арасында қайталанатын символдар жоқ. "aba" жолы үшін жауап 5: ASCII болуы мүмкін [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */

185

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 Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex } 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 if b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) return resp, err } // addrs барлық балансқа салынатын экземплярлардың мекенжайларын қамтиды func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))

185
/11