Sobes.tech

Эмне кэштелди? Кайсыдыр каталогторбу?

Senior
МВидео/эльдорадо
166

/* Бізге деректерді белгілі бір көзден белгілі бір тұтынушыға беру керек. Бұл кезде көз шағын топтамалармен береді (~ он шақты жазбалар), ал тұтынушы үлкен батчтармен тиімді жұмыс істейді. Шынайы мысал - Kafka тәрізді кезектерден деректерді Clickhouse базасына жеткізу. Көз: - Шартты түрде шексіз. - Көз бір шақыруда MaxItems-ден көп жазбаны қайтармайды. - Бір "сессия" (бір Pipe функциясының шақыруы) ішінде көз әр шақыруда жаңа деректер қайтарады. - Алайда, қайта іске қосқаннан кейін көз алдыңғы "расталған" позициядан бастайды, ол cookie арқылы анықталады. Сондықтан, әрбір cookie мәні, Next шақыруы қайтарғаннан кейін, қабылдауда сақталғаннан кейін, Commit арқылы бекітілуі керек, және ол дәл сол тәртіпте орындалуы керек, қайсысы бірінші қайтарылса. Қабылдаушы: - Бір ретте MaxItems-ден көп өңдей алмайды. Негізгі деңгей: func Pipe(p Producer, c Consumer) error функциясын жүзеге асыру керек, ол деректерді көзден оқиды, оларды MaxItems-ден аспайтын буферге топтастырады және қабылдағышқа сақтайды, содан кейін прогресті көзде бекітеді. */ const MaxItems = 9999 type Producer interface { // Next қайтаруы керек: // - өңделетін элементтер тобы // - растайтын cookie // - қате Next() (items []any, cookie int, err error) // Commit - өңделген деректер тобын белгілеу үшін Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

Middle
Яндекс
166

Түз менен иштешкен компаниялар же жеткирүүчүлөрдү тизмектей аласызбы?

Junior — Middle
166

Акыркы иш оруучу жайыңыз тууралуу айтып бериңиз: эмне менен алектендиңиз, кайсы стекти колдондуңуз, кыйынчылык жараткан тапшырмалар кандай болду?

Middle
OZONOZON
166

Go тилинде slice деген эмне?

Middle
Бюро 1440Бюро 1440
166

gRPCте колдонулган негизги чакыруунун түрлөрүн тизмелеп бере аласызбы?

Junior — Middle
СБЕР дейвайсыСБЕР дейвайсы
166

Жабык режим орнотулган каналдан маалымат алуу уруксатпы?

Junior — Middle
ГазпромГазпром
X5 groupX5 group
AvitoAvito
+1
166

Kafkaда белгилүү бир бөлүмгө түздөн-түз жазуу мүмкүнбү, хештөө үчүн ачкычты өткөрүп жиберүү менен?

Junior — Middle
Самокат Тех
166

Маалыматтар түзүмүнүн, мисалы, тизмек же массивдин акырында элемент кошуу механизмин түшүндүрө аласызбы?

Junior — Middle
Lamoda Tech
Startribe
Самокат Тех
+2
166

Программа ишке ашырылганда стекке кандай маалыматтар жана кандайча жайгаштырылат?

Junior — Middle
166

Жобаларыңызда кайсы кэштоо ыкмаларын колдонуп жатасыз жана эмнеге?

Junior — Middle
166

Материалдаштырылган көрүнүш менен жөнөкөй көрүнүштүн айырмасы эмнеде?

Middle
RWB
165

Байланыштуу тизмектин түзүлүшүнө кайсы компоненттер кирет?

Junior — Middle
165

Map маалыматтар түзүмүндө ачкыч боюнча элемент кошуу операциясынын аткаруу убактысы кандай аныкталат?

Junior — Middle
ЯндексЯндекс
165

Неге көбінесе жіптердің бастапқы стек өлшемі 2 МБ-ға орнатылады?

Junior — Middle
165

Эргруп структурасын долбоорлоруңузда параллель тапшырмаларды башкаруу үчүн колдондуңузбу?

Junior — Middle
165

Практикаңызда кандайча сирек кездешкен же стандартка кирбеген пакеттерди колдондуңуз?

Junior — Middle
165

Неге бөлүктүн өсүшү жайлайт жана эмне үчүн аны дайыма эки эсеге көбөйтүү мүмкүн эмес?

Middle
RWB
165

GitLab CI/CD иш процесинде буйруктардын ишке ашырылышы кайда болот?

Junior — Middle
165

Программалык камсыздоону долбоорлоодо SOLID принциптерин сактабоо менен кандай кесепеттер болушу мүмкүн?

Junior — Middle
Zonatelecom
165
/413