Sobes.tech

Data Engineer

Analyse der Besucherzahlen in Fitnessstudios Sie arbeiten als Analyst in einer Fitnessstudio-Kette. Sie haben Informationen über die Besuche der Nutzer und die von ihnen gekauften Mitgliedschaften. Es ist notwendig, die Effektivität der Nutzung der Mitgliedschaften zu analysieren. Berechnen Sie für jeden Mitgliedschaftstyp: • die Gesamtzahl der Nutzer, die diesen Mitgliedschaftstyp verwendet haben. Berücksichtigen Sie nur eindeutige user_id; • die Gesamtzahl der Besuche mit dieser Mitgliedschaft. Berücksichtigen Sie alle Besuche der Nutzer mit dieser Mitgliedschaft; • den Anteil der Nutzer dieser Mitgliedschaft in Prozent am Gesamtzahl der Nutzer (auf eine Dezimalstelle gerundet). Zur Berechnung des Anteils verwenden Sie das Verhältnis der Nutzer mit dieser Mitgliedschaft zur Gesamtzahl der eindeutigen Nutzer. Jeder Nutzer kann nur eine Mitgliedschaft haben. Sortieren Sie das Ergebnis nach Mitgliedschaftstyp in alphabetischer Reihenfolge. Eingabeformat Tabelle memberships: • membership_id (int) — eindeutige Kennung der Mitgliedschaft • user_id (int) — eindeutige Kennung des Nutzers • membership_type (text) — Typ der Mitgliedschaft Tabelle visits: • visit_id (int) — eindeutige Kennung des Besuchs • user_id (int) — Nutzerkennung • visit_date (timestamp) — Datum und Uhrzeit des Besuchs Die Daten enthalten keine fehlenden oder fehlerhaften Werte. Ausgabeformat Die Abfrage sollte eine Tabelle mit den Feldern in folgender Reihenfolge zurückgeben: • membership_type (text) — Typ der Mitgliedschaft • users_count (int) — Anzahl der eindeutigen Nutzer mit diesem Mitgliedschaftstyp • total_visits (int) — Gesamtzahl der Besuche der Nutzer mit dieser Mitgliedschaft • user_share (numeric) — Anteil der Nutzer in Prozent an der Gesamtzahl (auf eine Dezimalstelle gerundet) Das Ergebnis wird nach Mitgliedschaftstyp in alphabetischer Reihenfolge sortiert.

Junior
250

Sind Sie mit der Methodologie Domain Driven Design (DDD) vertraut? Wenn ja, teilen Sie bitte Beispiele für deren Anwendung in Ihren Projekten.

Junior
206

Wie entfernt man ein Submodul und die damit verbundenen Dateien aus dem Projekt? git submodule remove <Pfad-zum-Submodul> git rm --cached <Pfad-zum-Submodul>; Abschnitt aus .gitmodules entfernen; git commit git clean --submodules <Pfad> git submodule delete <Pfad> git remove submodule <Pfad>

Junior
200

Im Prozess der Arbeit mit git bisect bist du auf einen Commit gestoßen, der aufgrund des Fehlens der erforderlichen Umgebung nicht überprüft werden kann. Was solltest du in dieser Situation tun? - Den Befehl git bisect start mit anderen Hashes wiederholen - Diesen Commit mit dem Befehl git bisect skip überspringen - Den Bisection-Prozess mit dem Befehl git bisect reset zurücksetzen - Den Commit mit dem Befehl git bisect good als gut markieren - Den Commit mit dem Befehl git bisect bad als schlecht markieren

Junior
196

Warum wird die folgende Abfrage den Index nicht verwenden, wenn in der Tabelle records (id) ein normaler B-Tree-Index auf id erstellt wurde? select * from records where id % 2 = 0 - Für id wird ein GIN-Index benötigt - Indizes funktionieren nicht mit Ausdrücken in WHERE - % ist eine Vergleichsoperation, keine Filterung - limit und offset sind für die Indexoptimierung erforderlich - Die Abfrage greift auf ein numerisches Feld zu, nicht auf ein Textfeld

Junior
196

Welcher Ausdruck anstelle von [...] führt automatisch zur Erstellung eines Index? Auf der mobilen Plattform gibt es einen horizontalen Bildlauf im Code create table some_table( col_name [...] ); unique references other_table(col_name) not null serial integer check (col_name > 0)

Junior
195

Erklären Sie, wie Git LFS technisch funktioniert und welche Vorteile es im Vergleich zu Standard-Git beim Arbeiten mit großen Dateien bietet.

Junior
193

Bericht für das Logistikunternehmen Sie sind Analyst bei einem Logistikunternehmen, das die Operationen in den Lagern erfasst. Sie müssen einen Bericht über die Effizienz jedes Lagers erstellen. Berechnen Sie für jedes Lager: • die Gesamtzahl der Operationen (count_operations); • die Gesamtzahl der im Lager verarbeiteten Waren (sum_quantity); • die durchschnittliche Bearbeitungszeit der Operation (avg_processing_time), nur für Operationen mit einer angegebenen Zeit (nicht NULL), auf die nächste ganze Zahl gerundet; • die maximale und minimale Anzahl der in einer Operation verarbeiteten Waren (max_quantity, min_quantity); • die Anzahl der Operationen jedes Typs («Lieferung», «Versand», «Transfer») in separaten Spalten: supply_operations, shipment_operations, transfer_operations. Filtern Sie die Lager, bei denen die Gesamtzahl der Operationen mehr als 2 beträgt und die durchschnittliche Bearbeitungszeit 60 Minuten nicht übersteigt. Sortieren Sie das Ergebnis nach Lager-ID aufsteigend. Eingabeformat Tabelle operations: • operation_id (int) — eindeutiger Bezeichner der Operation • warehouse_id (int) — Lager-ID • operation_type (text) — Operationstyp: «Lieferung», «Versand», «Transfer» • quantity (int) — Anzahl der Waren in der Operation • operation_date (timestamp) — Datum und Uhrzeit der Operation • processing_time (int) — Bearbeitungszeit der Operation Die Spalte processing_time kann NULL-Werte enthalten. Ausgabeformat Die Abfrage sollte eine Tabelle mit den Feldern in folgender Reihenfolge zurückgeben: • warehouse_id (int) — eindeutiger Lager-ID • count_operations (int) — Gesamtzahl der Operationen im Lager • sum_quantity (int) — Gesamtzahl der verarbeiteten Waren im Lager • avg_processing_time (numeric) — durchschnittliche Bearbeitungszeit der Operation (in Minuten), nur für Operationen mit nicht NULL Zeit, auf die nächste ganze Zahl gerundet • max_quantity (int) — maximale Anzahl der in einer Operation verarbeiteten Waren • min_quantity (int) — minimale Anzahl der in einer Operation verarbeiteten Waren • supply_operations (int) — Anzahl der Operationen vom Typ «Lieferung» • shipment_operations (int) — Anzahl der Operationen vom Typ «Versand» • transfer_operations (int) — Anzahl der Operationen vom Typ «Transfer»

Junior
191

Es wurde eine spezielle Sequenz namens even_sequence erstellt, die nur gerade Zahlen generiert. Was muss anstelle von [...] eingesetzt werden, damit im Falle, dass kein Wert für even_column bei der Einfügung angegeben wurde, der Wert aus even_sequence genommen wird? 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
191

Was möchten Sie in unserem Team machen?

Junior
188

Haben Sie Erfahrung mit der Bibliothek Langchain? Welche Aufgaben haben Sie damit gelöst?

Junior
188

Welcher Verbindungstyp sollte verwendet werden, um in die Auswahl sowohl alle Benutzer als auch deren letzte Bestellungen einzubeziehen, auch wenn keine Bestellungen vorhanden sind? Tabellen: users(id, name) und orders(id, user_id, created_at). CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN

Junior
181

Wie empfiehlt Git Flow, eine neue Version der Anwendung zu erstellen? - Durch Erstellen eines neuen Issue-Branches - Durch Erstellen eines Hotfix-Branches vom Master - Durch Erstellen eines separaten Release-Branches vom Develop - Durch direkten Commit in den Master-Branch - Durch direktes Zusammenführen des Master-Branches in develop

Junior
179

Welche der folgenden Aussagen spiegelt die Folgen solcher Aktionen aus der Sicht des erweiterten Git Flow und der Verwaltung der Änderungsverlauf wider?

Junior
175

Sie arbeiten an einer neuen Funktion im Branch dev. Plötzlich entsteht die Notwendigkeit, schnell zum Branch main zu wechseln, um einen Tippfehler in der Datei README.md zu beheben. Sie haben einige ungestagte Änderungen: in src/feature.js (ungestagt) und styles/main.css (gestagt). Sie möchten diese Änderungen vorübergehend speichern, um später in den Branch dev zurückzukehren. Welche Befehlsfolge sollten Sie dafür verwenden? 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
172

Verkaufsanalyse nach Produktkategorien in einem Einzelhandelsgeschäft Sie arbeiten als Analyst in einem Einzelhandelsgeschäft. Ihre Aufgabe ist es, einen Verkaufsbericht nach Kategorien mit den folgenden Berechnungen zu erstellen: • Gesamtzahl der verkauften Einheiten in der Kategorie (total_units_sold); • Gesamter Umsatz nach Kategorie, unter Berücksichtigung von Rabatten, wobei der Rabatt berechnet wird als unit_price × units_sold × (1 − discount/100). Wenn kein Rabatt vorhanden ist (NULL), wird 0% angenommen. Auf zwei Dezimalstellen runden; • Durchschnittliche verkaufte Einheiten pro Verkauf (avg_units_per_sale), auf zwei Dezimalstellen gerundet; • Anteil der Verkäufe ohne Rabatt (no_discount_share) — Anzahl der Verkäufe mit NULL oder 0% Rabatt, geteilt durch die Gesamtzahl der Verkäufe in der Kategorie, auf drei Dezimalstellen gerundet. Sortieren Sie die Ergebnisse zuerst nach dem Gesamtumsatz (total_revenue) absteigend, dann nach dem Durchschnitt der Einheiten pro Verkauf (avg_units_per_sale) aufsteigend, und schließlich nach Kategorienamen in alphabetischer Reihenfolge. Eingabeformat Tabelle sales: • sale_id (int) — eindeutige Verkaufs-ID • product_id (int) — Produkt-ID • category (text) — Produktkategorie • sale_date (timestamp) — Verkaufsdatum und -zeit • units_sold (int) — verkaufte Einheiten • unit_price (numeric) — Preis pro Einheit • discount (numeric) — Rabatt in Prozent, kann NULL sein Die Spalte discount kann NULL-Werte enthalten. Ausgabeformat Die Abfrage sollte eine Tabelle mit den Feldern in folgender Reihenfolge zurückgeben: • category (text) — Produktkategorie • total_units_sold (int) — Gesamtzahl der verkauften Einheiten in der Kategorie • total_revenue (numeric) — Gesamter Umsatz in der Kategorie, auf zwei Dezimalstellen gerundet • avg_units_per_sale (numeric) — Durchschnitt der Einheiten pro Verkauf, auf zwei Dezimalstellen gerundet • no_discount_share (numeric) — Anteil der Verkäufe ohne Rabatte (Wert zwischen 0 und 1), auf drei Dezimalstellen gerundet Das Ergebnis wird zuerst nach total_revenue absteigend sortiert, dann nach avg_units_per_sale aufsteigend, und schließlich nach Kategorie in alphabetischer Reihenfolge.

Junior
171

Sie haben entdeckt, dass in der Geschichte des Haupt-Git-Repositorys Commits enthalten sind, die kritisch vertrauliche Daten enthalten. Diese Daten müssen vollständig aus der gesamten Repository-Geschichte entfernt werden. Bewerten Sie, wie richtig und sicher es wäre, die folgende Strategie anzuwenden: Einen neuen Commit zu erstellen, der die vertraulichen Daten aus der aktuellen Version der Dateien entfernt, und ihn in main zu pushen. - Richtig, aber nicht optimal. Es ist besser, git revert zu verwenden, um Commits rückgängig zu machen - Bedingt richtig. Es ist eine temporäre Lösung, bis ein radikaleres Mittel zur Entfernung der Daten gefunden wird - Falsch und unsicher. Die Daten werden aus der aktuellen Version entfernt, bleiben aber in der Repository-Geschichte zugänglich - Falsch. Dieser Commit kann bei der Zusammenführung mit anderen Branches zu neuen Konflikten führen - Richtig und sicher. Diese Methode stellt sicher, dass die Daten entfernt werden und nicht wieder im Repository erscheinen

Junior
171

Haben Sie Erfahrung mit dem Web-Framework Gin? Erzählen Sie uns im Detail, welche Aufgaben Sie damit gelöst haben.

Junior
167

In PostgreSQL ist es notwendig, die Leistung von Transaktionen durch ein minimales Isolationsniveau zu optimieren, bei dem: • parallele Transaktionen unvollständige Änderungen voneinander sehen können; • "Dirty Reads" (schmutzige Lesezugriffe) möglich sind. Welchen Isolationsgrad muss die Transaktion haben, um dieses Ziel zu erreichen? Dirty Read ist in PostgreSQL nicht möglich Repeatable Read Read Uncommitted Read Committed Serializable

Junior
166

Anteil des Bot-Traffics Das Anti-Betrugs-Team hat einen Mechanismus entwickelt, um Bot-Traffic auf der Website des Shops zu erkennen: Wenn ein Bot die Website betritt, wird die Substring "bot" (ohne Berücksichtigung der Groß-/Kleinschreibung) zu den URL-Parametern hinzugefügt. Wenn die user_id im Dezember mindestens einmal als Bot identifiziert wurde, soll sie immer als Bot betrachtet werden. Untersuchen Sie den Datensatz mit den Nutzerbesuchen auf der Website und berechnen Sie den Anteil der Bots an der Gesamtzahl der Nutzer im Dezember 2024 (auf eine Nachkommastelle gerundet). Eingabeformat Tabelle visits: - event_date (date) — Besuchsdatum - user_id (int) — eindeutiger Nutzeridentifikator - url (string) — Link, über den die Besuch erfolgt ist Die Daten enthalten keine fehlenden oder fehlerhaften Werte. Ausgabeformat Die Abfrage sollte eine Tabelle mit den Feldern zurückgeben: - share (float) — Anteil der Bots an der Gesamtzahl der Nutzer im Dezember, auf eine Nachkommastelle gerundet.

Junior
164
/3