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 μέχρι την ημέρα της τηλεφωνικής συνέντευξης, δεν σκεφτόμουν τίποτα άλλο. Επίσης, αυτή είναι μια εξαιρετικά ελεύθερη απόδοση αυτών που πραγματικά συνέβησαν)

Friday, January 22, 2010

google suggest



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

Στην αρχή δοκίμασα να ξεκινήσω να γράφω "μεταχειρισ" και έδειξε για "μεταχειρισμένα αυτοκίνητα θεσσαλονίκη" (που με κάνει να υποθέσω ότι λαμβάνει υπόψη του και την γεωγραφική περιοχή από την οποία γίνεται το ερώτημα).

Μετά όμως δοκίμασα από περιέργεια να γράψω "πως να", και μου έδειξε τα παρακάτω...


Υπάρχουν μάλλον αρκετές γυναίκες εκεί έξω που δεν ξέρουν πως να μείνουν έγκυες;