12 ms·
Acing the technical interview
- gravypod 10y agoThis was so amazing I actually had to start up an interpreter and write my own implementation. This was extremely fun and it blew my mind. It's one of those obvious things that's only obvious after you see it. Others are calling for you to write more of these and I definetly feel the same. If I could se a new one of these every week and play along in the terminal I'd have a a lot of fun (all in the name of learning to!).
- abecedarius 10y agoFor extra fun, now do it without if! Just functions and calling them.
- kelvin0 10y agoI want this to be funny, but even the simplest of LISP is foreign to me. So I'm kinda like an English only speaking expat at a Hong-Kong Bar, where a local guy tells me a (dirty?) joke and I laugh, even though I didn't quite get all the details. Well done?
- davidnc 10y agoI thought I'd try writing a translation into Python. Not sure if it makes it any easier to follow, though... http://pastebin.com/yK1HrZJQ http://pastebin.com/yK1HrZJQ
- RodgerTheGreat 10y agoSince K was specifically invoked in the article, c: {[h;t]{(h;t)x}} / cons h: {x 0} / head t: {x 1} / tail n: {h y t/x} / nth p: h'-1_(~^:)t\ / print r: {{$[^y;x;c[h y;x]o t y]}[0N;x]} / reverse
- titanomachy 10y agoAnd it was not, by the way, invented by Ursula K Leguin. I checked.
- kelvin0 10y agoYou sir are a gentleman. Good job!
- SubuSS 10y agoSome background: I have had 3 jobs (not including assistantships) till now - two were at the big companies mentioned below (MS/Amzn) and currently am at Snap for the past year or so. Before joining Snap I did interview around and had offers from the likes of FB/Twitter/Oracle as well - So I guess I have relevant and recent points here. - Almost all the interviews followed the same pattern maligned a lot in HN. - Almost in every one of those loops, I felt like my current experience building storage systems and replication wasn't examined very well. - I had many other informationals where the company felt completely borgish (no one knew what the other parts were doing), where the recruiters were clueless, where they were trying to undercut me by 50% or so(We have the smartest!), under level me (We always under level outside hires!), where they had no real reason to hire me (We are always looking for smart people!), where they were just trying to prove that they are smarter and so on. All this when I had 5 odd offers in hand and actually told them that to see if they would have a productive conversation rather than wasting everyone's time. But I do have different takeaways from these though: - For every guy like me, there are a lot of other folk who can probably spend the whole hour with you and make you leave ambivalent. You will never know whether you hired him because you liked him or because of his skills. - An actual (even a flawed one) datapoint is better than nothing. - If the guys interviewing me are anything like me, They probably spend 5-10 hours a week on interviews already. This means custom tuning a process for each candidate is exorbitantly hard. I mean we do look at resumes and try to calibrate what we expect from a given candidate and we do assign certain folk to get information about their current positions - but a completely personalized loop is still in the zone of people who have been the top 1% of any company. If you aren't there, you gotta expect the rote process. - I don't have a week to fully dedicate to each company. I currently have a hard job - and I prefer to prepare for a generic process rather than custom one. - It isn't really hard to prepare for this anyway: In fact the rote process makes it so much easier. There are set concepts and websites. I built my own list, filled them in with actual notes, practiced a 100 problems to get into the mode and was in. - At the end of the day, all these companies have great people in great teams solving great problems. It is very very hard to distinguish one from the other, There is a very high chance you will end up doing very similar work for one or other. So now the distinguishing factors become something else. - The recruiters in general are just trying to meet a quota.
- deleted 10y ago[deleted]
- dasil003 10y agoThis is beautiful. It captures the spirit of wizardry and wonder that brought me to programming in the first place, juxtaposed against the reality of interviewing at "top" tech companies where the interviewers more often than not have only a fraction of my experience, and seem to have followed the type of curated success-seeking golden path that used to be reserved for finance.
- deleted 10y ago[deleted]
- bogomipz 10y ago>"and seem to have followed the type of curated success-seeking golden path that used to be reserved for finance." I am curious what you meant by this. Would you mind elaborating?
- cheez 10y agoBreeding from good stock
- dominotw 10y agoI met a young guy at the hotel diner where I was staying for google interview( there were like 50 of us in that hotel). He told me he has been practising algorithm questions on a whiteboard every day for past 4 months for tech interviews. He had a degree from a top school ( don't remember which one ), did an internship at some other top tech company in the valley. needless to say, that didn't help my confidence in the interview that morning :D.
- JCDenton2052 10y agoWas he hired?
- kornish 10y agoProbably.
- pkd 10y agoThank you. I wish to someday walk into an interview and pull out Clojure as my language of choice and write every bit of code they ask me to as a pure function - and then look into the interviewer's eyes and try to decipher if they had seen the eternal light of Lisp yet.
- base698 10y agoI've done this by deriving most of the functional constructs in the language. At the end the guy was finally like, do you know lisp? Most people just don't have the knowledge base and think you don't know what you're doing.
- brianpgordon 10y agoThat sounds like a reasonable question to me. If you're rolling your own versions of built-in constructs then you're writing code that's hard for other people to maintain. It's a bad sign when the interviewee writes weird, non-idiomatic code. I interview people all of the time who say that the programming language they're most familiar with is Java but use classic Java 1.4 style iterators to loop over a List. It's a huge red flag.
- base698 10y agoWhat about JS with multiple idiomatic styles? I was asked what filter and each do, which I wrote out because they are super small. Easier to show a little code to explain.
- sharms 10y agoThis sounds like jumping to conclusions: 1. Simple iterators vs Syntactic sugar both pass the same unit tests 2. The 'Java 1.4' style closely matches idiomatic golang code, which has high adoption and maintainability 3. People who want better iterators, also want better everything, leading them to use more progressive JVM languages like Clojure and Scala rather than just waiting for the Java spec to move forward I don't see a 'red flag', just simple contextual differences
- thearn4 10y agoThis reminds me of a 4chan greentext story, but I can't seem to put my finger on which one.
- venantius 10y agoAbsolutely delightful.
- nice_byte 10y agoWow so all the stereotypes about lisp programmers are true after all
- nolemurs 10y agoEvery few months I think to myself "maybe I should learn Lisp," but then I see things like this, and my suspicion that Lisp has been fetishized beyond all reason starts seeming more likely, and I decide to put that exercise off a while more. At this point, I suspect I'm never going to choose to learn Lisp.
- nice_byte 10y agoI don't think you're missing out on much. Lisp is probably the least interesting of the functional programming languages. I think Haskell has more interesting ideas if your interest is purely from PL research standpoint. For practical purposes, I don't even consider those languages. Their main value for me is the slow cross-pollination and trickling down of ideas (such as lambdas, type inference, algebraic data types, etc) to more practical, mainstream languages.
- justinhj 10y agoLisp languages are not even functional programming languages, they're mostly general purpose. Lisps are interesting for other reasons such as the s-expression syntax being similar to the AST, lists and other data structures as first class entities and so on. Also they are very practical languages. Clojure and Common Lisp are used in real world production systems for example. Missing out on lisp is missing out on a lot of interesting ideas.
- rqebmm 10y agoMy advice would be: Do learn functional programming, don't learn Lisp.
- draw_down 10y agoI think it's worth learning. But the idea that it's some glorious font of enlightenment? To paraphrase Frank Zappa, pheeeeeeuw.
- ryandvm 10y agoThat was the best thing I've read in a week.
- hellomellow 10y agoThis was awesome!
- draw_down 10y agoMore "Python dummies can't understand lisp". Harrumph.
- omginternets 10y agoI'm (still) one of them :'( Any recommendations for getting starting?
- cocktailpeanuts 10y agoIn most cases when a company rejects you because of "culture fit", chances are there's something wrong with yourself. Not the other way around. Companies are NOT out there to bring you in, waste several collective hours of their employees time who could be working otherwise, just to reject you. They WANT You to pass the interview. If you don't pass the interview because they think you are not qualified, then that's something that can be fixed. You just need to study more and get more experience. But if you don't pass because you're not a "culture fit", it means you probably came off as a difficult person to work with. And this article shows why.
- ronilan 10y ago> In most cases when a company rejects you because of "culture fit", chances are there's something wrong with yourself Obviously. In Silicon Valley, Company knows best. /s
- djhworld 10y agoWhile I know you mean well, have you heard of Poe's law?
- pharrington 10y agoHe's explaining the joke for anyone who doesn't get the joke.
- vvanders 10y agoIf you find out the culture is working weekends and 14hr days is that still "difficult person to work with"?
- bhups 10y agoRelative to that culture? Yes absolutely. Not being a "culture fit" can be a boon for the candidate if they are not compatible with a culture in which they would be miserable.
- mattnewton 10y ago
- deleted 10y ago[deleted]
- urs2102 10y agoThis was incredible. You should actually write posts like this constantly; it made me burst out laughing at work.
- jbgreer 10y agoI should have been a pair of ragged claws Scuttling across the floors of silent seas.
- qntty 10y agoToo sentimental
- startupdiscuss 10y agoI like the style, but I felt as though I only caught a third of the references (technical and literary). Was the naming thing a reference to William Gibson, or Rumpelstilskin? Is there really a language named after Le Guin? What other references did I miss?
- 100k 10y agoIn Le Guin's Earthsea series, magic is based on knowing the "true name" of a thing (this gives the wizard/witch power over it). The K language (https://en.wikipedia.org/wiki/K_(programming_language) https://en.wikipedia.org/wiki/K_(programming_language)) is famously impenetrable to read but is not named after Le Guin as far as I know.
- spoiler 10y ago> In Le Guin's Earthsea series, magic is based on knowing the "true name" of a thing This is a common thing among many fantasy fiction works, so it's hard to tell what inspired it; might not be Eartsea.
- 100k 10y agoIt comes from ancient folklore (see https://en.wikipedia.org/wiki/True_name https://en.wikipedia.org/wiki/True_name). I mention Earthsea here because Aphyr is referencing Ursula K. Le Guin specifically.
- duskwuff 10y ago> Was the naming thing a reference to William Gibson, or Rumpelstilskin? Much older. The idea that knowing a being's True Name gives you power over it is common to many human cultures. There is not actually a language named after Le Guin (at least, not that I know of). However, she did write a fantasy series (Earthsea), in which wizards gain their power from the use of names.
- deleted 10y ago[deleted]
- ggggtez 10y agoDoesn't look like a linked list to me... Looks like an array.
- striking 10y agoIt's a list made of pointers to other cells. That's a linked list.
- decebalus1 10y agoWhat about an array of tuples where each tuple stores something and a reference to an index in the array? How about a dictionary? Can you implement a linked list using a dictionary? Everything can be a linked list if you try hard enough.
- gpderetta 10y ago>an array of tuples where each tuple stores something and a reference to an index in the array? That's not trying hard enough. That's litterally the definition of a cons cell. (The array is simply raw memory and the index is a pointer)
- lorenzop 10y agoi don't know who you are but it feels like i've known you forever
- alanfranzoni 10y agoInterviewing may be broken... but this is pure trolling, after all :-)
- alanfranzoni 10y agoInterviewing may be broken... but this is pure trolling, after all :-)
- djhworld 10y agoBravo, great read!
- __debugger__ 10y agoI find this style of writing quite playfully elegant. Anyone knows where I can read similar stuff (books, blogs, etc.)?
- Nition 10y agoPossibly James Mickens' USENIX articles: http://mickens.seas.harvard.edu/wisdom-james-mickens http://mickens.seas.harvard.edu/wisdom-james-mickens
- devnonymous 10y agoWhen you say 'this style', what do you mean? The subversive intent or the elegant phrasing? If you meant the intent, search and read the BOFH if you haven't already
- vaibhavsagar 10y agoThis reminded me of Hao Lian's writing, e.g. http://blog.fogcreek.com/fparsec/ http://blog.fogcreek.com/fparsec/. He blogs at http://hao.codes/ http://hao.codes/
- krallja 10y agoH.A.P.'s F# code is still parsing Kiln searches to this day.
- titanomachy 10y agoCharles Stross's Laundry series is great. A talented programmer accidentally rediscovers a CS theorem which allows the summoning of demons and is immediately press-ganged into mandatory employment with Britain's occult secret service. His wife plays the possessed violin from Lovecraft's "The Music of Erich Zahn".
- di4na 10y agoPatrick Rothfuss work well too.
- kwillets 10y agoThis reminds me of my evil plan to ask a whiteboard question when they ask if I have any questions for them.
- deleted 10y ago[deleted]
- paulie_a 10y agoI say go for it, you are interviewing them just as much as they are interviewing you. In the same context on a simple application form I was asked what my previous compensation was, and what I would expect. I ended up cancelling the submission due to many other questions. But in regards to compensation my answer was "That is a second date sort of question"
- canttestthis 10y agoAs an interviewer if I was ever asked a whiteboarding question it would be an instant rejection, regardless of your performance in the interview. It shows a lack of social awareness and I wouldn't be comfortable working with you on my team.
- lorenzorhoades 10y agoCan you explain more why it would indicate a lack of social awareness? If I am interviewing at a company, I want to know the kind of people I'm going to be working with/for. If the person who does all of the technical interviews lacks technical ability, then what does that say about the people he/she hired? If they think a solution to a whiteboard problem is essential, how can they judge a particularly creative solution if they don't have intense technical experience above an beyond the people they are interviewing?
- kwillets 10y agoIf you are unwilling to respond to people the same way you expect them to respond to you, you're the one who lacks social awareness.
- 10y ago
- Jemmeh 10y agoSo many references. I'm sure I'm missing some, but that was great. I'm most happy about the cloud-pine at the end. :D
- mring33621 10y agoI read it and didn't get it, initially. What was the point? Then I read it a couple more times, while googling for what I didn't understand. After, I agreed with the praise. I learned something.
- aanm1988 10y ago> cite a lack of culture fit Yeah, because you come off as completely nuts. Oh, and an asshole since you chose a language the interviewer didn't know then refused to answer basic questions.
- blub 10y agoInterviewing is not exactly top priority in a company. Sure, management will say that it is, but projects will in fact have priority, so it tends to be neglected and just grows into a series of decisions based on personal experience, internet stories and "best practices". It really takes a lot of effort to be a competent interviewer. One needs engineering skills, but also soft skills, empathy, teaching skills. Doing interviews doesn't count in one's performance evaluation, especially given that it's almost impossible to figure out whether an interview was performed in a good or just average way, so for the typical engineer it's a PITA with no upsides. Candidates will be treated respectfully, but the process is what it is. There are no incentives to improve it, especially for companies that are in demand. Just so you get an idea how hard it is to manage hiring, when we came up with our interview process we more or less had to do the following: 1. Selected a group of competent developers with interviewing experience. They were then responsible for the whole technical side of interviewing. 2. Convinced management to offer support for the initiative. 3. Evaluated multiple options on how to structure the interview and chose one (e.g. phone + several face to face). 4. Prepared guidelines on how to behave, overcome typical biases, evaluate candidates. 5. Prepared a pool of exercises. 6. Added verification steps to make sure that nothing went wrong in the phone interviews. 7. Ensured that there was always a mix of experienced vs. unexperienced interviewers in face to face interviews. 8. Set out some rules for offering feedback to interviewers after face to face interviews. I have to confess that this never really worked properly. Offering negative feedback is particularly difficult. 9. Checked all of the above with management and implemented. Then we had to adjust based on practice: * added guidelines on special situations such as timezone differences, interviewer mistakes, insufficient information gathered during the interview, replacements, interview preparation, offering feedback, offensive remarks, etc. * scheduled weekly review rounds for all phone interviews and made sure that people took part and took things seriously * tinkered a lot with the candidate funnel to ensure that interviewers aren't swamped by inadequate candidates but also that we don't miss competent candidates with unusual applications * balanced between growth goals visible as management pressure to hire and ensuring that the process stayed true to its goal to demand certain technical standards from the candidates * experimented with various ideas such as homework, different interview structures, laptop vs whiteboard vs paper, access vs no access to docs, etc * made sure that office management personnel understood the above and was able to work with the process. When you think about it, this was "just" a typical phone + face to face interview, not rocket science. And the description covered only the technical part, there was also HR, sponsoring conferences and job postings, managing invitations and organizing the appointments, expenses reimbursement, preparing reports for management, etc. Such an interview method is not typically designed to find what's unique about each candidate and allow them to best express their individuality. It's a machine designed to answer to answer the question of whether someone is (probably) able to work productively in the organization. The process starts decaying the moment it's not supervised. People come up with brilliant ideas about what could be improved (let's ask candidates to solve problems from programming competitions!), don't stick to the reviews, reuse leaked exercises, become too lenient or too harsh, don't prepare, etc.
- devnonymous 10y agoUmm forget about the content, I got hooked in the first paragraph itself on the style! Not many put effort into writing these days. The flavour of that phrasing was pleasing enough for me to come back and write this. /me heads back to read the rest.
- CoolGuySteve 10y agoMeta: I've noticed over the past few weeks that any post that is critical of whiteboard interviewing has the highest points/hour of anything on the front page but is almost never at the top and usually slips away quickly. This post included, it's currently at #11 but is clearly more popular than the 10 above it. What's up with that? Why is this obviously popular subject on hiring practices (which I would think is prime HN material) being effectively censored?
- sbierwagen 10y agoStories with lots of comments are rank-penalized. "Whiteboard coding is bad" submissions attract a lot of "me too" comments and quickly fall off the first page.
- krapp 10y agoIt seems counterintuitive for a forum to want to penalize threads that actually get traction.
- chis 10y agoI think part of the problem is that everyone that comments then upvotes. Same as askreddit, for instance. Plus I wouldn't be surprised if these are manually pushed out of the top, there's like one a week and the mods must be getting sick of it
- krapp 10y agoIt seems to me that they may be trying too hard to intuit the quality of a thread based on behaviors which don't explicitly indicate it. I think that the only behaviors that should push a thread down are downvotes and flags, not upvoting and/or commenting in the wrong order, or only doing one but not the other.
- sbierwagen 10y agoYou can't downvote a submission. Moderately sure that comment threads on a submission are strictly ordered by score.
- skMed 10y agoSomeone has been reading Rothfuss.
- YZF 10y agoWow! Is this a reply to yesterday's discussion about white boarding? The Python list should have printed out [0, 1, 2] ... so (print "[") and (print ", ") ... Maybe that's why we didn't get invited to the next interview :) For a moment there I thought some Python in Lisp thing was going to get pulled out of the hat.
- Fuzzwah 10y agoFor anyone who missed this piece of gold from the comments: > The William Gibson version would begin thusly: > It was hot, the night I burned the Seeker. Moths batted themselves to death against the humming neon signs just outside the single window in the cramped room. There were ancient electronics piled to the ceiling in here, hot new chipsets from Taiwan still unwrapped distributed unevenly amongst them. > The Seeker put his hands on his hips, brushing aside the corners of his Sukajan jacket bomber jacket replica. "I heard you and Bobby were hotshots, once. Real.. artístes", he said, the last word paired with a smug grin. "Heard you could do things." > "Things like what?" It's been 20 seconds and you've already wasted too many cycles with this guy. > "Things like making lists, just, fold up inside themselves. Come out the other way around. Crazy things." > You grit your teeth. The dex has left your system and you're starting to feel a massive drug deficiency coming on. "Crazy things cost money", you manage. The lists already unfurling in your head, you start typing as quickly as you can to hide the microtremors.
- nojvek 10y ago> After the candidate took his leave the interviewer being bombarded with questions by the holders of steak stared out from inside the bustling warehouse wondering if he would ever truly understand what a list really is. I just wish someday I could write like this. Beautiful.
- mekoka 10y agoDid the commenter mean "holders of stake" (stakeholder)?
- cgag 10y ago"“To know a thing is to name it,” you advise. True names have power. The K language was invented by Ursula K. Le Guin, and is among the oldest and tersest forms of magic." Beautiful. I think the first time I learned the value of knowing the true names of things was here: https://www.youtube.com/watch?v=dlbMuv-jix8#t=12m54s https://www.youtube.com/watch?v=dlbMuv-jix8#t=12m54s before I studied it in depth reading Rothfuss.
- nolepointer 10y agoInteresting, um, LinkedIn profile this guy has: https://www.linkedin.com/in/aphyr https://www.linkedin.com/in/aphyr
- doc_gunthrop 10y agoSince some people have been bringing it up in this discussion, the K language was developed by Arthur Whitney[1], not Ursula Le Guin. 1: https://en.wikipedia.org/wiki/K_(programming_language) https://en.wikipedia.org/wiki/K_(programming_language)
- theworldrocks2 10y agoI really do not buy into this thing of sharing an info like this……Should you ever require the services of a hacker, i implore you to try your very best to hire only professionals. i was able to hire the services" text "19283233115", which is an elite, asides the fact that i was provided a permanent solution to the service he rendered me but he gave a very efficient customer experience. he carried me along with every process and didn’t leave me in the dark..i strongly recommend him if you ever need need discrete hacking service or mail steelbreaker at techie dot com