Төрттүрдүү уюмдарда интервью процесинин кайсы этаптарында бул суроо-талап көбүнесе берилет?
Golang
PostgreSQL маалыматтар базасына суроолор кантип аткарылат?
Эң чоң маалыматтар базасы долбоору кайсы болду, аны ишке ашырган же колдоо көрсөткөн?
gRPC иштөө принцибин жана анын негизги өзгөчөлүктөрүн түшүндүрө аласызбы?
Маалыматтарга секундка канча жазуу суроо-талаптар келип түшчү?
Клиенттер сырткы кызматтар жана системалар үчүн кайсы катмарда жайгаштырылат?
Эң узак мөөнөттүү долбоор кайсы болду?
Хосттор жөнүндө маалымат бере аласызбы? Канча хост жана канча контейнер ишке киргизилет?
Көп жип жана параллелдик эсептөөлөрдү колдонгон колдонмолорду иштеп чыгууда кандай тажрыйбаңыз бар?
Бизнес логиканы ишке ашырып, тышкы кызмат (Google) менен байланышып, натыйжаны маалыматтар базасына сактай турган суроо үчүн архитектураны кантип уюштуруш керек? Жогоркудан төмөнкүгө катмарларга бөлүңүз.
Кызмат кайсы канча инстанция/контейнерде иштеди?
Grafanaда маалыматтарды туташтыруу жана көрсөтүү кандай жүргүзүлөт?
Кандай принципке ылайык have эсептегичин азайтуу же көбөйтүү керек?
func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }
Азыр иштеп жатасызбы же жокпу, жана кайсы форматта: кеңсе, гибрид, алыстан?
L4 жана L7 жүктү теңдештирүүчүсүнүн айырмасы эмнеде?
Акыркы долбоордо ишиңизди баалоо үчүн кайсы натыйжалуулук көрсөткүчтөрүн колдондуңуз?
Алгоритмдин убакыт жана эс тутум боюнча татаалдыгы кандай?
""" Кинотеатрдагы орундар бир сапта жайгашкан. Жаңы келген көрүүчү орунду тандоодо, сапта калган башка көрүүчүлөрдөн эң алыс отуруу үчүн тандайт. Демек, ошол орундан, алардын эң жакын көрүүчүсүнө болгон аралык максималдуу болушу керек. Ар дайым бош орундар бар жана кеминде бир көрүүчү отургандыгы кепилденет. Берилген орундар сапы (нөлдөр жана бирлер массиви) боюнча, тандалган орундан эң жакын көрүүчүсүнө болгон аралыкты (орундар арасындагы боштуктардын саны) кайтарган функция жазгыла. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """
/* Бізге деректерді белгілі бір көзден белгілі бір тұтынушыға беру керек. Бұл кезде көз шағын топтамалармен береді (~ он шақты жазбалар), ал тұтынушы үлкен батчтармен тиімді жұмыс істейді. Шынайы мысал - 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 }