8 Ερωτήσεις Συνέντευξης για SQL (με Απαντήσεις)

Η συνέντευξη για δουλειά είναι μια ιδιαίτερα αγχωτική διαδικασία τόσο για άτομα που βγαίνουν πρώτη φορά σε αναζήτηση εργασίας όσο και και για πιο έμπειρους.

Το ίδιο φυσικά ισχύει και στην περίπτωση ενός data scientist ή developer ο οποίος καλείται να αποδείξει τις τεχνικές του γνώσεις πάνω σε εργαλεία και γλώσσες προγραμματισμού όπως η SQL.

Η προετοιμασία λοιπόν και η οργάνωση πριν από κάθε στάδιο της συνέντευξης σε αυτούς τους ανταγωνιστικούς κλάδους αποτελεί το κλειδί για καλύτερη απόδοση που θα φέρει τον υποψήφιο ένα βήμα πιο κοντά στην επιτυχία και την πρόσληψή του.

Aν λοιπόν βρίσκεσαι στην διαδικασία αναζήτησης εργασίας ως Data Scientist ή ως Developer και θές να γνωρίζεις ποιες είναι οι πιθανές ερωτήσεις συνέντευξης που θα σου κάνουν, προκειμένου να είσαι κατάλληλα προετοιμασμένος μπορείς να διαβάσεις τον παρακάτω οδηγό.

Στο σημερινό άρθρο έχουμε συγκεντρώσει τις 8 πιο συχνές ερωτήσεις συνέντευξης για SQL με τις αντίστοιχες απαντήσεις τους.

Ας ξεκινήσουμε.

Ερωτήσεις Συνέντευξης για SQL

Οι ερωτήσεις συνέντευξης για SQL μπορούν να διαφέρουν ως προς τη δυσκολία ανάλογα με το επίπεδο γνώσης και θέσης σε μια εταιρεία, αν, για παράδειγμα, είναι entry level θέση ή πιο προχωρημένου επιπέδου θέση.

Εμείς στο σημερινό άρθρο έχουμε συγκεντρώσει τις ακόλουθες ερωτήσεις για κάποιον που βρίσκεται στα πρώτα του βήματα.

Ας ξεκινήσουμε λοιπόν με την πρώτη ερώτηση.

   Ερώτηση #1: Πού Εφαρμόζεται η SQL;

Μια πολύ πιθανή ερώτηση που ενδέχεται να σου κάνουν για την SQL κατά την συνέντευξή σου, δεν είναι άλλη από το τι είναι πού εφαρμόζεται η SQL.

Πάμε λοιπόν να δούμε πώς θα μπορούσες να απαντήσεις.

   Απάντηση:

Η SQL (Structured Query Language) είναι μια γλώσσα προγραμματισμού που χρησιμοποιείται για αλληλεπίδραση με σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων (RDBMS). 

Η SQL επιτρέπει την υποβολή ερωτημάτων σε μια βάση δεδομένων με πολλούς τρόπους.

Μπορεί να χρησιμοποιηθεί σε οποιαδήποτε εταιρεία που αποθηκεύει και αναλύει δεδομένα, συνδράμοντας στην εύκολη αναζήτηση και διαχείριση των δεδομένων αυτών.

Έχει ποικίλες εφαρμογές, μεταξύ των οποίων, η δημιουργία και η ενημέρωση πινάκων σε μια βάση δεδομένων, η ανάκτηση και η σύνοψη σημαντικών στοιχείων από έναν ή περισσότερους πίνακες.

Ακόμη, ενσωματώνεται εύκολα με άλλες δημοφιλείς γλώσσες προγραμματισμού, όπως η Python ή η R, που χρησιμοποιούνται ιδιαίτερα από τους Data Scientists.

Αφού είδαμε ορισμένα βασικά στοιχεία για την SQL ας προχωρήσουμε σε κάποια πιο τεχνικά στοιχεία.

   Ερώτηση #2: Ποια είναι η Διαφορά Μεταξύ Ενός Πρωτεύοντος Κλειδιού και Ενός Μοναδικού Κλειδιού;

   Απάντηση:

Ένα πρωτεύον κλειδί (primary key) είναι μια στήλη ή ένα σύνολο από στήλες που προσδιορίζουν μοναδικά κάθε σειρά σε έναν πίνακα. Ένας πίνακας μπορεί να έχει μόνο ένα πρωτεύον κλειδί.

Από την άλλη πλευρά, ένα μοναδικό κλειδί (unique key) είναι επίσης μια στήλη ή ένα σύνολο στηλών που προσδιορίζει μοναδικά κάθε σειρά σε έναν πίνακα, όμως ένας πίνακας μπορεί να έχει περισσότερα από ένα μοναδικά κλειδιά.

Το πρωτεύον και το μοναδικό κλειδί μοιράζονται ένα κοινό στοιχείο, υπάρχουν όμως ορισμένες επιμέρους διαφορές:

- Ένα πρωτεύον κλειδί δεν μπορεί να έχει τιμές NULL, ενώ ένα μοναδικό κλειδί μπορεί να έχει μία τιμή NULL.

- Ένα πρωτεύον κλειδί δημιουργεί ένα ευρετήριο συμπλέγματος (clustered index) στη στήλη, ενώ ένα μοναδικό κλειδί δημιουργεί ένα μη συμπλεγμένο ευρετήριο από default.

- Ένα πρωτεύον κλειδί μπορεί να αναφέρεται από ένα ξένο κλειδί από άλλο πίνακα, ενώ ένα μοναδικό κλειδί δεν μπορεί να αναφέρεται από ένα ξένο κλειδί.

Σημείωση: Ένα ξένο κλειδί (foreign key) είναι μια ή πολλές στήλες ενός πίνακα στον οποίο επιβλήθηκε ο περιορισμός για τη σύνδεση αυτής της στήλης με το πρωτεύον κλειδί ενός άλλου πίνακα. Ο σκοπός αυτών το κλειδιών λοιπόν έγκειται στο να διατηρούν συνδεδεμένους διάφορους πίνακες ενός database.

   Ερώτηση #3: Τι Σημαίνει ο Όρος JOIN και Ποιοι Τύποι Υπάρχουν;

Μια ακόμη ερώτηση που μπορούν να σου κάνουν κατά τη διάρκεια της συνέντευξής σου για την SQL, μπορεί να είναι να μιλήσεις για τον όρο JOIN.

   Απάντηση:

Ο όρος JOIN αποτελεί έναν όρο που χρησιμοποιείται για το συνδυασμό και την ανάκτηση εγγραφών από δύο ή περισσότερους πίνακες.

Οι τύποι οι οποίοι υπάρχουν είναι οι ακόλουθοι:

(INNER) JOIN: Ένα INNER JOIN επιστρέφει μόνο τις σειρές που ταιριάζουν με τη συνθήκη ένωσης και στους δύο (ή σε όλους) τους πίνακες.

LEFT (OUTER) JOIN: Ένα LEFT (OUTER) JOIN επιστρέφει όλες τις σειρές από τον αριστερό πίνακα και τις αντίστοιχες σειρές από τον δεξιό πίνακα ή την τιμή NULL σε περίπτωση που δεν υπάρχει αντιστοιχία.

RIGHT (OUTER) JOIN: Ένα RIGHT (OUTER) JOIN επιστρέφει όλες τις σειρές από τον δεξιό πίνακα και τις αντίστοιχες γραμμές από τον αριστερό πίνακα.

FULL (OUTER) JOIN: Ένα FULL (OUTER) JOIN επιστρέφει όλες τις σειρές και από τους δύο πίνακες, με μηδενικές τιμές για τις μη αντιστοιχισμένες σειρές.

   Ερώτηση #4: Ποια είναι η Διαφορά Μεταξύ UNION και UNION ALL;

   Απάντηση:

Το UNION και το UNION ALL είναι δύο operators στην SQL που συνδυάζουν τα σύνολα αποτελεσμάτων δύο ή περισσότερων queries σε ένα ενιαίο σύνολο αποτελεσμάτων.

Η διαφορά μεταξύ τους εντοπίζεται στο πώς χειρίζονται διπλές σειρές.

Πιο συγκεκριμένα, το UNION αφαιρεί διπλότυπες σειρές από το τελικό σύνολο αποτελεσμάτων, ενώ το UNION ALL διατηρεί διπλότυπες σειρές στο τελικό σύνολο αποτελεσμάτων.

   Ερώτηση #5: Ποια είναι η Διαφορά Μεταξύ των GROUP BY και ORDER BY Clauses;

   Απάντηση:

Το GROUP BY και το ORDER BY είναι δύο όροι στην SQL που χρησιμοποιούνται για την οργάνωση δεδομένων με διαφορετικούς τρόπους.

Ο όρος GROUP BY χρησιμοποιείται για την ομαδοποίηση δεδομένων σε υποσύνολα με βάση μία ή περισσότερες στήλες ή εκφράσεις.

Ο όρος ORDER BY χρησιμοποιείται για την ταξινόμηση δεδομένων σε αύξουσα ή φθίνουσα σειρά με βάση μία ή περισσότερες στήλες ή εκφράσεις.

   Ερώτηση #6: Ποια είναι η Διαφορά Μεταξύ των Clauses WHERE και HAVING;

   Απάντηση:

Οι όροι WHERE και HAVING στην SQL χρησιμοποιούνται για το φιλτράρισμα δεδομένων με βάση ορισμένες συνθήκες.

Διαφέρουν μεταξύ τους ως προς το πότε εφαρμόζονται και τι είδους συνθήκες μπορούν να χρησιμοποιήσουν.

Το WHERE εφαρμόζεται πριν από την ομαδοποίηση των δεδομένων χρησιμοποιώντας την πρόταση GROUP BY που αναφέραμε νωρίτερα και δύναται να χρησιμοποιεί μόνο συνθήκες που περιλαμβάνουν στήλες, σταθερές, operators και συναρτήσεις.

Αντιθέτως, ο όρος HAVING εφαρμόζεται μετά την ομαδοποίηση των δεδομένων χρησιμοποιώντας την πρόταση GROUP BY και μπορεί να χρησιμοποιεί συνθήκες που περιλαμβάνουν στήλες, σταθερές, τελεστές, συναρτήσεις και αθροιστικές συναρτήσεις.

   Ερώτηση #7: Τι είναι ένα Υποερώτημα (Subquery) στην SQL;

   Απάντηση:

Ένα subquery ορίζεται ως ένα ερώτημα που είναι ένθετο μέσα σε ένα άλλο ερώτημα και δύναται να χρησιμοποιηθεί για την επιστροφή μιας μεμονωμένης τιμής, μιας λίστας τιμών ή ενός πίνακα ως μέρος του κύριου ερωτήματος.

Επίσης, μπορεί να χρησιμοποιηθεί σε διάφορα clauses του κύριου ερωτήματος, όπως SELECT, FROM, WHERE, HAVING και ORDER BY.

Ας υποθέσουμε ότι θέλουμε να βρούμε το μέσο ποσό παραγγελίας για κάθε πελάτη.

Μπορούμε να χρησιμοποιήσουμε ένα subquery για να υπολογίσουμε το μέσο ποσό παραγγελίας για κάθε customer_id στον πίνακα παραγγελιών και έπειτα να το συνδέσουμε με τον πίνακα πελατών για να εμφανιστεί το όνομα πελάτη και το μέσο ποσό παραγγελίας.

Το ερώτημα θα μπορούσε να διατυπωθεί ως εξής:

   Ερώτηση #8: Τι είναι ένα Ευρετήριο στην SQL;

Κλείνοντας, μια πολύ συχνή ερώτηση SQL αφορά το ευρετήριο (index) και πώς αυτό χρησιμοποιείται.

Μια ενδεικτική απάντηση είναι η ακόλουθη:

   Απάντηση:

Ένα ευρετήριο (index) είναι μια δομή δεδομένων που αποθηκεύει ένα υποσύνολο στηλών και σειρών από έναν πίνακα με ταξινομημένη σειρά.

Ένα ευρετήριο μπορεί να χρησιμοποιηθεί για την επιτάχυνση των ερωτημάτων που περιλαμβάνουν διαδικασίες όπως φιλτράρισμα, ταξινόμηση, joining ή συγκέντρωση δεδομένων με βάση αυτές τις στήλες.

Για να τη δημιουργία ενός index, μπορεί να χρησιμοποιηθεί το CREATE INDEX και έπειτα το όνομα, ο πίνακας και οι στήλες του ευρετηρίου.

Για τη χρήση ενός ευρετηρίου, ο διακομιστής της βάσης δεδομένων θα επιλέξει αυτόματα το καλύτερο ευρετήριο για χρήση με βάση το εκάστοτε ερώτημά.

Για παράδειγμα, ας υποθέσουμε ότι επιθυμούμε να δημιουργήσουμε ένα ευρετήριο στη στήλη customer_id του πίνακα παραγγελιών για την επιτάχυνση ερωτημάτων που φιλτράρουν κατά customer_id.

Θα μπορούμε να διατυπωθεί κάπως έτσι:

CREATE INDEX idx_orders_customer ON παραγγελίες (customer_id);

Με Λίγα Λόγια

Είδαμε, λοιπόν, 8 πολύ σημαντικές ερωτήσεις συνέντευξης SQL μαζί με τις απαντήσεις που ταιριάζουν στην κάθε μια ξεχωριστά.

Με αυτόν τον τρόπο, ένας data scientist ή developer μπορεί να έχει μια καλύτερη εικόνα για πιθανές ερωτήσεις που μπορεί να του κανουν και έτσι να έχει προετοιμαστεί ακόμα καλύτερα για μια συνέντευξη.

Αν, λοιπόν, θέλεις να γίνεις ένας data scientist και να εξελιχθείς επαγγελματικά, τότε ανακάλυψε το Data Science Bootcamp, λάβε ουσιαστική πρακτική γνώση και εξασφάλισε την θέση σου στην αγορά εργασίας!

Big Blue Data Academy