8 ms·
Interviewing at Google, Facebook, Foursquare, Dropbox, Fog Creek, etc
- jamalkhan 14y agoeverytime I try the link I get a timeout request!
- greyboy 14y agoCache: http://webcache.googleusercontent.com/search?hl=en&biw=1396&bih=1024&sclient=psy-ab&q=cache%3Ahttp%3A%2F%2Fhaufler.org%2F2012%2F05%2F22%2Finterviewing-at-google-facebook-foursquare-dropbox-fog-creek-etc%2F&oq=cache%3Ahttp%3A%2F%2Fhaufler.org%2F2012%2F05%2F22%2Finterviewing-at-google-facebook-foursquare-dropbox-fog-creek-etc%2F&aq=f&aqi=&aql=&gs_l=hp.3...6288.6576.1.6798.2.2.0.0.0.0.0.0..0.0...0.2.Eu6eCK0LIto&pbx=1 http://webcache.googleusercontent.com/search?hl=en&biw=1...
- squarecat 14y agoText-only is teh quickness: http://webcache.googleusercontent.com/search?q=cache:haufler.org/2012/05/22/interviewing-at-google-facebook-foursquare-dropbox-fog-creek-etc/&hl=en&prmd=imvns&strip=1 http://webcache.googleusercontent.com/search?q=cache:haufler...
- Killswitch 14y agoWordpress will do that to you when your site gets any type of traffic.
- shaufler 14y agothe traffic spike from HN crashed my server. i'm resizing my linode instance now, so the site should hopefully be up again in a few minutes
- luigi 14y agoCaching is your friend: http://wordpress.org/extend/plugins/wp-super-cache/ http://wordpress.org/extend/plugins/wp-super-cache/
- socialist_coder 14y agoI also have a Wordpress blog on a Linode and I'm curious if you tried any caching plugins or Cloudflare before resizing?
- dylanvee 14y agoI applied to a bunch of software engineering internships last fall and was amazed by the variation from company to company in terms of how I was dealt with as an intern candidate.
- sparknlaunch12 14y agoGreat overview of the different interview styles being used. I cannot say I am convinced you always get the best people through. I don't have any aspirations to interview at Google, but did stumble across an 'Google Interview' book at the local bookstore. It makes great reading. WSJ did an article on Google interviews late last year, including answers. Here are the questions (click the link below if you want answers). "1. What's the next number in this sequence: 10, 9, 60, 90, 70, 66 … ? 2. You're in a car with a helium balloon on a string that is tied to the floor. The windows are closed. When you step on the gas pedal, what happens to the balloon—does it move forward, move backward, or stay put? 3. Using only a four-minute hourglass and a seven-minute hourglass, measure exactly nine minutes—without the process taking longer than nine minutes. 4. A book has N pages, numbered the usual way, from 1 to N. The total number of digits in the page numbers is 1,095. How many pages does the book have? 5. A man pushed his car to a hotel and lost his fortune. What happened?" [Answers] http://online.wsj.com/article/SB10001424052970204552304577113003705089744.html http://online.wsj.com/article/SB1000142405297020455230457711...
- jrockway 14y agoFWIW, these questions have no relation to any questions that are asked in engineering interviews at Google. We mostly focus on software design, implementation, and algorithms. (SREs get some UNIX/networking questions, SETs get refactoring questions, and so on. And some interviewers like math questions.)
- adnam 14y agoThe explanation given in wsj for problem 2 is totally wrong. The balloon will do the same as a person in the car (nod backwards), only less pronounced due to air resistance.
- jc4p 14y agoWow we had different experiences. I only interviewed at start-ups and none of the companies I talked to asked me any ANSI C questions. I had some interesting Python do-in-whatever questions at one company (which I did all in Python) and on the other I went to them with something I had already made of their unofficial platform and skipped programming challenges.
- MattRogish 14y agoDo kids still learn C in college? It's been my experience that new grads are primarily taught in Java... That said, we do all our interviewing in the langage I expect them to be developing in - namely Ruby, JavaScript, and/or SQL. Is that the norm or do people still interview candidates using, say C or Java, for Ruby/Python/JS positions? I suppose if we were interviewing someone who didn't know Ruby but knew Java, we could fallback to that. But luckily we have plenty of people that know Ruby/JS that I've never had to do that... Although you don't have pointer stuff, you can do really interesting things with Ruby and JS.
- jrockway 14y agoLearning programming languages is easy. I did all my Google interviews in Perl. Now I write all my code in Java. The skills transfer easily. I personally would prefer someone who is good at multiple programming languages. People that spend all their time in Java ignore subtle things about how computers work that C programmers are intimately aware of. People that never use scripting languages assume they are "toys" and waste many hours writing "production quality" throwaway applications. So it's good to have experience with everything, but experience can be obtained after hire too :)
- MattRogish 14y agoI'm not saying being a polyglot is bad - it's certainly very awesome and desirable; but if your interview process is all in C, you're gonna turn away folks that can't do it. That seems suboptimal to me, although if you're FogCreek I guess you get so many people applying you can make C literacy a requirement. I learned C++ back in, oh, 1996. I haven't coded in it much since about 2001. I'd fail virtually any C++ exam today unless I spent a lot of time relearning my C++.
- jrockway 14y agoI can't get to the original article, but I assume that this is documented there. Yes, I think it's silly to require proficiency in a certain language. Google does not have this requirement. You must know a programming language well enough to be an expert, but it doesn't have to be Java/C++/Python/Go. Also, FWIW, Google intern interviews and full-time interviews are completely different. Interns must interview like everyone else after their internship to be converted to full-time employees.
- ajross 14y ago"Hi, I'm Sean Haufler, rising senior at Yale [...] Position: Software Engineer Intern [...] I didn’t have much experience manipulating individual bits" Sometimes I want to cry for what the world has become. At least I can be content knowing I have job security. (To be fair: the ability to google the answer quickly and implement it is exactly the skill that kind of test is supposed to screen for. Still, three years at school and no bit math?) Edit: several of the responses have interpreted this as my sniping at the author. I'm not (he got the question right, after all!). I'm depressed at the status of software engineering and computer science education, such that dealing with the in-memory representation of data is treated as an "obscure" skill that comes up only on job interviews.
- siavosh 14y agoHe said 'didn’t have much experience manipulating individual bits'. I think it might be worth giving him the benefit of the doubt that he's covered it in class but hasn't extensively worked with them.
- alecbenzer 14y agoReading stuff like that generally makes me feel much less insecure about my college. It used to be that hearing that someone was from an ivy-league/ivy-league equivalent would make me think they were really, really smart. (narcissism warning) I've come to realize that on average I'm probably about as smart as people from more prestigious universities, if not smarter, despite being an MIT/Columbia/Princeton/Cornell reject and a CMU waitlist.
- ajross 14y agoThere's a lot of spread, as in all things. I did the Ivy League thing many (yikes, many!) years ago, and met plenty of genius types and a handful of dunces. And in programming, the divide between people who can learn the subject well enough to pass the course and those who can Get Things Done is very pronounced even at top schools.
- roguecoder 14y agoMIT is vastly different than Yale: it is a vocational school in the best sense of the world. Possibly slightly less so now that 6.001 isn't LISP-based, but I still can't imagine a MIT CS grad not understanding bits. People coming out of a liberal arts college I tend to expect to know algorithms, state machines, possibly data structures, probably C++ and/or Python and have next-to-zero useful code-writing experience unless they got it elsewhere.
- throwaway1979 14y agoMy girlfriend is in the medical profession. She's gotten job offers after 1 hour conversations. The last job interview process I went through had 3 separate phone interviews (each with coding questions) before they were to fly me over for a full day interview. She was pretty surprised at how intensive the process was. I have a CS degree from a top-10 school and have 5+ years of work experience. This is the kind of stuff that makes me sad to be in software.
- jrockway 14y agoI've gotten most of my programming jobs with a quick chat. The bigger companies set a higher bar because they don't have any pre-existing knowledge of the candidates like smaller companies do. Google gets tens of thousands of resumes that all look essentially the same. A CS degree and 5 years of experience doesn't narrow things down much, so it's simplest to just ask the candidates a bit about programming and see how they respond. I think this process, while annoying, is worth it. I don't want to risk having to work with someone whose competence with respect to software engineering has not been verified in a controlled environment. I've done it before and it meant every time I said something like "state machine" or "graph", I had to explain what state machines or graphs were. And at Google, I don't have to do this. The amount of shared knowledge is amazingly high which makes interaction much more productive.
- throwaway1979 14y agoLet me add why this makes me sad. Most companies want to hire the best people, and employees want to work with the same. Why doesn't work experience or education count for anything in our field? Yes ... I've met idiots with CS degrees who can't code FizBuzz to save their life. I've also met idiots who have aced interviews at Microsoft, Google and Amazon by cramming on algorithms books for 2 weeks. We've really gone off the deep-end with interviews. If you've been a professional developer for 5+ years, do you really remember the details of your algorithms course? Competent devs can figure out the details of this stuff in minutes ... something not conducive to the high-stress environment of interviews. And this is not even considering how much time both parties waste in this process. Given how smart we are (i.e. software geeks), it boggles my mind how silly our operating procedures are. Just like I've told students that they should never accept unpaid internships on principle, I wish enough of us would tell prospective employers that we won't submit to an unreasonable hiring process.
- laconian 14y ago"Simultaneously, I quickly Googled ‘how to use bitwise operators in C’ and found this wonderful code snippet on StackOverflow that made the problem easy to solve. I wrote a solution with time to spare, and the interviewer seemed content with my answer." Wow. NB to all interviewers: this guy's a cheat.
- hack_edu 14y agoNB to all interviewers: this girl has knows how to solve problems efficiently, effectively, and in a manner appropriate to their role. I would not be pleased if my employee always tried to re-write what has been solved and perfected decades prior by someone smarter than her.
- mquander 14y agoAbsolutely. That's why I paid my smart classmates to do all my take-home tests in school; it's an efficient, effective way to get the right answers! I don't know if you interview people, but I do, and it's hard. I try hard to come up with questions that probe people's knowledge in specific ways and help discriminate between large ranges of ability. It's fucked up to try to ruin the information I'm getting by cheating without telling me. If you hold the principled position that looking everything up during an interview is a reasonable way to demonstrate your competence, then you should come out and tell me that's what you're doing, so that I can make a decision which isn't based on lies of omission.
- hack_edu 14y agoYeah, but I fired the last guy who billed me for that time he needed to re-discover the quadratic equation. An interview should evaluate the skills one needs for the job, not puzzles that make you feel smart. Were I interviewing someone, I would happily accept an answer something along the lines of "that's been solved already, I would use an existing library so I can move on and solve my real problem" with regard to bitwise operators.
- 14y ago
- tptacek 14y agoThis is a great post. My takeaway: if someone in an interview asks if you know what a particular idiosyncratic data structure is, always say "no".
- tedunangst 14y agoI would say always tell the truth. When people revealed they already knew the answer to my question, I'd probe a little deeper to check, but then move on to harder questions. That could only ever improve their chances because there's no penalty for wrong answers in the bonus round. All depends on the interviewer, though.
- eta_carinae 14y agoNote: the interviews are for an intern position, which are very different from software engineer positions.
- cletus 14y agoBizarre. Yes, Googling an answer to a Google interview question from SO is in fact verboten. A seasoned interview can normally pick that up anyway. But a note to potential Google interviewees: if you're caught doing this it will pretty much disqualify your application. We're interested in how you think and how you solve problems, not what you can pass off as knowing. Interestingly, he mentions the NDA and then goes on to broadly describe the question anyway. If all this is true, I'm not a fan of bit-twiddling questions. It's something you either know or you don't (like reversing bits in O(log n)). This is meant to be an interview not a trivia quiz. I get mad every time I see those kinds of questions asked. Anyway, another note: if it's on your CV, it's fair game to be asked about. So if you put that you wrote a low of embedded C/C++ in such a way that you'd be expected to do a lot of bit-twiddling then yes, bit-twiddling is absolutely fair game (IMHO). If however you put that you've only done Python/Django, Clojure and Scala then it's a stupid question to ask (IMHO). The second phone interview if accurate disappoints me as well. Perhaps this was a product of the position you applied for or what you put on your CV? As far as intern matching goes, yes there is absolutely room for improvement there. Note to other commenters: PLEASE PLEASE PLEASE stop spreading this nonsense that Google asks engineering interviewees stupid questions like "a man drove his car to a hotel and lost his fortune, what happened?" This is NOT what we do. The sooner people stop spreading this misinformation the better.
- strlen 14y agoSome bit-twiddling questions are a fair game to ask even for folks who haven't done low-level C and C++. Asking esoterica from Hacker's Delight (an excellent book, by the way, but in no way a source of interview questions), is not, but I doubt Google does this. Bitwise operators are just as available in Java. I've done bit-twiddling in production Java code, it's something you need to do if you ever, e.g., work on a serialization library. Understand, words, bits, bytes, and bitwise operators (big part of How Computers Work (TM)(R)) is something worth knowing (and not just to pass an interview).
- deleted 14y ago[deleted]
- yajoe 14y ago
- citricsquid 14y ago> A mediocre programmer could memorize the examples given in Programming Interviews Exposed and do very well in a Bloomberg interview. or in a phone interview just google for an answer to the question they're being asked! oh wait that's exactly what they did do... How is using google to find an answer to a question okay and knowing the answers before hand not? crazy.
- pashamur 14y agoI've been asked a question in a phone screen the answer to which I had read on the glassdoor page for that company. A lot of people/companies recycle questions on a regular basis.
- alecbenzer 14y agocurrent intern at google here I got the same email from HR telling me that it should take around 3 weeks to hear from a host. She emailed me back 5 minutes later about setting up the interview. Not saying this makes your 3 months okay, but just pointing out that there seem to be cases at both extremities.
- toemetoch 14y agoFWIW, if you're doing hobby projects or working on open-source software: when you get one of those CS related brain teasers start your answer with this if you get the opportunity: "Oh, I encountered something similar while working on <insert project name>." Notice the little smile on the interviewer's face and how the interview derails in a chat about projects. Also applies if you don't know the answer but would like to know to unblock that issue you had.
- vnaybrdwj 14y agoDoes the link to the blog work?
- scarface548 14y agoCan someone post a mirror?
- TheCapn 14y agoThe best coders I've ever worked with rarely memorized the nuance little algorithms that they want you to regurgitate during these interviews. The ones that I know that are capable of this are terrible coworkers because they lack other necessary skills to function in an organization or team environment. This is anecdotal but sort of sticks with me. The interview processes used by these software giants weeds out the kinds of people that have made the biggest differences in the companies I've worked for/with. From my experience they weigh their judgement much more heavily on the actual implementation of code instead of the understanding of code, decisions and overall design. Knowing how to code a mergesort is not as important to understanding the wider uses of mergesort and when an altered algorithm would suit the problem best or when it would struggle to provide you the right performance at all. Maybe these companies want code monkeys that can put down exactly as the design is given to them and the process works grand for them, but from an outsider looking in it seems like they miss out on a lot of great talent due to the rigorous screening process.
- thedufer 14y ago"Knowing how to code a mergesort" is specifically not what they're looking for, in my experience. The idea is to come up with a problem that requires an interesting algorithm that very few people will know, and see how the candidate reasons their way to an answer.
- dockd 14y agoAre you saying they should be able to derive a little known algorithm by themselves? What do you make of Knuth's quote about how many people implement binary search wrong? http://en.wikipedia.org/wiki/Binary_Search#Implementation_issues http://en.wikipedia.org/wiki/Binary_Search#Implementation_is...
- jrockway 14y agoMany people implement it wrong. The best programmers know how to check their work, and will be asked during the interview to check. Who doesn't know that (x + y) / 2 can overflow? But the people who you really want to filter out have no idea or intuition that a problem can be solved by slicing it into two. That's the key idea behind binary search (and indeed, much of computer science).
- kzahel 14y agoEvery time I've interviewed for a job I have been annoyed by the interview questions. Yet, when I am interviewing others, I do exactly the thing that annoys me. What is the alternative? It's just a way to talk shop.