Sobes.tech

Data Analyst

Қалыпты таралу нақты өмірде қайда кездеседі, ал қайда кездеспейді? Нақты мысалдармен және деректердің неге қалыпты таралғанын немесе таралмағанын түсіндіріңіз.

126

Геометрия бойынша бенчмарк қалай жасар едіңіз? Идеядан бастап соңғы деректер жиынтығына дейінгі тізбекті сипаттаңыз.

126

val_a, val_b = 0, 0 t = None while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next < b_next: val_a = a[i][1] t = a[i][0] i += 1 elif b_next < a_next: val_b = b[j][1] t = b[j][0] j += 1 else: val_a = a[i][1] val_b = b[j][1] t = a[i][0] i += 1 j += 1 result.append((t, val_a + val_b)) return result

123

Екі RLE-сығылған вектордың скалярлық көбейтіндісін бір өту арқылы есептейтін Python кодын жазыңыз.

123

SQL-да сұрыптау операторы қалай аталады және ол қашан орындалады? Орындау тәртібінде LIMIT қайда орналасқан?

123

Afanasy екі апта бойы тоғыз түсті қолдауымен жапон крест сөздерін шешуге қабілетті код жазумен айналысты, команда жиналысында әріптесі оған бұл тапсырманы өзі тезірек орындай алатынын айтты, ал бағдарлама енді мағынасыз болды. Бірақ Афанасий, оптимист ретінде, осы тапсырманы әрі қарай жаттығуды шешті және келесіні жасады — әріптесінің крест сөздерін қаншалықты жақсы шеше алатынын бағалау. Бұл бағалау үшін ол IoU метрикасының аналогын таңдады — есептеу классикалық Intersection Over Union-ға ұқсас болады, бірақ түстер бойынша. Ол қалай жұмыс істейді: түстер бойынша, түпнұсқа және шешімдегі сәйкес келетін әрбір ұяшық 1-ді санақта қосады, ал алғышартта, әрбір ұяшық үшін, түпнұсқа және шешімде 1 қосылады (сәйкес ұяшықтар үшін, тек біреуі қосылады). Содан кейін, түпнұсқа суреттегі түстер саны бойынша орта есептеу жүргізіледі және екі ондық орынға дейін дөңгелектеледі; нөл түстер ретінде қарастырылмайды, сондықтан бұл түстің ұяшықтары үшін метриканы есептеуге болмайды. Кіріс бірінші жолда n жолдар саны мен m бағандар саны (сол тәртіпте) көрсетіледі. Содан кейін, 2n жол келеді, олар m санымен бөлінген — алғашқы n жол жіберілген крест сөздерге, ал келесі n — түпнұсқа суретке тиесілі. Әр жол, екінші жолдан бастап, дәл m санды қамтиды деп есептеледі. Жауап ретінде, мысалдардағыдай, екі ондық орынға дейін дөңгелектелген санды шығарыңыз. Міне, бірнеше мысал: 1. Бірінші мысал [phone] -> 1.0 Түсіндірме: сәйкес келетін және сәйкес келмейтін ұяшықтардың үлесі (1.0 + 1.0 + 1.0 + 1.0) / түстер саны (4) 2. Екінші мысал [phone] -> 0.08 Түсіндірме: сәйкес келетін және сәйкес келмейтін ұяшықтардың үлесі (0.25 + 0.0 + 0.0) / түстер саны (3); нөлдер есепке алынбайды, н neither ұяшықтар ретінде, neither түстер саны ретінде. 3. Үшінші мысал [phone] жіберілген сурет басталады [phone] — жіберілген сурет аяқталады 0 1 2 — түпнұсқа сурет басталады [phone] -> 0.47 Түсіндірме: сәйкес келетін және сәйкес келмейтін ұяшықтардың үлесі (0.4 + 0.5 + 0.5) / түстер саны (3); нөлдер есепке алынбайды, neither ұяшықтар ретінде, neither түстер саны ретінде. 4. Төртінші мысал [phone] -> 0.0 Түсіндірме: сәйкес келетін және сәйкес келмейтін ұяшықтардың үлесі (0.0) / түстер саны (1); нөлдер есепке алынбайды, neither ұяшықтар ретінде, neither түстер саны ретінде.

123

sum_series тапсырмасын шешу логикасын түсіндіріңіз: екі қадамды уақыттық қатарлардың сомасын қалай құруға болады?

121

Псевдокод sum_series(a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}}) -> {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}} def sum_series(a, b): result = [] i , j = 0, 0 val_a, val_b = 0, 0 while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next <= b_next: val_a = a[i][1] t = a[i][0] i += 1 else: val_b = b[j][1] t = b[j][0] j += 1 result.append((t, val_a + val_b)) return result

121

B. Алдыңғы және соңғы бөлімдер N нөлдерден тұратын сұрыпталған массив берілген. Әр қадамда, сіз бұл массивтің алғашқы немесе соңғы бірнеше элементін таңдап, барлық таңдалған элементтерге бір қосуға болады. Мұндай операциялардың белгілі бір саны өткен соң, массивтің көрсетілген күйіне жету мүмкін бе? Кіріс форматы Бірінші жолда бүтін сан 1 ≤ n ≤ 100000 — массивтегі элементтердің саны. Екінші жолда, бос орынмен бөлінген n санды нөлден басқа бүтін сандар a1, a2, ..., an беріледі, мұнда ai ≤ 10^18 — қажетті соңғы элементтер. Шығу форматы Егер мұндай күй қол жетімді болса, "YES" деп шығарыңыз, ал егер болмаса, "NO" деп шығарыңыз. Мысал Кіріс [phone] Шығыс YES Ескертпе [phone] күйіне келесі жолдармен жетуге болады: бірінші үш элементке бір қосу арқылы, нәтижесінде [phone] соңғы төрт элементке бір қосу арқылы, нәтижесінде [phone] соңғы элементке бір қосу арқылы, нәтижесінде [phone]

116

Жаңа іздеу алгоритмін бағалау үшін A/B тестін қалай орнатар едіңіз? Қажетті үлгі мөлшері мен тест ұзақтығын қалай анықтайсыз?

115

Геометрия бойынша бенчмарк үшін ground truth жауаптарын қалай жинайсыз?

114

-- Пайдаланушыларға жіберілген промо-кампаниялар туралы: -- 2.1 Әр кампания үшін коммуникацияны сәтті алған пайдаланушылардың санын шығаратын сұрау жазыңыз. -- 2.2 Сұрауды өзгертіп, әр кампания үшін ешқандай сәтті коммуникация алмаған пайдаланушылардың санын шығарыңыз. -- 3. communications кестесіне event_timestamp деген қосымша өріс қосылды – коммуникация жеткізілген уақыт пен күн, '%Y-%m-%d %H:%M:%S' форматында. -- Барлық кампаниялар үшін, оның ішінде іске қосылмағандар да, келесі көрсеткішті есептеңіз: бірінші рет жеткізу сәтті болған пайдаланушылардың үлесі. -- Ойындар функцияларын қолдануға болады, немесе қолданбауға да болады, бірақ сұрауды тиімді жазу маңызды.

113

Деректердің қалыпты таралуы үшін қандай критерийлер орындалуы керек?

111

Сізде сұхбат берушіге сұрақтар бар ма?

110

Псевдокод sum_series(a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}}) -> {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}} def sum_series(a, b): result = [] i , j = 0, 0 val_a, val_b = 0, 0 while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next < b_next: val_a = a[i][1] t = a[i][0] i += 1 else: val_b = b[j][1] t = b[j][0] j += 1 result.append((t, val_a + val_b)) return result

108

-- Маркетологтар қолданбада промо-кампанияларды іске қосады. Екі кесте бар: -- campaigns – кампаниялар тізімі -- - campaign – кампания атауы -- - action_type – кампания түрі: "push" немесе "banner" -- communications – бұл кампаниялар бойынша пайдаланушыларға жіберілген коммуникациялар логі -- - user_id – пайдаланушы идентификаторы -- - campaign – кампания атауы -- - status – оқиға статусы: "success" немесе "error" --------------------------------------------------------------------------- -- 1. Бастапқыда, campaigns кестесінде 4 жол бар: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- кездейсоқ қайталанған -- | promo_cats | banner | -- | promo_cats | banner | <- екі жол -- | promo_rats | push | -- Сонымен қатар, белгілі болғандай: -- promo_dogs және promo_cats кампаниялары 100 пайдаланушыға сәтті өткізілді, және әр пайдаланушыға бір коммуникация берілді, -- ал promo_rats тек жоспарлануда. -- 1.1 Бұл сұрау қандай нәтиже береді: SELECT campaign, COUNT(*) as rows, COUNT(DISTINCT co.user_id) AS users FROM campaigns AS ca INNER JOIN communications AS co ON ca.campaign = co.campaign GROUP BY ca.campaign -- 1.2 Егер JOIN түрін LEFT-ке өзгерту қалай әсер етеді?

107

Бенчмарк дегеніміз не және мультимодальды модельдің сапасын қалай бағалар едіңіз?

107

Акциялардың қайтарымы қалыпты таралуы мүмкін бе? (2000 жылдан 2026 жылға дейін минуттік бағалардың өсуі)

101

-- 2. Кампаниялар кестесі түзетілді: қайталанатын жазбалар жойылды, негізгі кілт (PK) қосылды. -- Көптеген кампаниялар жүргізілді, және қателіктер салдарынан пайдаланушылар коммуникацияны жеткізу сәтсіздіктерін бастан кешіре бастады, ал кейбіреулері мүлде көрсетілмеді. -- Пайдаланушыларға жіберілген промо-кампаниялар туралы: -- 2.1 Әр кампания үшін коммуникацияны сәтті алған пайдаланушылар санын шығаратын сұрау жазыңыз. -- 2.2 Сұрауды өзгертіңіз, ол әр кампания үшін ешқандай сәтті коммуникацияны алмаған пайдаланушылар санын шығару керек. -- 3. communications кестесіне event_timestamp деген қосымша өріс қосылды – коммуникация жеткізу оқиғасының күні мен уақыты '%Y-%m-%d %H:%M:%S' форматында. -- Барлық кампаниялар үшін, оның ішінде іске қосылмағандар да, келесі көрсеткішті есептеңіз: бірінші рет жеткізу сәтті болған пайдаланушылардың үлесі. -- Оны window функцияларын пайдалана отырып немесе пайдаланбау арқылы жасауға болады, бірақ сұрауды оңтайлы жазу маңызды.

99

D. Қытай фейерверктері Владимир 3 қытай фейерверкін сатып алды. Олар дәл бірдей көрінеді және қорапта араласып жатыр, бірақ нұсқауларға сәйкес, олардың әртүрлі сенімділігі бар: 1. "Элиталық" — ақау деңгейі 10% (сәттілік ықтималдығы 0.9). 2. "Стандарт" — ақау деңгейі 20% (сәттілік ықтималдығы 0.8). 3. "Эконом" — ақау деңгейі 40% (сәттілік ықтималдығы 0.6). Владимир кездейсоқ бірінші фейерверкті алады, оны тұтатады, және ол сәтті іске асады. Бақытты болған Владимир қалған екі фейерверкті бірінен соң бірін іске қосуға шешім қабылдайды. Екінші және үшінші фейерверктің де сәтті іске қосылу ықтималдығы — ақаусыз? Жауапты үш ондыққа дейін дөңгелектеңіз.

99
/3