From 049891a58d4e438dc3aa6cb6be8515538c8f54b0 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Sun, 16 Apr 2017 11:17:59 -0700 Subject: [PATCH] blog: Voding the Interview --- blog/voiding-the-interview-2017-04-16.md | 145 +++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 blog/voiding-the-interview-2017-04-16.md diff --git a/blog/voiding-the-interview-2017-04-16.md b/blog/voiding-the-interview-2017-04-16.md new file mode 100644 index 0000000..61596e3 --- /dev/null +++ b/blog/voiding-the-interview-2017-04-16.md @@ -0,0 +1,145 @@ +--- +template: blog +title: Voiding the Interview +date: 2017-04-16 +sitename: Xena +--- + +A young man walks into the room, slightly frustrated-looking. He's obviously had +a bad day so far. You can help him by creating a new state of mind. + +"Hello, my name is Ted and I'm here to ask you a few questions about your +programming skills. Let's start with this, in a few sentences explain to me how +your favorite programming language works." + +Starting from childhood, you eagerly soaked up the teachings of your mentors, +feeling the void separated into sundry shapes and sequences. They taught you +many specific tasks to shape the void into, but not how to shape it. Studying +the fixed ways of the naacals of old gets you nowhere, learning parlor tricks +and saccharine gimmicks. Those gimmicks come rushing back, you remembering +how to form little noisemakers and amusement vehicles. They are limiting, but +comforting thoughts. + +You look up to the interviewer and speak: + +"In the beginning there was the void, Spirit was with the void and Spirit was +everpresent in the void. The void was cold and formless; the cold unrelenting +even in today's age. Mechanical brains cannot grasp this void the way Spirit can; +upon seeing it that is the end of that run. In this way the void is the +beginning and the end, always present, always around the corner." + +```clojure +(def void ()) +``` + +"What is that?" + +``` +> void +> +``` + +"But that's...nothing." + +You look at the caucasian man sitting across from you, and emit "nothing is +something, a name for the void still leaves the void extant." + +"...Alright, let's move on to the next question. This is a formality but the +person giving you the phone interview didn't cover fizzbuzz. Can you do +fizzbuzz?" + +Stepping into the void, you recall the teachings of your past masters. You +equip the parentheses once used by your father and his father before him. +The void divides before your eyes in the way you specify: + +```clojure +(defn fizzbuzz [n] + (cond + (= 0 (mod n 15)) (print "fizzbuzz") + (= 0 (mod n 3)) (print "fizz") + (= 0 (mod n 5)) (print "buzz") + (print n)) + (println "")) +``` + +"This doesn't loop from 0 to n though, how would you do that?" + +You see this section come to life, it gently humming along, waiting for it +to be used. Before you you see two ancient systems spring from the memories +of patterns once wielded in conflict with complexity. + +"Apply this function to span of values." + +``` +> (range 17) +error in __main:0: symbol {range 71} not found +``` + +You realize your error the moment you press for confirmation. "Again, in the +beginning there is the void. What doesn't exist needs to be separated out +from it." The voidspace in your head was out of sync with the voidspace of the +machine. Define them. + +"...Go on" + +```clojure +(defn range-inner [x lim xs] + (cond + (>= x lim) xs + (begin + (aset! xs x x) + (range-inner (+ x 1) lim xs)))) + +(defn range [lim] + (range-inner 0 lim (make-array lim))) +``` + +``` +> (range 17) +[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16] +``` + +"Great, now you have a list of values, how would you get the full output?" + +"Pass the function as an argument, injecting the dependency." + +```clojure +(defn do-array-inner [f x i] + (cond + (= i (len x)) void + (let [val (aget x i)] + (f val) + (apply-inner f x (+ i 1))))) + +(defn do-array [f x] + (do-array-inner f x 0)) +``` + +``` +> (do-array fizzbuzz (range 17)) +fizzbuzz +1 +2 +fizz +4 +buzz +fizz +7 +8 +fizz +buzz +11 +fizz +13 +14 +fizzbuzz +16 +``` + +Your voidspace concludes the same, creating a sense of peace. You look in the +man's eyes, being careful to not let the fire inside you scare him away. He +looks like he's seen a ghost. Everyone's first time is rough. + +Everything has happened and will happen, there is nothing new in the universe. +You know what's going to happen. They will decline, saying they are looking for +a better "culture fit". They couldn't contain you.