Afanasy przez 2 tygodnie pracował nad napisaniem kodu, który potrafiłby rozwiązać japońskie krzyżówki z obsługą dziewięciu kolorów, kiedy na spotkaniu zespołu kolega powiedział mu, że sam potrafi poradzić sobie z zadaniem szybciej, i w programie nie ma już sensu. Ale Afanasy, będąc optymistą, postanowił dalej ćwiczyć to zadanie i zrobić coś następującego — oszacować, jak dobrze kolega radzi sobie z krzyżówkami. Do tego celu wybrał analog metryki IoU — obliczenia będą podobne do klasycznego Intersection Over Union, ale według kolorów. Działa to tak: każda pasująca komórka w oryginale i w rozwiązaniu według koloru dodaje 1 do licznika, a w mianowniku dodaje się 1 za każdą komórkę w oryginale i w rozwiązaniu (dla pasujących komórek dodaje się tylko raz). Następnie oblicza się średnią na podstawie liczby kolorów w oryginalnym obrazie, zaokrągloną do dwóch miejsc po przecinku; zero nie jest uważane za kolor, więc metryka nie powinna być obliczana dla komórek tego koloru. Wejście zaczyna się od linii zawierającej liczbę wierszy n i kolumn m (w tej kolejności). Następnie podane są 2n linii, zawierających m liczb oddzielonych spacjami — pierwsze n dotyczą przesłanego krzyżówki, a kolejne n — oryginalnego obrazu. Zakłada się, że każda linia, począwszy od drugiej, zawiera dokładnie m liczb. Jako odpowiedź należy wypisać liczbę zaokrągloną do dwóch miejsc po przecinku, jak na przykładach. Oto kilka przykładów: 1. Pierwszy przykład [phone] -> 1.0 Wyjaśnienie: wkład pasujących i niepasujących komórek (1.0 + 1.0 + 1.0 + 1.0) / liczba kolorów (4) 2. Drugi przykład [phone] -> 0.08 Wyjaśnienie: wkład pasujących i niepasujących komórek (0.25 + 0.0 + 0.0) / liczba kolorów (3); zera nie są brane pod uwagę, ani jako komórki w reprezentacjach, ani w liczbie kolorów. 3. Trzeci przykład [phone] gdzie przesłany obraz zaczyna się [phone] — gdzie kończy się przesłany obraz 0 1 2 — gdzie zaczyna się oryginalny obraz [phone] -> 0.47 Wyjaśnienie: wkład pasujących i niepasujących komórek (0.4 + 0.5 + 0.5) / liczba kolorów (3); zera nie są brane pod uwagę, ani jako komórki w reprezentacjach, ani w liczbie kolorów. 4. Czwarty przykład [phone] -> 0.0 Wyjaśnienie: wkład pasujących i niepasujących komórek (0.0) / liczba kolorów (1); zera nie są brane pod uwagę, ani jako komórki w reprezentacjach, ani w liczbie kolorów.
Data Analyst
Napisz kod w Pythonie, który oblicza iloczyn skalarny dwóch wektorów skompresowanych metodą RLE w jednym przebiegu.
val_a, val_b = 0, 0 t = None dopóki i < len(a) lub j < len(b): a_next = a[i][0] jeśli i < len(a) else float('inf') b_next = b[j][0] jeśli j < len(b) else float('inf') jeśli 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 w przeciwnym razie: 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
Gdzie w życiu codziennym występuje rozkład normalny, a gdzie nie? Podaj konkretne przykłady z wyjaśnieniem, dlaczego dane są rozkładem normalnym lub nie.
Jaka jest logiczna kolejność wykonywania FROM, JOIN, GROUP BY i SELECT w tym zapytaniu SQL?
Jak zbierać odpowiedzi ground truth dla benchmarku z geometrii?
-- O kampaniach promocyjnych wysłanych do użytkowników: -- 2.1 Napisz zapytanie, które wyświetli liczbę użytkowników, którzy pomyślnie otrzymali komunikację, dla każdej kampanii. -- 2.2 Zmień zapytanie, aby wyświetlić: liczbę użytkowników, którzy ostatecznie nie otrzymali żadnej pomyślnej komunikacji, dla każdej kampanii. -- 3. Do tabeli communications dodano kolejne pole – event_timestamp – data i czas zdarzenia dostarczenia komunikacji w formacie '%Y-%m-%d %H:%M:%S'. -- Dla wszystkich kampanii, w tym nieuruchomionych, oblicz wskaźnik: odsetek użytkowników, dla których dostarczenie pomyślnej wiadomości nastąpiło za pierwszym razem. -- Można używać funkcji okienkowych lub nie, ale ważne jest, aby zapytanie było optymalne.
Pseudokod 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
Wyjaśnij logikę rozwiązania zadania sum_series: jak zbudować sumę dwóch schodkowych szeregów czasowych?
Jak byś skonfigurował test A/B, aby sprawdzić nowy algorytm wyszukiwania? Jak określić potrzebny rozmiar próbki i czas trwania testu?
Wyraźnie wymień kryteria, które muszą być spełnione, aby dane miały rozkład normalny.
-- Marketerzy uruchamiają kampanie promocyjne w aplikacji serwisu. Istnieją dwie tabele: -- campaigns – lista kampanii -- - campaign – nazwa kampanii -- - action_type – typ kampanii: "push" lub "banner" -- communications – log backendu z wysyłkami komunikacji tych kampanii do użytkowników -- - user_id – identyfikator użytkownika -- - campaign – nazwa kampanii -- - status – status zdarzenia: "success" lub "error" --------------------------------------------------------------------------- -- 1. Początkowo w tabeli campaigns jest 4 wiersze: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- losowo zduplikowane -- | promo_cats | banner | -- | promo_cats | banner | <- dwa wiersze -- | promo_rats | push | -- Wiadomo też, że: -- kampanie promo_dogs i promo_cats zostały pomyślnie przeprowadzone na 100 użytkownikach, a każdy użytkownik otrzymał jedną komunikację, -- a promo_rats jest jeszcze w fazie planowania. -- 1.1 Co zwróci zapytanie: 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 Jak zmieni się odpowiedź, jeśli zmieni się typ JOIN na LEFT?
B. Prefiksy i Sufiksy Dany jest posortowany ciąg n zer. W każdym kroku można wybrać dowolną liczbę pierwszych lub ostatnich elementów tego ciągu i dodać jeden do wszystkich wybranych elementów. Czy można osiągnąć podany stan tego ciągu po pewnej liczbie takich operacji? Format wejścia Pierwsza linia zawiera liczbę całkowitą 1 ≤ n ≤ 100000 — liczbę elementów w ciągu. Druga linia zawiera n nieujemnych liczb całkowitych a1, a2, ..., an oddzielonych spacjami, gdzie ai ≤ 10^18 — pożądane końcowe elementy. Format wyjścia Wypisz "YES", jeśli taki stan jest osiągalny, i "NO" w przeciwnym razie. Przykład Wejście [phone] Wyjście YES Uwaga Stany [phone] można osiągnąć w następujący sposób: dodać jeden do pierwszych trzech elementów, otrzymując [phone] dodać jeden do ostatnich czterech elementów, otrzymując [phone] dodać jeden do ostatniego elementu, otrzymując [phone]
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
Czy masz pytania do rozmówcy?
Czym jest benchmark i jak oceniłbyś jakość modelu multimodalnego?
Czy rentowność akcji [nazwa] będzie rozkładem normalnym? (Przyrosty cen co minutę przez całą historię handlu od 2000 do 2026 roku)
-- Tabela campaigns została naprawiona: usunięto duplikaty, dodano klucz (PK). -- Przeprowadzono więcej kampanii, z powodu błędów użytkownicy zaczęli mieć nieudane próby dostarczenia komunikatów, a niektórym w ogóle się nie udało pokazać. -- O kampaniach promocyjnych wysłanych do użytkowników: -- 2.1 Napisz zapytanie, które wyświetla liczbę użytkowników, którzy pomyślnie otrzymali komunikację, dla każdej kampanii. -- 2.2 Zmień zapytanie, aby wyświetlić: liczbę użytkowników, którzy ostatecznie nie otrzymali żadnej udanej komunikacji, dla każdej kampanii. -- 3. Do tabeli communications dodano kolejne pole – event_timestamp – data i czas zdarzenia dostarczenia komunikacji w formacie '%Y-%m-%d %H:%M:%S'. -- Dla wszystkich kampanii, w tym nieuruchomionych, oblicz wskaźnik: odsetek użytkowników, dla których dostarczenie udanej wiadomości powiodło się za pierwszym razem. -- Można użyć funkcji okienkowych, można bez nich, ale ważne jest, aby zapytanie było optymalne.
Jak nazywa się operator sortowania w SQL i kiedy jest wykonywany? Gdzie w kolejności wykonywania znajduje się LIMIT?
D. Chińskie fajerwerki Władimir kupił zestaw 3 chińskich fajerwerków. Wyglądają dokładnie tak samo i są pomieszane w pudełku, ale zgodnie z instrukcją mają różną niezawodność: 1. "Elita" — wskaźnik wadliwych 10% (prawdopodobieństwo sukcesu 0.9). 2. "Standard" — wskaźnik wadliwych 20% (prawdopodobieństwo sukcesu 0.8). 3. "Ekonomiczny" — wskaźnik wadliwych 40% (prawdopodobieństwo sukcesu 0.6). Władimir losowo bierze pierwszy fajerwerk, zapala go, i działa pomyślnie. Zadowolony, decyduje się wystrzelić pozostałe dwa jeden po drugim. Jaka jest szansa, że zarówno drugi, jak i trzeci fajerwerk również wystrzelą pomyślnie — bez defektu? Zaokrąglij odpowiedź do trzech miejsc po przecinku.