Sobes.tech

Data Analyst

Kur realiame gyvenime pasitaiko normalusis pasiskirstymas ir kur ne? Pateikite konkrečius pavyzdžius su paaiškinimu, kodėl duomenys yra normaliai paskirstyti arba ne.

123

Parašykite Python kodą, kuris vienu praeiti skaičiuoja dviejų RLE suspaustų vektorių skaliarinį sandaugą.

122

Paaiškinkite sum_series užduoties sprendimo logiką: kaip sukurti dviejų laiptelių laiko eilių sumą?

119

Afanasy jau 2 savaites dirbo rašydamas kodą, kuris gali spręsti japonų kryžiažodžius su devynių spalvų palaikymu, kai kitame susitikime kolega pranešė, kad jis pats gali susidoroti su užduotimi greičiau, ir programoje jau nėra prasmės. Bet Afanasy, kaip optimistas, nusprendė dar labiau įsigilinti į šią užduotį ir padaryti tai — apskaičiuoti, kaip gerai kolega susidoroja su kryžiažodžiais. Šiai įvertinimui jis pasirinko tam tikrą IoU metrikos analogą — skaičiavimas vyks panašiai kaip klasikinis Intersection Over Union, bet pagal spalvas. Tai veikia taip: kiekvienas sutampantis originalo ir sprendimo langelis pagal spalvą prideda 1 į skaitiklį, o į vardiklį pridedama 1 už kiekvieną tokį langelį originale ir sprendime (suderiniai langeliai prideda tik vieną). Po to bus skaičiuojamas vidurkis pagal spalvų skaičių originalo paveikslėlyje, suapvalintas iki dviejų skaitmenų po kablelio; nulis nėra spalva, todėl skaičiavimuose nereikėtų skaičiuoti metrikoje tų spalvų langelių. Pirmoje eilutėje nurodoma, kiek eilučių n ir stulpelių m turi originalus vaizdas. Tada seka 2n eilutės, kuriose yra po m skaičius, atskirtus tarpais — pirmieji n eilutės yra siunčiama sprendimo kryžiažodis, o vėlesni n — originalus vaizdas. Manoma, kad kiekvienoje eilutėje, pradedant nuo antros, yra tiksliai m skaičių. Kaip atsakymą išveskite vieną skaičių, suapvalintą iki dviejų skaitmenų po kablelio, kaip pavyzdžiuose. Keletas pavyzdžių: 1. Pirmas pavyzdys [phone] -> 1.0 Paaiškinimas: sutampančių ir nesutampančių langelių indėlis (1.0 + 1.0 + 1.0 + 1.0) / spalvų skaičius (4) 2. Antras pavyzdys [phone] -> 0.08 Paaiškinimas: sutampančių ir nesutampančių langelių indėlis (0.25 + 0.0 + 0.0) / spalvų skaičius (3); nulių neskaityti, nei kaip langelių reprezentacijose, nei spalvų skaičiuose. 3. Trečias pavyzdys [phone] čia prasideda siunčiamas vaizdas [phone] -- čia baigiasi siunčiamas vaizdas 0 1 2 -- čia prasideda originalus vaizdas [phone] -> 0.47 Paaiškinimas: sutampančių ir nesutampančių langelių indėlis (0.4 + 0.5 + 0.5) / spalvų skaičius (3); nulių neskaityti nei kaip langelių reprezentacijose, nei spalvų skaičiuose. 4. Ketvirtas pavyzdys [phone] -> 0.0 Paaiškinimas: sutampančių ir nesutampančių langelių indėlis (0.0) / spalvų skaičius (1); nulių neskaityti nei kaip langelių reprezentacijose, nei spalvų skaičiuose.

119

Koks yra loginis FROM, JOIN, GROUP BY ir SELECT vykdymo tvarkos šioje SQL užklausoje?

118

val_a, val_b = 0, 0 t = None kol i < a ilgiausio arba j < b ilgiausio: a_next = a[i][0] jei i < a ilgiausio kita float('inf') b_next = b[j][0] jei j < b ilgiausio kita float('inf') eik 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 სხვა: 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

116

Pseudo kodas 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

115

Kaip rinkti ground truth atsakymus geometrijos benchmarkui?

114

-- Apie naudotojams išsiųstas reklamos kampanijas: -- 2.1 Parašykite užklausą, kuri rodo, kiek naudotojų sėkmingai gavo komunikaciją, kiekvienai kampanijai. -- 2.2 Pakeiskite užklausą, kad būtų rodomas: naudotojų skaičius, kurie galų gale ne gavo jokios sėkmingos komunikacijos, kiekvienai kampanijai. -- 3. Į komunikacijų lentelę pridėtas dar vienas laukas – event_timestamp – komunikacijos pristatymo įvykio data ir laikas '%Y-%m-%d %H:%M:%S' formatu. -- Visoms kampanijoms, įskaitant ir nesukurtas, apskaičiuokite rodiklį: naudotojų dalį, kuriems sėkmingas žinutės pristatymas įvykdytas iš pirmo karto. -- Gali būti naudojamos lango funkcijos ar ne, bet svarbu, kad užklausa būtų optimali.

112

Aiškiai išvardinkite kriterijus, kurie turi būti įvykdyti, kad duomenys turėtų normalų pasiskirstymą.

111

Kaip sukonfigūruotumėte A/B testą naujo paieškos algoritmo patikrinimui? Kaip nustatyti reikalingą imties dydį ir testo trukmę?

111

Kaip vadinamas SQL rūšiavimo operatorius ir kada jis vykdomas? Kur yra LIMIT vykdymo tvarkoje?

109

A. Prefiksai ir Suffixai Duotas surūšiuotas masyvas iš n nulinių elementų. Kiekviename žingsnyje galite pasirinkti bet kokį pirmųjų arba paskutinių šio masyvo elementų skaičių ir pridėti vieną prie visų pasirinkto elemento. Ar įmanoma pasiekti nurodytą masyvo būseną po tam tikro skaičiaus tokių operacijų? Įvesties formatas Pirmoje eilutėje yra sveikas skaičius 1 ≤ n ≤ 100000 — masyvo elementų skaičius. Antroje eilutėje yra n nulių arba teigiamų sveikųjų skaičių a1, a2, ..., an, atskirtų tarpais, kur ai ≤ 10^18 — norimi galutiniai elementai. Išvesties formatas Spausdinkite "YES", jei tokia būsena yra pasiekiama, ir "NO" jei ne. Pavyzdys Įvestis [phone] Išvestis YES Pastaba [phone] būsenos galima pasiekti taip: pridedant vieną prie pirmųjų trijų elementų, gaunama [phone] pridedant vieną prie paskutinių keturių elementų, gaunama [phone] pridedant vieną prie paskutinio elemento, gaunama [phone]

108

Pseudo kodas 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

-- Rinkodaros specialistai pradeda reklamos kampanijas programėlėje. Yra dvi lentelės: -- campaigns – kampanijų sąrašas -- - campaign – kampanijos pavadinimas -- - action_type – kampanijos tipas: "push" arba "banner" -- communications – backend žurnalas su šių kampanijų siuntimais naudotojams -- - user_id – naudotojo identifikatorius -- - campaign – kampanijos pavadinimas -- - status – įvykio būsena: "success" arba "error" --------------------------------------------------------------------------- -- 1. Iš pradžių, lentelėje campaigns yra 4 eilutės: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- atsitiktinai dubliuota -- | promo_cats | banner | -- | promo_cats | banner | <- dvi eilutės -- | promo_rats | push | -- Taip pat žinoma, kad: -- kampanijos promo_dogs ir promo_cats buvo sėkmingai įgyvendintos 100 naudotojų, ir kiekvienas naudotojas gavo po vieną komunikaciją, -- o promo_rats tik planuojama. -- 1.1 Ką parodys užklausa: 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 AS campaign -- 1.2 Kaip pasikeis atsakymas, jei pakeisti JOIN tipą į LEFT?

105

Kas yra benchmark ir kaip įvertintumėte daugialypio modelio kokybę?

103

Ar [pavadinimas] akcijų grąža bus normaliai paskirstyta? (Minutės kainų padidėjimai visoje prekybos istorijoje nuo 2000 iki 2026 metų)

99

-- Kampanijų lentelė buvo pataisyta: pašalinti dubliuojami įrašai, pridėtas raktas (PK). -- Buvo vykdoma daugiau kampanijų, dėl klaidų vartotojai pradėjo patirti nesėkmingus komunikacijų pristatymo bandymus, o kai kuriems net nepavyko parodyti. -- Apie naudotojams siunčiamas promo kampanijas: -- 2.1 Parašykite užklausą, kuri rodo sėkmingai gautų naudotojų skaičių kiekvienai kampanijai. -- 2.2 Pakeiskite užklausą, kad būtų rodomas: naudotojų skaičius, kurie galutinai negavo jokios sėkmingos komunikacijos, kiekvienai kampanijai. -- Pridėtas papildomas laukas į communications lentelę – event_timestamp – komunikacijos pristatymo įvykio data ir laikas formatu '%Y-%m-%d %H:%M:%S'. -- Visoms kampanijoms, įskaitant neįgyvendintas, apskaičiuokite rodiklį: naudotojų dalį, kuriems sėkmingas pranešimo pristatymas įvykdytas iš pirmo karto. -- Gali būti naudojamos lango funkcijos, arba ne, bet svarbu, kad užklausa būtų optimali.

98

D. Kinų fejerverkai Vladimiras įsigijo 3 kinų fejerverkų rinkinį. Jie atrodo visiškai vienodi ir sumaišyti dėžutėje, tačiau pagal instrukcijas, jie turi skirtingą patikimumą: 1. "Elitas" — broko dažnis 10% (sėkmės tikimybė 0.9). 2. "Standartas" — broko dažnis 20% (sėkmės tikimybė 0.8). 3. "Ekonomika" — broko dažnis 40% (sėkmės tikimybė 0.6). Vladimiras atsitiktinai paima pirmąjį fejerverką, uždega jį, ir jis sėkmingai veikia. Laimingas Vladimiras nusprendžia paleisti likusius du vienas po kito. Kokia tikimybė, kad ir antrasis, ir trečiasis fejerverkai taip pat sėkmingai veiks — be broko? Apvalinkite atsakymą iki trijų dešimtųjų vietų.

98
/3