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

Μόλις τελείωσα επτά επιτόπιες συνεντεύξεις σε εταιρείες τεχνολογίας Silicon Valley. Αποδέχτηκα τελικά μια προσφορά για δουλειά μηχανικής λογισμικού από το Facebook.

Να πώς προετοιμάστηκα για αυτές τις συνεντεύξεις και τι έμαθα στην πορεία.

Το πολυετές ταξίδι μου προς τη Silicon Valley

Όταν σπούδαζα Επιστήμη Υπολογιστών στο πανεπιστήμιο μου στην Αυστραλία, πάντα οραματιζόμουν το μέλλον μου ως μηχανικός λογισμικού στη Silicon Valley.

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

Άφησα τη θέση μου ως Lead iOS Engineer σε μια καταπληκτική εταιρεία στη Μελβούρνη και επέστρεψα στην πόλη μου στο Περθ για να σπουδάσω. Εκεί θα προετοιμαζόμουν για τη διαδικασία συνέντευξης μπροστά μου στη Silicon Valley. Ήξερα ότι θα ήταν απίστευτα δύσκολο και επίπονο.

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

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

Η συνέντευξη είναι δεξιότητα

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

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

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

Όπως με πολλά άλλα πράγματα στη ζωή, η πρακτική θα βελτιώσει την αυτοπεποίθησή σας.

Οι διαφορετικοί τύποι συνέντευξης που συνάντησα

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

Κατά τη διάρκεια του ταξιδιού μου στη Silicon Valley, κατάφερα να συντάξω συνολικά επτά επιτόπιες συνεντεύξεις. Αυτό μου έδωσε μια μοναδική προοπτική του τρέχοντος τοπίου για συνέντευξη.

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

Θα αναφερθώ εν συντομία σε κάθε ένα από τα θέματα που αντιμετώπισα.

Συνεντεύξεις αλγορίθμου

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

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

Προσωπικά, μου αρέσουν πραγματικά οι αλγόριθμοι whiteboard γιατί δεν χρειάζεται απαραίτητα να ανησυχώ για τη σύνταξη σύντακτης σύνταξης (τις περισσότερες φορές), η οποία μου επιτρέπει να επικεντρωθώ αποκλειστικά στο πρόβλημα που αντιμετωπίζω. Άλλοι άνθρωποι μπορεί να μην τους αρέσει το whiteboarding, αλλά σε αυτούς θα έλεγα να το ασκώ με συνέπεια και μπορεί να αλλάξει γνώμη.

Συνεντεύξεις Σχεδιασμού Αρχιτεκτονικής

Αυτή είναι μια ενδιαφέρουσα συνέντευξη και μια που υποτίμησα. Ο ερευνητής θα σας ζητήσει να σχεδιάσετε ένα σύστημα (σε έναν πίνακα φυσικά), όπως ένα σύστημα εισιτηρίων στάθμευσης αυτοκινήτων, chat messenger, twitter feed, μεταξύ άλλων κοινών συστημάτων.

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

Φυσικά, πρέπει να καθοδηγήσετε τη συνομιλία για να καλύψετε τις γνώσεις σας σχετικά με τον τρόπο λειτουργίας των συστημάτων. Εάν είστε μηχανικός backend, δεν θα σκεφτόσασταν πραγματικά τη μηχανική των λεπτομερειών εφαρμογής πελάτη, εκτός εάν είχατε κάποια προηγούμενη εμπειρία σε αυτόν τον τομέα. Είμαι μηχανικός iOS, οπότε μίλησα για μοτίβα αρχιτεκτονικής, διαμόρφωση λειτουργικότητας, μοτίβα σχεδίασης αντί για τον τρόπο κλιμάκωσης των τελικών σημείων API, προσθέτοντας εργαζόμενους, AWS και άλλα.

Συμπεριφορικές συνεντεύξεις

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

Οι ερωτήσεις συνήθως είναι:

Πώς αντιμετωπίζετε την αποτυχία;

Ποια είναι η μεγαλύτερη αδυναμία σας;

Πώς επιλύετε τις συγκρούσεις;

Τι θα κάνατε διαφορετικά;

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

Weakness «Η αδυναμία μου είναι ότι είμαι πολύ εστιασμένη»

«Όλα ήταν λάθος του Τζέρι, ήταν άρρωστος για το μεγαλύτερο μέρος του έργου»

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

Πολιτισμός Fit

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

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

Προγραμματισμός ζευγών

Μια ενδιαφέρουσα κατηγορία για την οποία θα συνδυαστεί με έναν άλλο μηχανικό μπροστά από έναν υπολογιστή που έχει ρυθμιστεί με ένα περιβάλλον ανάπτυξης, σαν αυτό που θα χρησιμοποιούσατε στον πραγματικό κόσμο. Σας δίνεται μια βασική εργασία με μια λίστα απαιτήσεων που πρέπει να ολοκληρώσετε, καθώς ολοκληρώνετε κάθε εργασία, ο ερευνητής θα σας ζητήσει να εφαρμόσετε περισσότερες λειτουργίες έως ότου επιτευχθεί το χρονικό όριο. Είστε ελεύθεροι να χρησιμοποιήσετε όσους πόρους θέλετε, όπως Stack Overflow ή διαδικτυακή τεκμηρίωση.

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

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

Εύρεση και επιδιόρθωση σφαλμάτων

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

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

Δοκιμή γνώσης τομέα

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

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

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

Κατανόηση των λειτουργικών συστημάτων

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

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

Πώς πρέπει να προετοιμαστείτε

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

Ελάχιστες γνώσεις

Αν κάποιος με ρωτούσε τι ένιωθα ότι θα ήταν τομείς στους οποίους πρέπει να επικεντρωθώ, θα πρότεινα τα εξής:

  • Μάθετε να γράφετε κώδικα με το χέρι σε χαρτί και έναν πίνακα πρώτα και στη συνέχεια να το ρίξετε σε ένα IDE για επισήμανση σύνταξης, αυτό θα πρέπει να γίνει δεύτερη φύση για εσάς.
  • Αναπτύξτε βαθιά γνώση των δομών δεδομένων , των πλεονεκτημάτων και των αδυναμιών τους σε σύγκριση μεταξύ τους. Ανακάλυψα ότι η εφαρμογή δομών δεδομένων και η συμπεριφορά τους από το μηδέν με δίδαξαν πολύ περισσότερα από όσα ήξερα από τις αφηρημένες έννοιες τους.
  • Κατανοήστε πλήρως τη σημειογραφία Big O τόσο για τις πολυπλοκότητες χρόνου όσο και για το χώρο, αυτό θα συνδυαστεί τέλεια με τον αλγόριθμο και τις ερωτήσεις ταξινόμησης.
  • Πιάστε όλους τους σημαντικούς αλγορίθμους ταξινόμησης επειδή η διαφορά στις πολυπλοκότητες χρόνου / χώρου έχει τη δυνατότητα να εκτροχιάσει τη βέλτιστη λύση για έναν αλγόριθμο που προσπαθείτε να λύσετε.

Πότε να ξεκινήσετε

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

Μην ανησυχείς

Το έχεις.

Πόροι

Χλευάσουμε συνεντεύξεις

  • interviewing.io (beta), δωρεάν
  • Pramp, δωρεάν
  • Καριέρα, πληρωμένος

Αλγόριθμοι

  • Κρατώντας τη συνέντευξη κώδικα, βιβλίο
  • byte by byte, ιστότοπος και YouTube
  • CS50, YouTube
  • Συνέντευξη κέικ, ιστότοπος
  • HackerRank, ιστότοπος
  • LeetCode, ιστότοπος

Λειτουργικά συστήματα

  • Έννοιες λειτουργικού συστήματος, βιβλίο

Σχεδιασμός Αρχιτεκτονικής

  • Εισαγωγή στην Αρχιτεκτονική και τα Συστήματα, YouTube

Συμπεριφορική

  • Εισαγωγή στις Συμπεριφορικές Συνεντεύξεις, YouTube

Αν σας αρέσει αυτό που έχετε διαβάσει σήμερα, μπορείτε να ελέγξετε τα άλλα άρθρα μου σχετικά με την ανάπτυξη iOS και Swift ή αν θέλετε να επικοινωνήσετε, στείλτε μου ένα tweet ή ακολουθήστε με στο Twitter @andyyhope , κάνει πραγματικά τη μέρα μου.

Andyy Hope (@AndyyHope) | Κελάδημα

Μηχανικός iOS. Blogger / Ομιλητής του Swift & iOS twitter.com