Әртүрлі ұйымдарда сұхбаттасу процесінің қай кезеңдерінде бұл сұрақ жиі қойылады?
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 // Producer интерфейсі { // Next қайтаруы керек: // - өңделетін топтама // - өңдеу аяқталған соң бекіту үшін cookie // - қате // Next() (items []any, cookie int, err error) // Commit() деректер топтамасын өңделген деп белгілеу үшін // Commit() error // } // Consumer интерфейсі { // Process() топтаманы өңдеу // 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 // }
Алгоритмнің уақыт пен жад бойынша күрделілігі қандай?