10 ms·
How to: Pass a Silicon Valley Software Engineering Interview
- ares2012 16y agoVery good advice. This is the best suggestion: "As I've said before - the interview is very very honest. Its about you, the whiteboard, and what you can do." In the interviews we do we include a written exercise you have to complete before you come in the door so that we can sit and talk about a problem you've been able to solve at your own pace - instead of seeing how well you think on your feet. Even then people try to come up with the fastest solution instead of something that represents them well. Remember that the interviewer is always more impressed with a right answer than a fast answer.
- georgieporgie 16y agoThey do that stuff in their spare time - its not just a job, its what they do because they love it. Is there any other professional career where it's common practice to expect candidates to practice their profession in their spare time? My CPA ex never came home and crunched numbers for fun. My doctor never mentioned diagnosing his neighbors to relax. This seems like a self-deluded way to weed out people who have families, physical limitations or injuries that prompt them to get away from their computer, etc.
- wikyd 16y agoI bet that expectation applies to writers, designers, and other creative jobs. I'm not sure what you consider the line is for "professional career." The test probably does weed out good engineers, but I would rather have a test for employees that yields more false negatives than false positives. I know plenty of people with families that also code in their spare time as a hobby.
- kenjackson 16y agoI bet that expectation applies to writers, designers, and other creative jobs. I don't think so. I think programming is a weird mix because it is largely populated by somewhat awkward introverts. Writers I know do like to write, and write each day, but they're very scheduled. One of my friends says he writes six hours a day, if he wants to more or less. In part, I think other "creatives" value time among other humans. Whereas programmers tend not to value that as much. Plus programming had a weird dynamic where staying up late (or not sleeping) is something to have pride in. For other creatives -- inspiration and elegance seems to be something they take much more pride in, over brute hours on a task.
- _delirium 16y agoI agree it's not brute hours on a task, but most musician types I know do make it a significant focus of their lives. It's not just writing and recording during the day, but attending shows in their scene in the evenings, frequenting mailing lists, Usenet groups, and IRC channels, going to the right clubs, reading dozens of magazines, blogs, etc. in their spare time, listening to and reviewing others' albums, and so on. Being "a [genre] musician" is basically a full-time lifestyle.
- kenjackson 16y agoAre these real pro musicians who derive 100% of their income from music? I ask because of those I know, most actually actively try to get away from the music scene when they can. OTOH, my neighbor who plays in the symphony (and is probably one of the best for her instrument in the US), plays music part time, because it can't pay the mortgage (at least not where she lives). She is a lot more into the lifestyle. It just seems like in other creative fields there's kind of a line between the pros vs the amateurs or hobbyists -- and how they spend their down time.
- mnutt 16y agoIt depends on the instrument, but most brass instruments require many hours a day of rote practice just to stay in shape if you're working professionally in a symphony. Also, many professional symphony musicians I know are in multiple side groups. (jazz bands, quartets, etc) I think there are actually some parallels with coding, though I don't believe orchestras take extra-curricular activities into account during auditions.
- georgieporgie 16y agoFor this analogy, I would like to point out that a musician attending a concert or chatting with fellow music nerds is equivalent to a programmer browsing /r/programming or having a beer with fellow programmer friends. It's a significantly lower-intensity activity than finishing a project.
- Retric 16y agoAnd I bet it's simply another form of age discrimination. People like to pretend that keeping up with the latest trends in computing takes a lot of time. But, mostly it's new people falling in love with old ideas. Consider, from a C background Ruby would seem extremely innovative, less so if you know C and python, and if you know C, python, and Lisp it's just not that novel. PS: Sometimes people are not exceeded about bulb because they have never heard of it. Other times they know more about it than you do and are simply not impressed by yet another remix of really old ideas.
- mkramlich 16y agoYou nailed why I for one am not impressed/excited by Ruby. If the only language I had/knew before Ruby was say COBOL, Ruby would look like an orgasmic programming utopia. But if you have more experience under your belt, both with other languages, and with readability and long-term maintenance, then Ruby looks much less interesting. Not completely without interest/merits, just much less so.
- nostrademons 16y agoSomeone who knows C, Python, and Lisp could probably talk fairly intelligently about Ruby even if they don't drink the Kool-Aid.
- quanticle 16y agoTrue, a good doctor doesn't diagnose neighbors for fun, but she does read medical journals and keeps up on the latest in her specialty. And would you trust an auto mechanic who didn't change the oil on her own car?
- georgieporgie 16y agoshe does read medical journals and keeps up on the latest in her specialty. 1) I don't know much about doctors' scheduling, but I've known a few that seemed to schedule a batch of patients, then hours for paperwork, document review, and peer review/help. So I wonder how much of this happens in their "free time". 2) There's a difference between reading up on new technologies versus creating a project and seeing it through to completion. Similarly, there is a difference between reading medical journals (study) versus seeing patients (practice). would you trust an auto mechanic who didn't change the oil on her own car? Absolutely. That's a very simple job, and if my mechanic can have it done for $20 at Walmart while he shops, it's well worth his time. If he's a good mechanic, he bills at, what, $70+ per hour? By the way, the mechanics I've known tend to drive inexpensive, late-model cars, and get rid of them after a few years. Why? Because they don't want to fix cars in their spare time.
- bartonfink 16y agoI think the largest part of the fact that many mechanics drive inexpensive, late-model cars and get rid of them is the fact that inexpensive, late-model cars are more or less irreparable in a hobby setting. Things simply aren't mechanical anymore. Modern cars are so computerized and interconnected that you often can't just "fix" a broken part, you have to replace it. I'm sure a mechanic would be able to do the replacement if they had the part, but I imagine that takes a lot of the enjoyment out of being a mechanic. You could probably get around that by only buying cars that predate mass computerization (now 20+ years old), but then you're trading one problem for a potentially much larger set of problems. It's not that they might not want to fix cars - it's that it might not be worth it to indulge that activity as a hobby.
- 16y ago
- dkokelley 16y agoI think a passion for your field or industry could show up in private life.However, some jobs are jobs because nobody wants to do them... even though they provide value. My dad works in the aerospace industry. Specifically outer space. His company builds rockets. And you know what? He LOVES outer space. He watches the ISS when it's visible over head, records the shuttle launches, and he browses the NASA app on his iPad, FOR FUN. You know what else? He's VERY good at his job. But then, some professions aren't necessarily fun. CPAs exist to remove a problem. It might not be the most glorious job, but it's a tough job that not everybody can do, so they are compensated well. I doubt they crunch numbers for fun. But you know what I'll bet they will do for fun, check up on the latest financial news.
- georgieporgie 16y agoAgain, I believe there is an enormous difference between what you're citing as spare-time activities versus what a 'project' entails. Your dad seems to be engaging in activities which are relevant to his interest in aerospace, without actually involving what he does as 'work' each day. As I mentioned elsewhere, this is more on par with browsing /r/programming, skimming a book on a new programming language, or meeting with other tech-minded folks. In my opinion, this is very different from completing a software project.
- jamii 16y ago> I believe there is an enormous difference between what you're citing as spare-time activities versus what a 'project' entails. Sometimes I have clients with interesting projects but 90% of the time my day job is stirring enterprise soup. I fix bugs, write documentation and make responsible engineering decisions. My side projects have no tests, no documentation and no comments. I write fun stuff like chat bots that mess with 419 scammers or p2p chat protocols. I get to enjoy all the fun parts of programming without the real-world constraints and responsibilities.
- jonnycoder 16y agoThey definitely should enjoy reading up on programming, technology, etc. Most of us who read HN, and are developers, fall into this category. I simply hate spending my weekends and evenings sitting indoors. I would probably get rejected by many interviewers for simply not spending my spare time doing lots of coding, even though solving problems and/or doing challenging activities is one of my favorite past times. I love learning new things and mastering (attempting to master) my favorite outdoor hobbies like golf, snowboarding, hunting, fishing, etc. If you are someone like me, then I suppose you should keep this in mind during an interview, and stress your enjoyment for more soft skills such as working with people and solving different types of problems outside the programming area.
- euroclydon 15y agoKeep in mind, that many job interviews are for a position that would be a step up for the candidate. And also keep in mind that there are a lot of lame programming jobs out there that just require a narrow technology skill set. Asking if a candidate programs in their spare time can be a really good indicator of whether they are up for the challenge of learning something new, or whether they're just looking for a bigger paycheck. Other professions have more formal, expensive, and rigid requirements for certification and continuing education. Programming does not. Consider spare time projects as one potential proxy for the former.
- pjscott 16y agoIncidentally, the sorting algorithm described here is a counting sort: http://en.wikipedia.org/wiki/Counting_sort http://en.wikipedia.org/wiki/Counting_sort When you're trying to get nice low asymptotic time bounds on things, it can really help to remember counting sort, radix sort, and tries. Counting and radix sort are O(n), and tries are a really handy data structure with the same worst-case asymptotic time as the expected amortized time of hash tables. They also support in-order key traversal and prefix/range queries.
- thurn 16y agoIt's probably worth noting that Radix sort is actually O(nk) with keys of length k, and that k is O(lg n) for many reasonable key representations (e.g. integers), giving an actual bound no better than a standard merge sort.
- bartonfink 16y agoIn reasonable key representations, k would be constant and hence ignored in algorithmic analysis. In 32 bit integers, for example, 0 takes just as many bits as 2^32 - 1 and you have to compare them all each time.
- jacobolus 16y agoSince you sort by digit, if you're going to make your radix be the size of an integer, you'll to construct that many empty lists; in actual practical implementations of radix sort, the radix is some relatively small number, and so you end up with O(nk). I guess if you want you can say that k is actually O(log(maxint)), if all of your integers are < maxint. But that ends up being quite a sizable constant term if you really want to consider it constant. If you're going to do algorithmic analysis that entirely ignores large constants, it's a bit strange to simultaneously declare that all your integers will be bounded by some particular cutoff.
- jwegan 16y agoThat is incorrect. k has no relation to n. k is the size of the range of possible values in the input and n is the actual number of elements in the input. To illustrate, consider sorting 32 bit integers. If the radix is one bit (i.e. radix=1 bit and k=2 * 32 [32 "digits" and 2 possible values for each "digit"]) then radix sort is O(64n) = O(n). Now consider, cutting up the 32-bit int into byte size chunks (i.e. radix=8 bits and k=4 * 256 [4 "digits" and 256 possible values for each "digit"]). In which that case radix sort is O(1024n). Note that we are able to determine the value of k without any idea of what n may be. In practice even for small n (n>200), a straight forward implementation of radix sort is faster than any O(nlogn) sort.
- NY_USA_Hacker 16y agoHis grandmother knew radix sort. It's well known that, on sufficiently short keys and sufficiently many records, radix sort beats the (n)ln(n) sort algorithms such as heap sort and, thus, beats the Gleason bound. How? The Gleason bound is only for sorting by comparing pairs of keys, and radix sort doesn't do that. Maybe his grandmother had a job with punch cards: The old punch card sorter used radix sort. Of course Knuth covers radix sort in TACP. However I've always thought that his claim that radix sort was especially good for a pipelined processor was wrong. The whole column and its approach and values are wrong. If Silicon Valley and Google are recruiting that way, and I suspect that they are, then GOOD because it means that competing with them should be easy. Basically the author just nearly totally fails to understand what's important in computing or what qualifications are important. It's an old story: In a well run technology company, HR is absolutely, positively forbidden to engage job candidates in any meaningful sense whatsoever on threat of immediate reassignment to the toilet squad. All HR can do is push paper and keep records, smile, bring coffee, tea, soda, or donuts, make travel arrangements, etc.
- wh-uws 16y agoWhat would you say is important if those things aren't (seriously asking. New grad in about a weeks time, been keeping track of different peoples opinions)
- nostrademons 16y agoDon't really disagree with NY_USA_Hacker, but I think his perspective is biased toward what he happens to know about. This is quite natural: everybody thinks that what they already know about is important, because that means that they know Important Things. So I'm going to go the other route and tell you things that I don't know about that I wish I did. (Disclaimer: I work for Google. I didn't overlap with Paul Tyma, but I know people who worked closely with him, and he's generally quite highly regarded. He also has built something that people want, unlike most of us: he wrote Mailinator single-handedly and ran it off a single box. So despite NY_USA_Hacker's questioning of his competence, I think he's actually a far better source of advice than anyone on this thread, including myself.) I wish I knew more of: Statistics. Hypothesis testing, and confidence intervals. I wish I knew everything that could go wrong when analyzing data, because we analyze a lot of data, and it's really easy to let biases creep in. I wish I understood better how to slice & dice data by conditions - "these are the samples that exhibit some particular trait, and that trait affects this other variable in this way, and so our overall result will be biased by..." I wish I could data-mine large quantities of data and pick out the trends automatically. Neuroscience. So much of what we do relies upon understanding how people perceive things. There's been a lot of research in that area lately, and it turns out that people's biases are actually quite predictable. I wish I knew how. I wish I knew why. Trade sense. There's this soft skill called "trade sense" that basically refers to knowing what people will be willing to pay for. Steve Jobs is a master at it. I suck at it. It is a fundamental skill for an entrepreneur, because there is no company if people will not pay you for your product. Statistical machine learning. Basically, the past decade of AI research has discovered that trying to encode a whole bunch of rules into a computer just doesn't work, because the real world doesn't function like that. Instead, what does work is to feed the computer a lot of data, and then notice patterns like "if this term appears, this article is most likely X". There're a bunch of techniques for this in the literature, they typically aren't taught in undergrad, and they are wonderfully useful. Image, audio, and video algorithms. More and more data is taking the form of multimedia these days; plain text just doesn't cut it. Processing multimedia is an order of magnitude more difficult than processing text, because there's an order of magnitude more data. But this is largely virgin territory. Well, sorta. Basic multimedia algorithms have been around since the 60s, but the environment has changed massively in the last decade. Getting along with people. Almost everything worthwhile these days is too big for one person to handle. You need co-conspirators and allies if you want to get anywhere. Don't be a jerk; you need people if you want to accomplish anything.
- dschobel 16y agoAn old but good article. Might be worth amending the title to reflect that this is from 2007.
- gaius 16y agoAlso - forget technical religion. Hah! When I interviewed at Google, I turned down the invite to the next round because it felt more like a cult than an engineering organization. if Google stopped paying me tomorrow, I'd still come to work Exactly.