Sobes.tech

Data Analyst

Как би създал бенчмарк за геометрия? Опиши веригата от идеята до финалния датасет.

126

Какъв е логическият ред на изпълнение на FROM, JOIN, GROUP BY и SELECT в този SQL заявка?

125

val_a, val_b = 0, 0 t = None докато i < дължината на a или j < дължината на b: a_next = a[i][0] ако i < дължината на a иначе float('inf') b_next = b[j][0] ако j < дължината на b иначе float('inf') ако 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

123

Напишете код на Python, който изчислява скаларното произведение на два RLE-компресирани вектора за един проход.

123

Афанасий вече две седмици работи върху писането на код, който може да решава японски кръстословици с поддръжка на девет цвята, когато на следващата среща колега му съобщи, че може сам да се справи с задачата по-бързо, и в програмата вече няма смисъл. Но Афанасий, като оптимист, реши да отдели още време за тази задача и да направи следното — да изчисли колко добре колегата се справя с кръстословиците. За тази оценка той избра някакъв аналог на метриката 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); нулите не се броят, нито като клетки в представянията, нито в броя на цветовете. 3. Трети пример [phone] тук започва изпратеното изображение [phone] -- тук свършва изпратеното изображение 0 1 2 -- тук започва изходното изображение [phone] -> 0.47 Обяснение: приносът на съвпадащите и несъвпадащите клетки (0.4 + 0.5 + 0.5) / броя на цветовете (3); нулите не се броят нито като клетки в представянията, нито в броя на цветовете. 4. Четвърти пример [phone] -> 0.0 Обяснение: приносът на съвпадащите и несъвпадащите клетки (0.0) / броя на цветовете (1); нулите не се броят нито като клетки в представянията, нито в броя на цветовете.

123

Как се нарича операторът за сортиране в SQL и кога се изпълнява? Къде се намира LIMIT в реда на изпълнение?

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

119

Обяснете логиката на решението на задачата sum_series: как да построите сумата на две стъпкови времеви редове?

119

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. П initially, в таблицата 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 AS campaign -- 1.2 Как ще се промени отговорът, ако типът JOIN се промени на LEFT?

107

Какво е бенчмарк и как бихте оценили качеството на мултимоделен модел?

107

Ще бъде ли разпределена нормално доходността на акциите [име]? (Минутни увеличения на цената през цялата търговска история от 2000 до 2026 г.)

101

-- Таблицата campaigns беше поправена: премахнати са дублиращите се записи, добавен е ключ (PK). -- Извършени са повече кампании, поради бъгове потребителите започнаха да получават неуспешни опити за доставка на комуникации, а някои изобщо не успяха да бъдат показани. -- Относно промо кампаниите, изпратени до потребителите: -- 2.1 Напишете заявка, която показва броя на потребителите, успешно получили комуникацията, за всяка кампания. -- 2.2 Модифицирайте заявката, за да показва: броя на потребителите, които не са получили нито една успешна комуникация, за всяка кампания. -- Към таблицата communications беше добавено още едно поле – event_timestamp – дата и час на събитието по доставката на комуникацията във формат '%Y-%m-%d %H:%M:%S'. -- За всички кампании, включително и тези, които не са стартирани, изчислете метриката: делът на потребителите, за които доставката на успешно съобщение е била извършена от първия опит. -- Могат да се използват оконечни функции, или без тях, но е важно заявката да е оптимална.

99

D. Китайски фойерверки Владимир купи комплект от 3 китайски фойерверки. Те изглеждат абсолютно еднакви и са смесени в кутия, но според инструкциите, имат различна надеждност: 1. "Елит" — процент на дефекти 10% (вероятност за успех 0.9). 2. "Стандарт" — процент на дефекти 20% (вероятност за успех 0.8). 3. "Иконом" — процент на дефекти 40% (вероятност за успех 0.6). Владимир случайно взема първия фойерверк, запалва го, и той успешно работи. Щастлив, Владимир решава да пусне останалите два един след друг. Каква е вероятността и двата втори и трети фойерверки също да работят успешно — без дефект? Закръглете отговора до три десетични знака.

99
/3