Λάθος #1: Να ξεκινάτε κώδικα χωρίς να ξεκαθαρίσετε τις απαιτήσεις

Το πιο συνηθισμένο λάθος

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

Τα προβλήματα των τεχνικών συνεντεύξεων σχεδόν ποτέ δεν είναι τόσο απλά όσο φαίνονται αρχικά. Οι περιορισμοί είναι κρυμμένοι, οι οριακές περιπτώσεις παραλείπονται σκόπιμα και η «σωστή» ερμηνεία εξαρτάται συχνά από πληροφορίες που δεν έχετε ακόμα. Το να πηδάτε κατευθείαν σε υλοποίηση του προβλήματος όπως το καταλάβατε — πριν επιβεβαιώσετε ότι το καταλάβατε σωστά — είναι ο τρόπος με τον οποίο οι υποψήφιοι περνούν 20 λεπτά λύνοντας λάθος πρόβλημα.

Ακόμα πιο σημαντικό, οι συνεντευκτές αφήνουν σκόπιμα αόριστες τις απαιτήσεις για να δουν αν αναγνωρίζετε την ασάφεια και κάνετε καλές ερωτήσεις. Ένας υποψήφιος που ρωτά «Να υποθέσω ότι ο πίνακας εισόδου είναι ταξινομημένος;» πριν γράψει κώδικα δείχνει την ίδια κρίση που φέρνει ένας καλός μηχανικός σε πραγματικά έργα. Ένας υποψήφιος που υποθέτει σιωπηλά ότι ο πίνακας είναι ταξινομημένος — και χτίζει γύρω από αυτή την υπόθεση — δείχνει το αντίθετο.

Η λύση

Πριν γράψετε μία γραμμή κώδικα, διατυπώστε φωναχτά την κατανόησή σας του προβλήματος και κάντε τουλάχιστον δύο διευκρινιστικές ερωτήσεις: μία για τους περιορισμούς (μέγεθος εισόδου, αναμενόμενοι τύποι δεδομένων, οριακές περιπτώσεις) και μία για τις απαιτήσεις (τι πρέπει να επιστρέφει η συνάρτηση για κενή είσοδο; τι γίνεται με τα διπλότυπα;). Μετά επιβεβαιώστε: «Άρα ο στόχος μου είναι να επιστρέψω το X δεδομένου του Y — σωστά;» Μόνο τότε ξεκινήστε να γράφετε κώδικα.

Λάθος #2: Να μένετε σιωπηλοί ενώ λύνετε το πρόβλημα

Σκοτώνει περισσότερες προσφορές από τις λάθος απαντήσεις

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

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

Η λύση

Σκεφτείτε φωναχτά. Πείτε τι εξετάζετε και γιατί το απορρίπτετε: «Σκέφτομαι πρώτα μια προσέγγιση brute-force O(n²) απλώς για να εξασφαλίσω την ορθότητα και μετά θα δω τη βελτιστοποίηση.» Πείτε πότε κολλάτε: «Ξέρω ότι πρέπει να παρακολουθώ ποια στοιχεία έχω δει — αποφασίζω ανάμεσα σε hash map και ταξινομημένο πίνακα γι' αυτό.» Αυτή η αφήγηση επιτρέπει στον συνεντευκτή να δει τη σκέψη σας, να σας βοηθήσει αν ξεφεύγετε και να αξιολογήσει την προσέγγισή σας στην επίλυση προβλημάτων ανεξάρτητα από το αν καταλήξετε στη βέλτιστη λύση.

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

Λάθος #3: Να μην δοκιμάζετε ή να μην κάνετε debug στη λύση σας

Δείχνει νεανικά ένστικτα

Πολλοί υποψήφιοι γράφουν τη λύση τους, την κοιτούν σύντομα και λένε «νομίζω ότι φαίνεται σωστή» — και μετά την παραδίδουν. Αυτό δείχνει ότι δεν έχετε το ένστικτο να δοκιμάζετε τη δική σας δουλειά, που είναι ένα από τα πιο σημαντικά ένστικτα στη μηχανική λογισμικού.

Οι συνεντευκτές σε ισχυρές εταιρείες έχουν συχνά μια άτυπη πολιτική: μια λύση που δεν έχει δοκιμαστεί από τον υποψήφιο θεωρείται ημιτελής, ανεξάρτητα από το αν φαίνεται σωστή. Θέλουν να δουν να εφαρμόζετε τις ίδιες συνήθειες που θα φέρνατε σε ένα πραγματικό pull request.

Η λύση

Αφού γράψετε τη λύση σας, να την ακολουθείτε πάντα χειροκίνητα με τουλάχιστον δύο δοκιμαστικές περιπτώσεις: μια κανονική και μια οριακή. Περάστε από κάθε γραμμή, παρακολουθήστε τις τιμές των μεταβλητών και επαληθεύστε το αποτέλεσμα. Αφηγηθείτε καθώς το κάνετε: «Εντάξει, αν η είσοδος είναι [3, 1, 4], σε αυτό το βήμα το i είναι 0 και το current_max είναι 3, άρα...» Αυτή η διαδικασία πιάνει πραγματικά bugs και δείχνει ωριμότητα μηχανικού. Για τις οριακές περιπτώσεις, σκεφτείτε συστηματικά: κενή είσοδο, είσοδο ενός στοιχείου, όλα τα στοιχεία ίσα, αρνητικούς αριθμούς (αν ισχύει) και το μέγιστο δυνατό μέγεθος εισόδου.

Λάθος #4: Αδύναμη επικοινωνία στο system design

Ιδιαίτερα συνηθισμένο σε μεσαίο-ανώτερο επίπεδο

Οι συνεντεύξεις system design διαφέρουν από τις συνεντεύξεις προγραμματισμού σε ένα κρίσιμο σημείο: δεν υπάρχει μία μοναδική σωστή απάντηση. Ο συνεντευκτής αξιολογεί τη διαδικασία συλλογισμού σας, την επίγνωση των ανταλλαγών (tradeoffs) και την ικανότητά σας να οδηγείτε μια συζήτηση σχεδιασμού. Οι υποψήφιοι που παρουσιάζουν με σιγουριά ένα μοναδικό σχέδιο, χωρίς να εξερευνούν εναλλακτικές ή να αναγνωρίζουν tradeoffs, αποτυγχάνουν συχνά στους γύρους system design ακόμα κι αν η αρχιτεκτονική τους είναι τεχνικά ορθή.

Συνηθισμένοι τρόποι αποτυχίας: να πηδούν κατευθείαν σε διαγράμματα συστατικών πριν ορίσουν απαιτήσεις και κλίμακα, να χρησιμοποιούν buzzwords («θα χρησιμοποιήσουμε Kafka για τη ροή γεγονότων») χωρίς να εξηγούν τον συλλογισμό και να μην αναφέρουν tradeoffs («μια σχεσιακή βάση δεδομένων δουλεύει εδώ, αλλά σε 10 φορές τη σημερινή κλίμακα θα αρχίσουμε να βλέπουμε write contention σε αυτόν τον πίνακα»).

Η λύση

Δομήστε κάθε απάντηση system design με την ίδια προσέγγιση πέντε βημάτων: (1) Ξεκαθαρίστε απαιτήσεις και περιορισμούς — λειτουργικούς και μη λειτουργικούς, προσδοκίες κλίμακας. (2) Εκτιμήστε την κλίμακα — QPS, όγκο δεδομένων, αναλογία ανάγνωσης/εγγραφής. (3) Προτείνετε σχέδιο υψηλού επιπέδου — κύρια συστατικά, ροές δεδομένων. (4) Εμβαθύνετε στα ενδιαφέροντα σημεία — όπου βρίσκεται η πολυπλοκότητα. (5) Συζητήστε tradeoffs και εναλλακτικές — τι επιλέξατε και γιατί δεν επιλέξατε τις εναλλακτικές.

Εξασκηθείτε να λέτε «Επέλεξα το X αντί του Y λόγω του tradeoff Z» ως συνήθεια. Οι συνεντευκτές σε ανώτερα επίπεδα αξιολογούν αν κατανοείτε γιατί το σχέδιό σας κάνει τις ανταλλαγές που κάνει — όχι απλώς ότι δουλεύει.

Λάθος #5: Να τα παρατάτε αντί να σκέφτεστε φωναχτά

Ο συνεντευκτής περιμένει να σας βοηθήσει

Όταν οι υποψήφιοι χτυπούν σε πραγματικό τοίχο — δεν βλέπουν τον δρόμο μπροστά — συχνά σωπαίνουν, παγώνουν και τελικά λένε «Δεν είμαι σίγουρος πώς να συνεχίσω.» Αυτό κλείνει τη συνέντευξη και τελειώνει τις πιθανότητες ανάκαμψης, ακόμα κι αν θα το είχαν βρει με άλλα 2 λεπτά δομημένης σκέψης.

Να κάτι που οι περισσότεροι υποψήφιοι δεν ξέρουν: οι περισσότεροι συνεντευκτές θέλουν να δώσουν υποδείξεις. Δεν είναι εκεί για να σας βλέπουν να αποτυγχάνετε — προσπαθούν να εκτιμήσουν πού βρίσκεται το ταβάνι σας και ένας καλός συνεντευκτής θα σας καθοδηγήσει πέρα από ένα εμπόδιο για να δει πόσο μακριά μπορείτε να φτάσετε με υποστήριξη. Αλλά μπορούν να βοηθήσουν μόνο αν ξέρουν πού κολλήσατε.

Η λύση

Αντί να σωπαίνετε όταν κολλάτε, αφηγηθείτε την κατάστασή σας: «Ξέρω ότι πρέπει να παρακολουθώ κάποια κατάσταση ανάμεσα στις επαναλήψεις, αλλά δεν βλέπω άμεσα τη σωστή δομή δεδομένων. Να σκεφτώ ποιες ιδιότητες μετράνε εδώ...» Αυτό δείχνει ότι εξακολουθείτε να συμμετέχετε, δίνει στον συνεντευκτή το περιθώριο να βοηθήσει και συχνά πυροδοτεί τη δική σας λύση — το να διατυπώσετε σε τι έχετε κολλήσει αναδεικνύει συχνά την απάντηση.

Αν πραγματικά χρειάζεστε υπόδειξη, ζητήστε τη απευθείας και χωρίς αμηχανία: «Νομίζω ότι χρειάζομαι μια μικρή ώθηση εδώ — υπάρχει κάποια ιδιότητα δομής δεδομένων που πρέπει να σκεφτώ;» Αυτό είναι επαγγελματικό. Η σιωπή δεν είναι.

Μπόνους: πώς να προετοιμαστείτε ώστε να μην συμβούν αυτά τα λάθη

Το να γνωρίζετε αυτά τα λάθη θεωρητικά δεν τα αποτρέπει υπό την πίεση της συνέντευξης. Γι' αυτό η εξάσκηση σε ρεαλιστικές συνθήκες μετράει τόσο. Μερικές αρχές για την προετοιμασία τεχνικής συνέντευξης που δουλεύουν:

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