Sobes.tech

Data Analyst

Mi a logikus végrehajtási sorrendje a FROM, JOIN, GROUP BY és SELECT parancsoknak ebben az SQL lekérdezésben?

127

Hogyan hoznád létre a geometria benchmarkját? Írd le az ötlettől a végső adathalmazig tartó láncot.

126

Magyarázza el a sum_series feladat megoldásának logikáját: hogyan építjük fel két lépcsős idősort összeadva?

123

Hogy hívják az SQL-ben a rendezési operátort, és mikor hajtódik végre? Hol található a LIMIT a végrehajtási sorrendben?

123

Afanasy két hete dolgozott azon, hogy olyan kódot írjon, amely képes japán keresztrejtvényeket megoldani kilenc szín támogatásával, amikor egy csapatértekezleten egy kollégája elmondta neki, hogy ő maga gyorsabban tudja kezelni a feladatot, és már nincs értelme a programnak. De Afanasy, mint optimista, úgy döntött, hogy tovább gyakorolja ezt a feladatot, és a következőt teszi — felbecsüli, mennyire jól kezeli a kollégája a keresztrejtvényeket. Ehhez az értékeléshez egy IoU-metrika analógját választotta — a számítás hasonló lesz a klasszikus Intersection Over Union-hoz, de színek szerint. A működés a következő: minden egyező cella az eredetiben és a megoldásban szín szerint 1-et ad hozzá a számlálóhoz, és a nevezőben 1-et ad hozzá minden cellához az eredetiben és a megoldásban (egyező cellák esetén csak egyszer adódik hozzá). Ezután átlagot számol a színek számával az eredeti képen, két tizedesjegyre kerekítve; a nullát nem tekintjük színnek, így ezt a metrikát nem kell kiszámítani ennek a színnek a celláira. A bemenet az első sorban tartalmazza a sorok számát n és az oszlopok számát m (ebben a sorrendben). Ezután következik 2n sor, amelyek m számot tartalmaznak szóközzel elválasztva — az első n sor a beküldött keresztrejtvényt, a következő n — az eredeti képet. Feltételezzük, hogy minden sor a második sortól kezdve pontosan m számot tartalmaz. Válaszként írjon ki egy két tizedesjegyre kerekített számot, ahogy a példák mutatják. Íme néhány példa: 1. Első példa [phone] -> 1.0 Magyarázat: a megfelelt és nem megfelelt cellák hozzájárulása (1.0 + 1.0 + 1.0 + 1.0) / színek száma (4) 2. Második példa [phone] -> 0.08 Magyarázat: a megfelelt és nem megfelelt cellák hozzájárulása (0.25 + 0.0 + 0.0) / színek száma (3); a nullákat nem számoljuk, sem mint cellákat a reprezentációkban, sem a színek számában. 3. Harmadik példa [phone] ahol a beküldött kép kezdődik [phone] — ahol a beküldött kép végződik 0 1 2 — ahol az eredeti kép kezdődik [phone] -> 0.47 Magyarázat: a megfelelt és nem megfelelt cellák hozzájárulása (0.4 + 0.5 + 0.5) / színek száma (3); a nullákat nem számoljuk, sem mint cellákat a reprezentációkban, sem a színek számában. 4. Negyedik példa [phone] -> 0.0 Magyarázat: a megfelelt és nem megfelelt cellák hozzájárulása (0.0) / színek száma (1); a nullákat nem számoljuk, sem mint cellákat a reprezentációkban, sem a színek számában.

123

val_a, val_b = 0, 0 t = None amíg i < len(a) vagy j < len(b): a_next = a[i][0] ha i < len(a) másként float('inf') b_next = b[j][0] ha j < len(b) másként float('inf') ha 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 különben: 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

Írjon egy Python kódot, amely egyetlen áthaladás során kiszámítja két RLE-kompresszált vektor skaláris szorzatát.

123

Pseudo-kód 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. Előtagok és utótagok Adott egy rendezett tömb, amely n nulla értékű elemet tartalmaz. Minden lépésben kiválaszthatunk tetszőleges számú az első vagy utolsó elemből, és hozzáadhatunk egyet minden kiválasztott elemhez. Lehetséges-e elérni a megadott állapotot a tömbben egy bizonyos számú ilyen művelet után? Bemeneti formátum Az első sor egy egész számot tartalmaz, 1 ≤ n ≤ 100000 — a tömb elemeinek száma. A második sor n nemnegatív egész számot tartalmaz, a1, a2, ..., an, szóközzel elválasztva, ahol ai ≤ 10^18 — a kívánt végső értékek. Kimeneti formátum Írja ki, hogy "YES", ha ilyen állapot elérhető, és "NO", ha nem. Példa Bemenet [phone] Kimenet YES Megjegyzés Az [phone] állapotokat a következő módon lehet elérni: az első három elemhez hozzáadva egyet, így kapva [phone] az utolsó négy elemhez hozzáadva egyet, így kapva [phone] az utolsó elemhez hozzáadva egyet, így kapva [phone]

118

Hogyan gyűjtsük össze a ground truth válaszokat a geometriai benchmarkhoz?

116

Hogyan állítanál be egy A/B tesztet az új keresőalgoritmus tesztelésére? Hogyan határoznád meg a szükséges mintaméretet és a teszt időtartamát?

115

-- A felhasználóknak küldött promóciós kampányokról: -- 2.1 Írjon egy lekérdezést, amely megmutatja a sikeresen kommunikációt kapott felhasználók számát minden kampány esetében. -- 2.2 Módosítsa a lekérdezést, hogy megmutassa: azoknak a felhasználóknak a számát, akik végül nem kaptak sikeres kommunikációt, minden kampány esetében. -- 3. A communications táblához hozzáadtak egy további mezőt – event_timestamp – az esemény dátuma és időpontja a kommunikáció kézbesítéséről a '%Y-%m-%d %H:%M:%S' formátumban. -- Minden kampány esetében, beleértve a nem indítottakat is, számolja ki a metrikát: azoknak a felhasználóknak az arányát, akiknél az üzenet sikeres kézbesítése az első próbálkozásra megtörtént. -- Használhatók ablakfüggvények vagy nem, de fontos, hogy a lekérdezés optimális legyen.

113

Sorolja fel világosan azokat a kritériumokat, amelyeknek meg kell felelniük ahhoz, hogy az adatok normális eloszlást mutassanak.

111

Vannak kérdései az interjúztatóhoz?

110

Pseudo-kód 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

-- A marketingesek promóciós kampányokat indítanak a szolgáltatás alkalmazásában. Két táblázat van: -- campaigns – kampányok listája -- - campaign – a kampány neve -- - action_type – a kampány típusa: "push" vagy "banner" -- communications – a backend naplója ezeknek a kampányoknak a felhasználóknak történő küldéséről -- - user_id – felhasználói azonosító -- - campaign – a kampány neve -- - status – az esemény státusza: "success" vagy "error" --------------------------------------------------------------------------- -- 1. Kezdetben a campaigns táblában 4 sor van: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- véletlenszerűen duplikált -- | promo_cats | banner | -- | promo_cats | banner | <- két sor -- | promo_rats | push | -- Az is ismert, hogy: -- a promo_dogs és promo_cats kampányokat sikeresen végrehajtották 100 felhasználónál, és minden felhasználó kapott egy kommunikációt, -- míg a promo_rats csak tervezés alatt áll. -- 1.1 Mit fog mutatni a lekérdezés: 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 Hogyan változik a válasz, ha a JOIN típusát LEFT-re változtatjuk?

107

Mi az a benchmark és hogyan értékelnéd egy multimodális modell minőségét?

107

Az [név] részvények hozama normál eloszlásban lesznek? (Percenkénti árnövekedések a teljes kereskedési történet során 2000-től 2026-ig)

101

-- A kampányok táblázata javítva lett: duplikátumokat eltávolítottuk, kulcs (PK) hozzáadva. -- Több kampányt hajtottak végre, hibák miatt a felhasználók sikertelen kézbesítési kísérleteket tapasztaltak, és néhányan egyáltalán nem tudták megmutatni. -- A felhasználóknak küldött promóciós kampányokról: -- 2.1 Írjon egy lekérdezést, amely megmutatja a sikeresen kommunikációt kapott felhasználók számát minden kampány esetében. -- 2.2 Módosítsa a lekérdezést, hogy megmutassa: azoknak a felhasználóknak a számát, akik összesen nem kaptak sikeres kommunikációt, minden kampány esetében. -- A communications táblához hozzáadtak egy további mezőt – event_timestamp – az esemény dátuma és időpontja a kommunikáció kézbesítéséről a '%Y-%m-%d %H:%M:%S' formátumban. -- Minden kampány esetében, beleértve a nem indítottakat is, számolja ki a mutatót: azoknak a felhasználóknak az arányát, akiknek az üzenet sikeres kézbesítése az első próbálkozásra megtörtént. -- Használhatók ablakfüggvények, vagy nélkülük, de fontos, hogy a lekérdezés optimális legyen.

99

D. Kínai tűzijátékok Vladimir vásárolt egy 3 darab kínai tűzijáték készletet. Ezek pontosan ugyanúgy néznek ki, és egy dobozban keverednek, de az utasítások szerint különböző megbízhatósággal rendelkeznek: 1. "Elit" — hibaarány 10% (siker valószínűsége 0.9). 2. "Standard" — hibaarány 20% (siker valószínűsége 0.8). 3. "Gazdaság" — hibaarány 40% (siker valószínűsége 0.6). Vladimir véletlenszerűen kiválasztja az első tűzijátékot, meggyújtja, és sikeresen működik. Boldogan Vladimir úgy dönt, hogy a fennmaradó két tűzijátékot egymás után indítja. Mekkora a valószínűsége, hogy mindkét második és harmadik tűzijáték is sikeresen működik — hibátlanul? Kerekítse a választ három tizedesjegyre.

99
/3