Sobes.tech

Data Engineer

Analiza frekwencji w klubach fitness Pracujesz jako analityk w sieci klubów fitness. Masz informacje o wizytach użytkowników i zakupionych przez nich abonamentach. Należy przeanalizować skuteczność korzystania z abonamentów. Oblicz dla każdego typu abonamentu: • łączną liczbę użytkowników, którzy korzystali z tego typu abonamentu. Uwzględniaj tylko unikalne user_id; • łączną liczbę wizyt tych użytkowników. Uwzględniaj wszystkie wizyty użytkowników z tym abonamentem; • udział użytkowników tego abonamentu w procentach od ogólnej liczby użytkowników (zaokrąglony do jednego miejsca po przecinku). Do obliczenia udziału użyj stosunku liczby użytkowników z tym abonamentem do ogólnej liczby unikalnych użytkowników. Każdy użytkownik może mieć tylko jeden abonament. Posortuj wynik według typu abonamentu w porządku alfabetycznym. Format wejścia Tabela memberships: • membership_id (int) — unikalny identyfikator abonamentu • user_id (int) — unikalny identyfikator użytkownika • membership_type (text) — typ abonamentu Tabela visits: • visit_id (int) — unikalny identyfikator wizyty • user_id (int) — identyfikator użytkownika • visit_date (timestamp) — data i czas wizyty Dane nie zawierają braków ani nieprawidłowych wartości. Format wyjścia Zapytanie powinno zwrócić tabelę z polami w takiej kolejności: • membership_type (text) — typ abonamentu • users_count (int) — liczba unikalnych użytkowników z tym typem abonamentu • total_visits (int) — łączna liczba wizyt użytkowników z tym abonamentem • user_share (numeric) — udział użytkowników w procentach z tym abonamentem od ogólnej liczby (zaokrąglony do 1 miejsca po przecinku) Wynik sortuje się według typu abonamentu w porządku alfabetycznym.

Junior
254

Czy znasz metodologię Domain Driven Design (DDD)? Jeśli tak, podziel się przykładami jej zastosowania w Twoich projektach.

Junior
227

Jak usunąć submoduł i powiązane z nim pliki z projektu? git submodule remove <ścieżka-do-submodułu> git rm --cached <ścieżka-do-submodułu>; usuń sekcję z .gitmodules; git commit git clean --submodules <ścieżka> git submodule delete <ścieżka> git remove submodule <ścieżka>

Junior
207

Dlaczego następujące zapytanie nie będzie korzystać z indeksu, jeśli w tabeli records (id) został utworzony zwykły indeks B-tree na id? select * from records where id % 2 = 0 - Dla id potrzebny jest indeks typu GIN - Indeksy nie działają z wyrażeniami w WHERE - % to operacja porównania, a nie filtrowania - limit i offset są obowiązkowe dla optymalizacji z indeksem - Zapytanie odwołuje się do pola numerycznego, a nie tekstowego

Junior
206

Który wyraz na miejscu [...] automatycznie spowoduje utworzenie indeksu? Na platformie mobilnej jest poziomy przewijak kodu create table some_table( col_name [...] ); unique references other_table(col_name) not null serial integer check (col_name > 0)

Junior
203

Raport dla firmy logistycznej Jesteś analitykiem w firmie logistycznej, która prowadzi rejestr operacji w magazynach. Musisz przygotować raport dotyczący efektywności każdego magazynu. Dla każdego magazynu oblicz: • łączną liczbę operacji (count_operations); • łączną liczbę przetworzonych towarów w magazynie (sum_quantity); • średni czas przetwarzania operacji (avg_processing_time), uwzględniając tylko operacje z określonym czasem (nie NULL), zaokrąglony do najbliższej liczby całkowitej; • maksymalną i minimalną liczbę towarów przetworzonych w jednej operacji (max_quantity, min_quantity); • liczbę operacji każdego typu («dostawa», «wysyłka», «transfer») w osobnych kolumnach: supply_operations, shipment_operations, transfer_operations. Filtruj magazyny, dla których łączna liczba operacji jest większa niż 2, a średni czas przetwarzania nie przekracza 60 minut. Posortuj wynik według ID magazynu rosnąco. Format wejścia Tabela operations: • operation_id (int) — unikalny identyfikator operacji • warehouse_id (int) — ID magazynu • operation_type (text) — typ operacji: «dostawa», «wysyłka», «transfer» • quantity (int) — liczba jednostek towaru w operacji • operation_date (timestamp) — data i czas operacji • processing_time (int) — czas przetwarzania operacji Kolumna processing_time może zawierać wartości NULL. Format wyjścia Zapytanie powinno zwrócić tabelę z polami w takiej kolejności: • warehouse_id (int) — unikalny identyfikator magazynu • count_operations (int) — łączna liczba operacji wykonanych w magazynie • sum_quantity (int) — łączna liczba przetworzonych towarów w magazynie • avg_processing_time (numeric) — średni czas przetwarzania operacji (w minutach), uwzględniając tylko operacje z nie NULL czasem, zaokrąglony do najbliższej liczby całkowitej • max_quantity (int) — maksymalna liczba towarów przetworzonych w jednej operacji • min_quantity (int) — minimalna liczba towarów przetworzonych w jednej operacji • supply_operations (int) — liczba operacji typu «dostawa» • shipment_operations (int) — liczba operacji typu «wysyłka» • transfer_operations (int) — liczba operacji typu «transfer»

Junior
199

W trakcie pracy z git bisect napotkałeś commit, którego nie można zweryfikować z powodu braku odpowiedniego środowiska. Co należy zrobić w takiej sytuacji? - Powtórzyć polecenie git bisect start z innymi hashami - Pominąć ten commit poleceniem git bisect skip - Zresetować bisect poleceniem git bisect reset - Oznaczyć commit jako dobry poleceniem git bisect good - Oznaczyć commit jako zły poleceniem git bisect bad

Junior
197

Utworzono specjalną sekwencję o nazwie even_sequence, generującą wyłącznie liczby parzyste. Co należy wpisać w miejsce [...], aby w przypadku braku podania wartości even_column podczas wstawiania, wartość ta była pobierana z even_sequence? create table some_table( even_column [...] ); integer computed as nextval('even_sequence') integer generated always as identity (start with 2 increment by 2) integer default nextval('even_sequence') integer unique default nextval('even_sequence') integer generated by even_sequence’

Junior
197

Wyjaśnij, jak technicznie działa Git LFS i jakie korzyści oferuje w porównaniu z standardowym Gitem podczas pracy z dużymi plikami.

Junior
195

Czy masz doświadczenie w pracy z biblioteką Langchain? Jakie zadania rozwiązałeś za jej pomocą?

Junior
194

Co chciałbyś robić w naszym zespole?

Junior
192

Jak Git Flow zaleca formalizować nową wersję aplikacji? - Tworząc nowy branch issue - Tworząc hotfix-branch od master - Tworząc oddzielny release-branch od develop - Bezpośrednio commitując do branchu master - Bezpośrednio łącząc branch master z developem

Junior
185

Tworzysz widok, który pokazuje wszystkich użytkowników i, jeśli istnieją, ich ostatnie zamówienia. Tabele: users(id, name) i orders(id, user_id, created_at). Jakiego typu połączenia należy użyć, aby uwzględnić również użytkowników bez zamówień? CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN

Junior
183

Odkryłeś, że w historii głównego repozytorium Git znajdują się commity zawierające krytyczne dane poufne. Te dane muszą zostać całkowicie usunięte z całej historii repozytorium. Oceń, jak poprawne i bezpieczne byłoby użycie następującej strategii: utworzenie nowego commitu, który usunie poufne dane z aktualnej wersji plików i wysłanie go do main. - Poprawne, ale nie optymalne. Lepszym rozwiązaniem jest użycie git revert do cofnięcia commitów - Warunkowo poprawne. To tymczasowe rozwiązanie, dopóki nie zostanie znalezione bardziej radykalne środki do usunięcia danych - Niepoprawne i niebezpieczne. Dane zostaną usunięte z aktualnej wersji, ale pozostaną dostępne w historii repozytorium - Niepoprawne. Taki commit może spowodować nowe konflikty podczas scalania z innymi gałęziami - Poprawne i bezpieczne. Ta metoda gwarantuje, że dane zostaną usunięte i nie pojawią się ponownie w repozytorium

Junior
183

Które z poniższych stwierdzeń odzwierciedla konsekwencje takich działań z punktu widzenia rozszerzonej metodologii Git Flow i zarządzania historią zmian?

Junior
181

Pracujesz nad nową funkcją w gałęzi dev. Nagle pojawia się konieczność szybkiego przełączenia na gałąź main, aby szybko poprawić literówkę w pliku README.md. Masz kilka niezacommitowanych zmian: w src/feature.js (niezacommitowane) i styles/main.css (zacommitowane). Chcesz tymczasowo zapisać wszystkie te zmiany, aby potem wrócić do nich w gałęzi dev. Jaką sekwencję poleceń powinieneś użyć do tego? git stash save "WIP on feature" && git checkout main && [fix] && git checkout dev && git stash pop git stash push -m "WIP on feature" && git checkout main && [fix] && git checkout dev && git stash pop git stash && git checkout main && [fix] && git checkout dev && git stash apply git add . && git stash && git checkout main && [fix] && git checkout dev && git stash drop git commit -m "Temp commit" && git checkout main && [fix] && git checkout dev && git reset HEAD^

Junior
181

Analiza sprzedaży według kategorii produktów w sklepie detalicznym Pracujesz jako analityk w sklepie detalicznym. Twoim zadaniem jest przygotowanie raportu sprzedaży według kategorii z następującymi obliczeniami: • łączna liczba sprzedanych jednostek w kategorii (total_units_sold); • łączny przychód według kategorii, uwzględniając rabaty, gdzie rabat oblicza się jako unit_price × units_sold × (1 − discount/100). Jeśli rabat jest NULL, przyjmujemy 0%. Zaokrąglić do dwóch miejsc po przecinku; • średnia liczba sprzedanych jednostek na jedną sprzedaż (avg_units_per_sale), zaokrąglona do dwóch miejsc po przecinku; • udział sprzedaży bez rabatu (no_discount_share) — liczba sprzedaży z NULL lub 0% rabatem, podzielona przez łączną liczbę sprzedaży w kategorii, zaokrąglona do trzech miejsc po przecinku. Posortuj najpierw według łącznych przychodów (total_revenue) malejąco, potem według średniej liczby jednostek na sprzedaż (avg_units_per_sale) rosnąco, a na końcu według nazwy kategorii alfabetycznie. Format wejścia Tabela sales: • sale_id (int) — unikalny identyfikator sprzedaży • product_id (int) — identyfikator produktu • category (text) — kategoria produktu • sale_date (timestamp) — data i czas sprzedaży • units_sold (int) — sprzedane jednostki • unit_price (numeric) — cena za jednostkę • discount (numeric) — rabat w procentach, może być NULL Kolumna discount może zawierać wartości NULL. Format wyjścia Zapytanie powinno zwrócić tabelę z polami w takiej kolejności: • category (text) — kategoria produktu • total_units_sold (int) — łączna liczba sprzedanych jednostek w danej kategorii • total_revenue (numeric) — łączny przychód w kategorii, zaokrąglony do dwóch miejsc po przecinku • avg_units_per_sale (numeric) — średnia liczba jednostek na sprzedaż, zaokrąglona do dwóch miejsc po przecinku • no_discount_share (numeric) — udział sprzedaży bez rabatu (wartość od 0 do 1), zaokrąglony do trzech miejsc po przecinku Wynik powinien być posortowany najpierw według total_revenue malejąco, potem według avg_units_per_sale rosnąco, a na końcu według nazwy kategorii alfabetycznie.

Junior
173

Jaka strategia byłaby skuteczna w usunięciu luki bezpieczeństwa we wszystkich gałęziach z minimalnym ryzykiem zakłócenia działania projektu? - Utworzenie serii commitów revert dla problematycznego commitu i wszystkich, które go częściowo naprawiły, a następnie utworzenie nowego commitu z pełną poprawką - Utworzenie gałęzi hotfix od punktu sprzed problematycznego commitu, wprowadzenie poprawek i scalanie tej gałęzi ze wszystkimi zaangażowanymi gałęziami - Utworzenie pojedynczego commitu naprawczego za pomocą git revert abc123 na głównej gałęzi, a następnie wykonanie cherry-pick tego commitu na wszystkich gałęziach wydania - Użycie git bisect do dokładnego określenia problematycznego kodu, utworzenie poprawki i zastosowanie jej do wszystkich gałęzi za pomocą git am - Użycie git rebase -i do edycji problematycznego commitu w każdej gałęzi, z następnie wymuszonym push (force-push)

Junior
170

[imię] poprawił błędy i styl w tekście: «Cześć! Jestem [imię], wcześniej prosiłeś o przejście na Telegram» — na „ty”, ale z szacunkiem

Junior
169

Czy masz doświadczenie w pracy z frameworkiem webowym Gin? Opowiedz nam więcej szczegółów o zadaniach, które rozwiązałeś za jego pomocą.

Junior
169
/3