Saturday, January 30, 2010

τέσσερις ερωτήσεις

Έχω ένα φίλο που δουλεύει για την Google Inc. Την τελευταία φορά που τον είδα (την πρωτοχρονιά), ανέφερε ότι η οικονομική κρίση τελείωσε και ότι η Google κάνει μαζικές προσλήψεις. Ανέφερε ακόμη ότι είναι σημαντικό να σε προτείνει κάποιος που ήδη δουλεύει για την Google, και ότι αν σε προσλάβουν παίρνει referral bonus περί τα 4000 αμερικάνικα δολάρια. Οπότε, του έστειλα το βιογραφικό μου για να το προωθήσει στην Google (μπας και μου βρουν καμιά δουλειά που να μου ταιριάζει, πχ να γυαλίζω τα πόμολα από τις πόρτες των γραφείων των μηχανικών).

Είκοσι μέρες μετά, ένα βροχερό πρωινό μιας παρασκευής του Γενάρη, έρχεται ένα email από κάποιον Terry από τα γραφεία της Google στην εξωτική Ελβετία, και μου λέει, αν γίνεται παρακαλώ, να κανονίσουμε ένα τηλεφωνικό ραντεβού για μια πρώτη επαφή και ένα test. Η θέση για την οποία μιλούσαμε δεν ήταν τελικά γυαλιστής πόμολων, αλλά Site Reliability Engineer, ένας από αυτούς που υποστηρίζουν (μάλλον με τις δυνατές πλάτες τους) τους χιλιάδες υπολογιστές και software που τρέχουν τα gmail, google maps, picasa κτλ.

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

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

"What is the average number of comparisons of the Quicksort algorithm, and what is the worst case?", λέει ο Τέρης. "Σκατά" σκέφτομαι εγώ. Τέτοιου είδους ερωτήσεις θα είναι. Ψάχνω τη μνήμη μου για λίγο, και του λέω "αν θυμάμαι καλά, είναι O(log(n)), αλλά για την χειρότερη περίπτωση δεν έχω ιδέα".

"Και αυτό σωστό", μου λέει ο Terry, αν και δεν ήταν. "Θα σου δώσω μισό βαθμό".

"Place the following in order of execution speed: CPU register read, disk seek, context switch, memory read", με ρωτάει μετά ο Terry.

"Αν και δεν έχω την παραμικρή ιδέα τι είναι το context switch, μαντεύω ότι η σωστή σειρά είναι CPU register read, memory read, context switch, disk seek" του λέω εγώ.

"Μάντεψες σοφά" μου λέει ο Terry, "παίρνεις έναν βαθμό"

"Μπράβο μου", σκέφτομαι εγώ.

"What type of variable is a void star (void *) variable in C/C++", αποφασίζει να ρωτήσει μετά ο Terry.

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

"We have an array of 10000 16bit integers. We also have infinite memory. What would be a really fast way to count all the set bits?"

"Fuck me gently with a chainsaw", σκέφτομαι εγώ. "Εκτός από τον προφανή τρόπο (να κοιτάξεις έναν-έναν τους αριθμούς, και για κάθε έναν να σαρώσεις τα bits του) δεν μου έρχεται τίποτα στο μυαλό μου αυτή τη στιγμή" του λέω εγώ με θράσος.

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

Ένιωσα πολύ καλύτερα με τη μία. Μετά του πρότεινα να μοιραστούμε στα τρία τα τέσσερα χιλιάρικα του referral bonus (εγώ, ο Terry και ο φίλος που με πρότεινε), αλλά δεν δέχτηκε.

Και έτσι (όπως λέει και ένας άλλος φίλος) έληξε η προσπάθεια μου να δουλέψω για την Google.

(Όσα-δεν-φτάνει-η-αλεπού-dept.: Σιγά μην πήγαινα μες στο καταχείμωνο στους Ελβετούς για να εντοπίζω και να αλλάζω καμένους δίσκους στα server rooms της Google. Να βρούνε κανένα ντόπιο γαμωτάκι.)

(Και-οι-σωστές-απαντήσεις-ήταν-dept.: Quicksort running time is O(n log(n)), worst case O(n²), και μια καλή ιδέα για γρήγορο bit counting είναι να έχεις έναν πίνακα στον οποίο έχεις προϋπολογίσει τον αριθμό των αναμμένων bits σε κάθε δυνατό 16bit ακέραιο (που είναι μόλις 65536). Όλα αυτά τα διάβασα στο Internet μετά το τηλεφώνημα. Ακόμη δεν κατάλαβα τι ακριβώς είναι το Context Switch όμως.)

(Σκέψεις-&-Εκμυστηρεύσεις-dept.: Το παίζω ψύχραιμος τώρα, αλλά από τη μέρα που πήρα το email μέχρι την ημέρα της τηλεφωνικής συνέντευξης, δεν σκεφτόμουν τίποτα άλλο. Επίσης, αυτή είναι μια εξαιρετικά ελεύθερη απόδοση αυτών που πραγματικά συνέβησαν)

15 comments:

Ttallou said...

Κρίμα.
Αλλά πού να τρέχεις τώρα στους βλάχους τους Ελβετούς.

Unknown said...

Ε, ναι.

Unknown said...

πεεεεεεεεεεε, τζάμπα οι ιδέες που κατέβασα μέσα σε δευτερόλεπτα για το guest room σου στην Ελβετια... :P

Lina said...

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

Unknown said...

Αντί να κολακευτείς, γκρινιάζεις και από πάνω; Τς, τς there is just no pleasing some people :-)

Lina said...

νια νια νια =Ρ

gtzi said...

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

rockordie said...

No worries, you were never Google material…you are (and always were) Microsoft material.

Anonymous said...

Don't let this little setback put you off looking for other jobs though!!! IT needs you!!!

andreadi said...

Ποιός καραγκιόζης είπε αυτό το τελευταίο; Να αποκαλυφθεί πάραυτα!

Anonymous said...

:)

Nassos K. said...

Αυτά είναι! Αλλά δεν έχει δωσ'-του-άλλη-μια-ευκαιρία;

Finteias said...

Τουλάχιστον παραδέχτηκε ότι η τελευταία ερώτηση ήταν δύσκολη.

Παραμένεις κάτω από τον ελληνικό ήλιο.

Lefteris said...

Γεια σου Ζαφείρη, είμαι ο Λευτέρης ένας από τους παλιούς μαθητές σου στο DataStation (πριν 15 χρόνια!) , έπεσα κατά τύχη στο blog σου και αναπόλησα στα καλοκαίρια με Basic και βιντεοπροβολές του Star Wars. Χαίρομαι που είσαι καλά, αν θες στείλε μου email στο mr_looper@yahoo.com, όπως λένε ένας καλός δάσκαλος δεν ξεχνιέται

Anonymous said...

Context Switch: http://en.wikipedia.org/wiki/Context_switch

Kostas Samiotis - Data Station (ακόμα δεν έχω προσωπικό blog)