Data Analyst
Opowiedz o podejściach do budowy DWH: Data Vault 2.0 vs schemat śnieżynki/gwiazdy — główne encje, zalety i wady.
Dlaczego standaryzacja formatu odpowiedzi w benchmarku ma nadal sens, nawet jeśli ogranicza model?
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
Pytanie behawioralne: jak pracujesz z nowymi, nieznanymi informacjami (np. dużym zbiorem artykułów)?
Dlaczego zwroty pieniędzy klientom wzrosły o 50%? Jakie ryzyko operacyjne jest tutaj możliwe?
Opowiedz o trudnościach i błędach w projekcie.
Podaj przykład, kiedy sam zainicjowałeś zmiany w DWH, pipeline lub modelu danych.
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
// Podczas aktualizacji zamówienia, musimy wysłać dane zamówienia do kilku usług (zewnętrznych) // liczba usług rośnie (może być tysiące+) // napisaliśmy kod, na początku wszystko działało dobrze, ale z czasem nasza usługa zaczęła zużywać dużo zasobów // Należy zoptymalizować ten kod, aby działał efektywnie przy dużej liczbie usług func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Wyobraźmy sobie, że to długi wywołanie sieciowe response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "niepowodzenie wysyłki", err) return } s.logger.Info(ctx, "sukces", response) }() } }
Problem: tysiąc użytkowników składa jedno zamówienie i odchodzi — jak to widać w metrykach i co robić?
SQL: napisz zapytanie do policzenia liczby subskrybentów każdego blogera (tabela z blogerami i subskrybentami).
Jakie integracje realizowałeś i co dokładnie robiłeś? (Kafka, REST, RabbitMQ, synchroniczne/asynchroniczne)
SQL: wyświetl wszystkie produkty, których cena jest wyższa od średniej ceny w ich kategorii (tabela products z polami product_id, category, price).
Porównaj dwie wersje aplikacji za pomocą kluczowych wyrażeń (zadanie: porównaj starą i nową wersję YouTube)
Opowiedz o indeksach w ClickHouse.
Jak zbierać odpowiedzi ground truth dla benchmarku z geometrii?
Zadanie 1. Liczba klientów według statusu Wymaganie: Napisz zapytanie, które wyświetla liczbę klientów w każdym statusie (aktywny, nieaktywny, zablokowany itp.). Wynik powinien zawierać dwie kolumny: status i cnt.
Jak uzyskać końcowe przewidywanie w boostingu z trzech iteracji?
Co się stanie, jeśli uruchomimy tysiące połączeń jednocześnie?
Co robić, jeśli metryka North Star (liczba udanych zamówień) się zmniejsza?