Sobes.tech

Data Analyst

Coşqun üçün bir benchmark necə yaradardın? Fikirdən son məlumat dəstinə qədər zənciri təsvir et.

126

Hansı hallarda real həyatda normal paylanma ilə rastlaşırıq və hansı hallarda yox? Konkret nümunələr verin və izah edin niyə məlumatlar normal paylanıb və ya yox.

126

sum_series tapşırığının həll mexanizmini izah edin: iki pilləli zaman serisinin cəmini necə qurmaq olar?

123

SQL-də sıralama operatorunun adı nədir və o nə vaxt icra olunur? LIMIT icra sırasındakı yeri haradadır?

123

Afanasy iki həftə ərzində doqquz rəng dəstəyi ilə Yapon krossvordlarını həll edə biləcək kod yazmaq üzərində işləyirdi, komanda iclasında isə həmkarı ona dedi ki, o, bu işi daha sürətlə həll edə bilər və proqram artıq mənasızdır. Amma Afanasy, optimist olaraq, bu işi davam etdirməyə qərar verdi və aşağıdakıları etdi — həmkarının krossvordları nə qədər yaxşı həll etdiyini qiymətləndirmək. Bu qiymətləndirmə üçün o, IoU metrikasının analoqunu seçdi — hesablamalar klassik Intersection Over Union-ə bənzəyəcək, lakin rənglər üzrə. İş prinsipi belədir: orijinal və həlldə uyğun gələn hər bir hüceyrə rəng üzrə, paya əlavə 1, və payda isə, hər hüceyrə üçün, orijinal və həlldə 1 əlavə edilir (uyğun gələn hüceyrələr üçün yalnız bir dəfə əlavə olunur). Daha sonra, orijinal şəkildəki rənglərin sayı üzrə orta hesablanır və iki onluq yerə yuvarlanır; sıfır rəng kimi qəbul edilmir, ona görə bu rəngdəki hüceyrələr üçün metrik hesablanmamalıdır. Giriş, ilk sətirdə, n sətir və m sütun sayını (sıralama ilə) ehtiva edir. Sonra, 2n sətir gəlir, m ədədlər boşluqla ayrılmışdır — ilk n sətir göndərilmiş krossvord, və növbəti n — orijinal şəkil. Hər sətirin, ikinci sətirdən başlayaraq, tam olaraq m ədəd ehtiva etdiyinə inanılır. Cavab olaraq, nümunələrdə göstərildiyi kimi, iki onluq yerə yuvarlanmış bir ədəd çap edin. Budur bəzi nümunələr: 1. Birinci nümunə [phone] -> 1.0 İzah: uyğun və uyğun olmayan hüceyrələrin töhfəsi (1.0 + 1.0 + 1.0 + 1.0) / rəng sayı (4) 2. İkinci nümunə [phone] -> 0.08 İzah: uyğun və uyğun olmayan hüceyrələrin töhfəsi (0.25 + 0.0 + 0.0) / rəng sayı (3); sıfırlar, nə hüceyrələr kimi, nə də rəng sayı kimi sayılmır. 3. Üçüncü nümunə [phone] göndərilmiş şəkil başlayır [phone] — göndərilmiş şəkil bitir 0 1 2 — orijinal şəkil başlayır [phone] -> 0.47 İzah: uyğun və uyğun olmayan hüceyrələrin töhfəsi (0.4 + 0.5 + 0.5) / rəng sayı (3); sıfırlar, nə hüceyrələr kimi, nə də rəng sayı kimi sayılmır. 4. Dördüncü nümunə [phone] -> 0.0 İzah: uyğun və uyğun olmayan hüceyrələrin töhfəsi (0.0) / rəng sayı (1); sıfırlar, nə hüceyrələr kimi, nə də rəng sayı kimi sayılmır.

123

val_a, val_b = 0, 0 t = None i < len(a) və ya j < len(b) olana qədər: a_next = a[i][0] i < len(a) isə float('inf') b_next = b[j][0] j < len(b) isə float('inf') əgər 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 başqa: 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

Bir keçiddə RLE ilə sıxılmış iki vektorun skalar hasilini hesablayan Python kodu yazın.

123

Pseudo kod 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. Əvvəllər və Sona Hissələr N sıfırdan ibarət sıralanmış massiv verilib. Hər bir addımda, bu massivdən istənilən sayda ilk və ya son elementləri seçib, bütün seçilmiş elementlərə bir əlavə edə bilərsiniz. Belə əməliyyatların müəyyən sayından sonra, massivdə göstərilən vəziyyətə çatmaq mümkündürmü? Daxil etmə formatı İlk sətirdə 1 ≤ n ≤ 100000 olan tam ədəd verilir — massivdəki elementlərin sayı. İkinci sətirdə, boşluqla ayrılmış n ədəd sıfır olmayan tam ədəd a1, a2, ..., an verilir, burada ai ≤ 10^18 — istənilən son elementlər. Çıxış formatı Əgər belə bir vəziyyət əldə edilə bilirsə, "YES" çap edin, əks halda "NO". Misal Daxil etmə [phone] Çıxış YES Qeyd [phone] vəziyyətinə aşağıdakı kimi çatmaq olar: birinci üç elementə bir əlavə etmək, nəticədə [phone] son dörd elementə bir əlavə etmək, nəticədə [phone] son elementə bir əlavə etmək, nəticədə [phone]

116

Yeni axtarış alqoritmini yoxlamaq üçün A/B testini necə qurardınız? Lazımi nümunə ölçüsünü və testin müddətini necə təyin edərdiniz?

115

Coğrafiya üçün ground truth cavablarını necə toplamaq olar?

114

-- İstifadəçilərə göndərilən promosyon kampaniyaları haqqında: -- 2.1 Hər kampaniya üçün uğurla alınan kommunikasiya sayını göstərən sorğu yazın. -- 2.2 Sorğunu dəyişdirərək, ümumilikdə heç bir uğurlu kommunikasiya almayan istifadəçilərin sayını hər kampaniya üçün göstərin. -- 3. communications cədvəlinə əlavə bir sahə əlavə edildi – event_timestamp – kommunikasiya çatdırılma hadisəsinin tarixi və saatı '%Y-%m-%d %H:%M:%S' formatında. -- Bütün kampaniyalar üçün, o cümlədən başlamamış olanlar üçün, metrikanı hesablayın: uğurlu mesaj çatdırılmasının ilk cəhddə baş verdiyi istifadəçilərin nisbəti. -- Pəncərə funksiyalarından istifadə oluna bilər və ya olmaya bilər, amma sorğunun optimal olması vacibdir.

113

Məlumatların normal paylanışa malik olması üçün yerinə yetirilməli olan meyarları aydın şəkildə sadalayın.

111

İşəgötürənə suallarınız varmı?

110

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

-- Marketoloqlar servis tətbiqində promosyon kampaniyalarını başlatırlar. İki cədvəl mövcuddur: -- campaigns – kampaniya siyahısı -- - campaign – kampaniya adı -- - action_type – kampaniya növü: "push" və ya "banner" -- communications – bu kampaniyaların istifadəçilərə göndərilməsi ilə bağlı backend qeydiyyatı -- - user_id – istifadəçi identifikatoru -- - campaign – kampaniya adı -- - status – hadisənin vəziyyəti: "success" və ya "error" --------------------------------------------------------------------------- -- 1. Əvvəlcə, campaigns cədvəlində 4 sətir var: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- təsadüfi çoxaldılmış -- | promo_cats | banner | -- | promo_cats | banner | <- iki sətir -- | promo_rats | push | -- Həmçinin məlumdur ki: -- promo_dogs və promo_cats kampaniyaları 100 istifadəçi ilə uğurla həyata keçirilib və hər istifadəçi bir kommunikasiya alıb, -- və promo_rats yalnız planlaşdırma mərhələsindədir. -- 1.1 Sorğu nə göstərəcək: 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 JOIN növü LEFT-ə dəyişdirilərsə, cavab necə dəyişəcək?

107

Benchmark nədir və çox modlu modelin keyfiyyətini necə qiymətləndirərdin?

107

[Ad] səhmlərinin gəlirliliyi normal paylanacaqmı? (2000-dən 2026-cı ilə qədər ticarət tarixində dəqiqəlik qiymət artımları)

101

-- Kampaniyalar cədvəli düzəldildi: təkrarlamalar aradan qaldırıldı, açar (PK) əlavə olundu. -- Daha çox kampaniya keçirildi, xətalar səbəbindən istifadəçilər uğursuz çatdırılma cəhdləri ilə üzləşdilər və bəziləri heç göstərilmədi. -- İstifadəçilərə göndərilən promo kampaniyalar haqqında: -- 2.1 Hər kampaniya üçün uğurla çatdırılan istifadəçilərin sayını göstərən sorğu yazın. -- 2.2 Sorğunu dəyişdirin ki, hər kampaniya üçün heç bir uğurlu çatdırılma almayan istifadəçilərin sayını göstərin. -- Communications cədvəlinə əlavə sahə əlavə olundu – event_timestamp – çatdırılma hadisəsinin tarixi və vaxtı '%Y-%m-%d %H:%M:%S' formatında. -- Bütün kampaniyalar üçün, başlanmamışlar da daxil olmaqla, metrik hesablayın: uğurlu mesajın ilk cəhdində çatdırılması ilə nəticələnən istifadəçilərin nisbəti. -- Pəncərə funksiyalarından istifadə etmək olar və ya olmaya da bilər, amma sorğunun optimal olması vacibdir.

99

D. Çin atəşfəşanlığı Vladimir 3 Çin atəşfəşanlığı dəstini aldı. Onlar tamamilə eynidir və qutuda qarışıqdırlar, amma təlimatlara görə, fərqli etibarlılığa malikdirlər: 1. "Elit" — defekt faizi 10% (uğur ehtimalı 0.9). 2. "Standart" — defekt faizi 20% (uğur ehtimalı 0.8). 3. "Ekonom" — defekt faizi 40% (uğur ehtimalı 0.6). Vladimir təsadüfi olaraq ilk atəşfəşanlığı götürür, yandırır və uğurla işləyir. Xoşbəxtlikdən, Vladimir qalan iki atəşfəşanlığı ardıcıl olaraq atmağa qərar verir. İkinci və üçüncü atəşfəşanlığın da uğurla işləmək ehtimalı — defektsiz? Cavabı üç ondalık yerə yuvarlaqlaşdırın.

99
/3