Sobes.tech

Data Engineer

Ανάλυση επισκεψιμότητας σε γυμναστήρια Εργάζεστε ως αναλυτής σε ένα δίκτυο γυμναστηρίων. Έχετε πληροφορίες σχετικά με τις επισκέψεις χρηστών και τις συνδρομές που αγοράζουν. Είναι απαραίτητο να αναλύσετε την αποτελεσματικότητα της χρήσης των συνδρομών. Υπολογίστε για κάθε τύπο συνδρομής: • τον συνολικό αριθμό χρηστών που χρησιμοποίησαν αυτόν τον τύπο συνδρομής. Λαμβάνοντας υπόψη μόνο μοναδικά user_id; • τον συνολικό αριθμό επισκέψεων για αυτήν τη συνδρομή. Λαμβάνοντας υπόψη όλες τις επισκέψεις χρηστών με αυτήν τη συνδρομή; • το ποσοστό χρηστών αυτής της συνδρομής επί του συνολικού αριθμού χρηστών (στρογγυλοποιημένο σε ένα δεκαδικό). Για τον υπολογισμό, χρησιμοποιήστε τη σχέση μεταξύ του αριθμού χρηστών με αυτήν τη συνδρομή και του συνολικού αριθμού μοναδικών χρηστών. Κάθε χρήστης μπορεί να έχει μόνο μία συνδρομή. Τα αποτελέσματα ταξινομήστε κατά τύπο συνδρομής σε αλφαβητική σειρά. Μορφή εισόδου Πίνακας memberships: • membership_id (int) — μοναδικός αναγνωριστικός αριθμός συνδρομής • user_id (int) — μοναδικός αναγνωριστικός αριθμός χρήστη • membership_type (text) — τύπος συνδρομής Πίνακας visits: • visit_id (int) — μοναδικός αναγνωριστικός αριθμός επίσκεψης • user_id (int) — αναγνωριστικός αριθμός χρήστη • visit_date (timestamp) — ημερομηνία και ώρα επίσκεψης Τα δεδομένα δεν περιέχουν κενά ή λανθασμένες τιμές. Μορφή εξόδου Το ερώτημα πρέπει να επιστρέφει έναν πίνακα με τα πεδία με την ακόλουθη σειρά: • membership_type (text) — τύπος συνδρομής • users_count (int) — αριθμός μοναδικών χρηστών με αυτόν τον τύπο συνδρομής • total_visits (int) — συνολικός αριθμός επισκέψεων αυτών των χρηστών • user_share (numeric) — ποσοστό χρηστών αυτού του τύπου συνδρομής επί του συνολικού αριθμού, στρογγυλοποιημένο σε ένα δεκαδικό Τα αποτελέσματα ταξινομημένα κατά τύπο συνδρομής σε αλφαβητική σειρά.

Junior
253

Γνωρίζετε τη μεθοδολογία Domain Driven Design (DDD); αν ναι, μοιραστείτε παραδείγματα εφαρμογής της στα έργα σας.

Junior
224

Γιατί η ακόλουθη ερώτηση δεν θα χρησιμοποιήσει το δείκτη αν στον πίνακα records (id) έχει δημιουργηθεί ένας κανονικός δείκτης B-tree στο id; select * from records where id % 2 = 0 - Για το id χρειάζεται δείκτη τύπου GIN - Οι δείκτες δεν λειτουργούν με εκφράσεις στο WHERE - % είναι μια λειτουργία σύγκρισης, όχι φιλτραρίσματος - το limit και το offset είναι υποχρεωτικά για βελτιστοποίηση με δείκτη - Η ερώτηση αναφέρεται σε ένα αριθμητικό πεδίο, όχι σε ένα κείμενο

Junior
204

Πώς να διαγράψετε ένα υπο-μονάδα και τα σχετικά αρχεία από το έργο; git submodule remove <διαδρομή-υπο-μονάδας> git rm --cached <διαδρομή-υπο-μονάδας>; διαγράψτε την ενότητα από το .gitmodules; git commit git clean --submodules <διαδρομή> git submodule delete <διαδρομή> git remove submodule <διαδρομή>

Junior
204

Ποια έκφραση στη θέση [...] θα οδηγήσει αυτόματα στη δημιουργία δείκτη; Στην κινητή πλατφόρμα υπάρχει οριζόντια κύλιση του κώδικα create table some_table( col_name [...] ); unique references other_table(col_name) not null serial integer check (col_name > 0)

Junior
203

Αναφορά για την εταιρεία logistics Είστε αναλυτής σε μια εταιρεία logistics που καταγράφει τις επιχειρήσεις στα αποθήκες. Πρέπει να ετοιμάσετε μια αναφορά για την αποδοτικότητα κάθε αποθήκης. Για κάθε αποθήκη, υπολογίστε: • το συνολικό αριθμό επιχειρήσεων (count_operations); • το συνολικό αριθμό προϊόντων που επεξεργάστηκε η αποθήκη (sum_quantity); • τον μέσο χρόνο επεξεργασίας μιας επιχείρησης (avg_processing_time), λαμβάνοντας υπόψη μόνο τις επιχειρήσεις με καθορισμένο χρόνο (όχι NULL), στρογγυλοποιημένο στον πλησιέστερο ακέραιο; • το μέγιστο και ελάχιστο αριθμό προϊόντων που επεξεργάστηκε σε μια επιχείρηση (max_quantity, min_quantity); • τον αριθμό επιχειρήσεων κάθε τύπου («παράδοση», «αποστολή», «μεταφορά») σε ξεχωριστές στήλες: supply_operations, shipment_operations, transfer_operations. Φιλτράρετε τις αποθήκες όπου ο συνολικός αριθμός επιχειρήσεων είναι μεγαλύτερος από 2 και ο μέσος χρόνος επεξεργασίας δεν υπερβαίνει τα 60 λεπτά. Ταξινομήστε το αποτέλεσμα κατά ID αποθήκης σε αύξουσα σειρά. Μορφή εισόδου Πίνακας operations: • operation_id (int) — μοναδικός αναγνωριστικός αριθμός επιχείρησης • warehouse_id (int) — ID αποθήκης • operation_type (text) — τύπος επιχείρησης: «παράδοση», «αποστολή», «μεταφορά» • quantity (int) — αριθμός μονάδων προϊόντος στην επιχείρηση • operation_date (timestamp) — ημερομηνία και ώρα επιχείρησης • processing_time (int) — χρόνος επεξεργασίας επιχείρησης Η στήλη processing_time μπορεί να περιέχει NULL τιμές. Μορφή εξόδου Το ερώτημα πρέπει να επιστρέφει έναν πίνακα με τα πεδία με την ακόλουθη σειρά: • warehouse_id (int) — μοναδικό ID αποθήκης • count_operations (int) — συνολικός αριθμός επιχειρήσεων που πραγματοποιήθηκαν στην αποθήκη • sum_quantity (int) — συνολικός αριθμός προϊόντων που επεξεργάστηκε η αποθήκη • avg_processing_time (numeric) — μέσος χρόνος επεξεργασίας επιχείρησης (σε λεπτά), λαμβάνοντας υπόψη μόνο τις επιχειρήσεις με χρόνο διαφορετικό από NULL, στρογγυλοποιημένο στον πλησιέστερο ακέραιο • max_quantity (int) — μέγιστος αριθμός προϊόντων που επεξεργάστηκε σε μια επιχείρηση • min_quantity (int) — ελάχιστος αριθμός προϊόντων που επεξεργάστηκε σε μια επιχείρηση • supply_operations (int) — αριθμός επιχειρήσεων τύπου «παράδοση» • shipment_operations (int) — αριθμός επιχειρήσεων τύπου «αποστολή» • transfer_operations (int) — αριθμός επιχειρήσεων τύπου «μεταφορά»

Junior
199

Κατά τη διαδικασία εργασίας με το git bisect, αντιμετωπίσατε ένα commit που δεν μπορεί να ελεγχθεί λόγω της απουσίας του απαραίτητου περιβάλλοντος. Τι πρέπει να κάνετε σε αυτήν την περίπτωση; - Επαναλάβετε την εντολή git bisect start με άλλα hashes - Παραλείψτε αυτό το commit με την εντολή git bisect skip - Επαναφέρετε το bisect με την εντολή git bisect reset - Σημειώστε το commit ως καλό με την εντολή git bisect good - Σημειώστε το commit ως κακό με την εντολή git bisect bad

Junior
197

Δημιουργήθηκε μια ειδική ακολουθία με όνομα even_sequence, που παράγει μόνο ζυγούς αριθμούς. Τι πρέπει να τοποθετηθεί στη θέση [...], ώστε σε περίπτωση που η τιμή του even_column δεν έχει καθοριστεί κατά την εισαγωγή, να λαμβάνεται από την 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
196

Έχετε εμπειρία με τη βιβλιοθήκη Langchain; Ποιες εργασίες λύσατε με τη βοήθειά της;

Junior
194

Εξηγήστε πώς λειτουργεί τεχνικά το Git LFS και ποια πλεονεκτήματα προσφέρει σε σύγκριση με το τυπικό Git κατά την εργασία με μεγάλα αρχεία.

Junior
194

Τι θα ήθελες να κάνεις στην ομάδα μας;

Junior
191

Πώς προτείνει το Git Flow να διαμορφωθεί μια νέα έκδοση της εφαρμογής; - Δημιουργώντας ένα νέο issue-branch - Δημιουργώντας ένα hotfix-branch από το master - Δημιουργώντας ένα ξεχωριστό release-branch από το develop - Κάνοντας άμεμο commit στο branch master - Συγχωνεύοντας απευθείας το branch master με το develop

Junior
184

Δημιουργείτε μια προβολή που δείχνει όλους τους χρήστες και, αν υπάρχουν, τις τελευταίες τους παραγγελίες. Πίνακες: users(id, name) και orders(id, user_id, created_at). Ποιο είδος σύνδεσης πρέπει να χρησιμοποιηθεί ώστε να συμπεριληφθούν και αυτοί οι χρήστες που δεν έχουν παραγγελίες; CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN

Junior
183

Έχετε ανακαλύψει ότι στην ιστορία του κύριου αποθετηρίου Git υπάρχουν commits που περιέχουν κρίσιμα εμπιστευτικά δεδομένα. Αυτά τα δεδομένα πρέπει να διαγραφούν πλήρως από ολόκληρη την ιστορία του αποθετηρίου. Αξιολογήστε πόσο σωστό και ασφαλές θα ήταν να χρησιμοποιήσετε την ακόλουθη στρατηγική: δημιουργήστε ένα νέο commit που θα διαγράψει τα εμπιστευτικά δεδομένα από την τρέχουσα έκδοση των αρχείων και στείλτε το στο main. - Σωστό, αλλά όχι βέλτιστο. Είναι καλύτερο να χρησιμοποιήσετε το git revert για να αναιρέσετε commits - Συνθηματικά σωστό. Είναι μια προσωρινή λύση μέχρι να βρεθεί ένα πιο ριζικό μέσο για τη διαγραφή των δεδομένων - Λάθος και ανασφαλές. Τα δεδομένα θα διαγραφούν από την τρέχουσα έκδοση, αλλά θα παραμείνουν προσβάσιμα στην ιστορία του αποθετηρίου - Λάθος. Αυτό το commit μπορεί να προκαλέσει νέα συγκρούσεις κατά τη συγχώνευση με άλλα branches - Σωστό και ασφαλές. Αυτή η μέθοδος διασφαλίζει ότι τα δεδομένα θα διαγραφούν και δεν θα εμφανιστούν ξανά στο αποθετήριο

Junior
183

Ποιο από τα παρακάτω συμπεράσματα αντικατοπτρίζει τις συνέπειες τέτοιων ενεργειών από την άποψη της επεκταμένης μεθοδολογίας Git Flow και της διαχείρισης της ιστορίας των αλλαγών;

Junior
181

Εργάζεστε σε ένα νέο χαρακτηριστικό στο branch dev. Ξαφνικά, προκύπτει η ανάγκη να μεταβείτε γρήγορα στο branch main για να διορθώσετε ένα ορθογραφικό λάθος στο αρχείο README.md. Έχετε μερικές μη δεσμευμένες αλλαγές: στο src/feature.js (μη δεσμευμένο) και styles/main.css (δεσμευμένο). Θέλετε να αποθηκεύσετε προσωρινά όλες αυτές τις αλλαγές για να επιστρέψετε σε αυτές αργότερα στο branch dev. Ποια ακολουθία εντολών πρέπει να χρησιμοποιήσετε για αυτό; 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
178

Ανάλυση πωλήσεων ανά κατηγορία προϊόντων σε ένα λιανεμπόριο Εργάζεστε ως αναλυτής σε ένα λιανεμπόριο. Το καθήκον σας είναι να δημιουργήσετε μια αναφορά πωλήσεων ανά κατηγορία με τους ακόλουθους υπολογισμούς: • συνολικός αριθμός πωληθέντων μονάδων στην κατηγορία (total_units_sold); • συνολικά έσοδα ανά κατηγορία, λαμβάνοντας υπόψη τις εκπτώσεις, όπου η έκπτωση υπολογίζεται ως unit_price × units_sold × (1 − discount/100). Αν η έκπτωση είναι NULL, θεωρείται 0%. Στρογγυλοποιήστε σε δύο δεκαδικά ψηφία; • μέσος όρος πωληθέντων μονάδων ανά πώληση (avg_units_per_sale), στρογγυλοποιημένος σε δύο δεκαδικά ψηφία; • ποσοστό πωλήσεων χωρίς έκπτωση (no_discount_share) — αριθμός πωλήσεων με NULL ή 0% έκπτωση, διαιρεμένος με τον συνολικό αριθμό πωλήσεων στην κατηγορία, στρογγυλοποιημένο σε τρία δεκαδικά ψηφία. Τα αποτελέσματα ταξινομήστε πρώτα κατά συνολικά έσοδα (total_revenue) σε φθίνουσα σειρά, στη συνέχεια κατά μέσο όρο μονάδων ανά πώληση (avg_units_per_sale) σε αύξουσα σειρά, και τέλος κατά όνομα κατηγορίας σε αλφαβητική σειρά. Μορφή εισόδου Πίνακας sales: • sale_id (int) — μοναδικός αναγνωριστικός αριθμός πώλησης • product_id (int) — αναγνωριστικός αριθμός προϊόντος • category (text) — κατηγορία προϊόντος • sale_date (timestamp) — ημερομηνία και ώρα πώλησης • units_sold (int) — πωληθείσες μονάδες • unit_price (numeric) — τιμή ανά μονάδα • discount (numeric) — έκπτωση σε ποσοστό, μπορεί να είναι NULL Η στήλη discount μπορεί να περιέχει κενές τιμές. Μορφή εξόδου Το ερώτημα πρέπει να επιστρέφει έναν πίνακα με τα πεδία με την ακόλουθη σειρά: • category (text) — κατηγορία προϊόντος • total_units_sold (int) — συνολικός αριθμός πωληθέντων μονάδων στην κατηγορία • total_revenue (numeric) — συνολικά έσοδα ανά κατηγορία, στρογγυλοποιημένα σε δύο δεκαδικά ψηφία • avg_units_per_sale (numeric) — μέσος όρος μονάδων ανά πώληση, στρογγυλοποιημένος σε δύο δεκαδικά ψηφία • no_discount_share (numeric) — ποσοστό πωλήσεων χωρίς έκπτωση (τιμή μεταξύ 0 και 1), στρογγυλοποιημένο σε τρία δεκαδικά ψηφία Το αποτέλεσμα ταξινομείται πρώτα κατά total_revenue σε φθίνουσα σειρά, στη συνέχεια κατά avg_units_per_sale σε αύξουσα σειρά, και τέλος κατά όνομα κατηγορίας σε αλφαβητική σειρά.

Junior
173

Ποια στρατηγική θα ήταν αποτελεσματική για την εξάλειψη της ευπάθειας σε όλα τα κλαδιά με τον ελάχιστο κίνδυνο διατάραξης της λειτουργίας του έργου; - Δημιουργία σειράς revert commits για το προβληματικό commit και όλα τα commits που το διόρθωσαν μερικώς, στη συνέχεια δημιουργία ενός νέου commit με την πλήρη διόρθωση - Δημιουργία hotfix branch από ένα σημείο πριν το προβληματικό commit, πραγματοποίηση διορθώσεων και συγχώνευση αυτής της branch με όλα τα επηρεαζόμενα κλαδιά - Δημιουργία ενός ενιαίου commit διόρθωσης χρησιμοποιώντας git revert abc123 στο κύριο κλαδί και στη συνέχεια cherry-pick αυτού του commit σε όλα τα release κλαδιά - Χρήση git bisect για ακριβή εντοπισμό του προβληματικού κώδικα, δημιουργία patch και εφαρμογή σε όλα τα κλαδιά με git am - Χρήση git rebase -i για επεξεργασία του προβληματικού commit σε κάθε κλαδί, ακολουθούμενη από force-push (force-push)

Junior
170

Ο [όνομα] διόρθωσε τα λάθη και το στυλ στο κείμενο: «Γεια! Είμαι ο [όνομα], είχες ζητήσει προηγουμένως να μεταβείς στο Telegram» — με τυπικό τρόπο, αλλά σεβαστικά

Junior
169

Μερίδιο της κυκλοφορίας των bots Η ομάδα κατά της απάτης έχει αναπτύξει έναν μηχανισμό για τον εντοπισμό της κυκλοφορίας των bots στον ιστότοπο του καταστήματος: όταν ένας bot εισέρχεται στον ιστότοπο, προστίθεται η υποαλυσίδα "bot" (χωρίς διάκριση πεζών/κεφαλαίων) στις παραμέτρους του URL του. Αν το user_id έχει ταυτοποιηθεί ως bot τουλάχιστον μία φορά τον Δεκέμβριο, πρέπει πάντα να θεωρείται ως bot. Μελετήστε το σύνολο δεδομένων με τις επισκέψεις χρηστών στον ιστότοπο και υπολογίστε το ποσοστό των bots επί του συνολικού αριθμού χρηστών τον Δεκέμβριο του 2024 (στρογγυλοποιήστε σε ένα δεκαδικό). Μορφή εισόδου Πίνακας visits: - event_date (date) — ημερομηνία επίσκεψης - user_id (int) — μοναδικός αναγνωριστικός χρήστη - url (string) — σύνδεσμος μέσω του οποίου πραγματοποιήθηκε η επίσκεψη Τα δεδομένα δεν περιέχουν ελλείποντα ή λανθασμένα στοιχεία. Μορφή εξόδου Το ερώτημα πρέπει να επιστρέφει έναν πίνακα με τα πεδία: - share (float) — ποσοστό των bots επί του συνολικού αριθμού χρηστών τον Δεκέμβριο, στρογγυλοποιημένο σε ένα δεκαδικό.

Junior
168
/3