3 ms·
I just went through a three week gauntlet of interviews (~10 companies who each do at least 3 1-hour interviews). This slide set is pretty accurate in terms of
by csmajorfive 19y ago
I just went through a three week gauntlet of interviews (~10 companies who each do at least 3 1-hour interviews). This slide set is pretty accurate in terms of what to expect but I'd weight the API's/language/philosophy sections down a bit. I only got a few language questions and absolutely none about development philosophies (except for maybe "emacs or vim?"). Algorithms & data structures are what you should be studying. Puzzles too but that's more about doing a lot -- you can't really study per se.
- falsestprophet 19y agoI am wondering what it takes to be a qualified web start-up programmer. I have less formal computer science training than most candidates for Silicon Valley jobs. However, I gamble I have more programming experience than many CS graduates. So, I am hopeful that I don’t need to go back to school for chemistry straightaway. I am familiar with algorithms and data structures, but I am certain that many properly educated developers would put me to shame. What is the best way to accumulate this core theoretical knowledge? Are there preferred books on the subjects or will any do? Or do you recommend simply taking few courses before I graduate? Thanks for your input.
- comatose_kid 19y agoHmmm....formal training is important, but if you had a website with some kick-ass demos, you'd probably have a better chance of scoring a face-to-face interview. Algorithms and data structures? If you like proofs, I've heard that the Cormen and Rivest book is great. Personally, I find that the Sedgewick volumes have great explanations of the most common algorithms. But you haven't graduated yet, so the most effective approach may be to sign up for an algorithms course. Then you'll have the benefit of a prof and students to help out.
- tx 19y agoMost engineers never implement any of those classic CS algorithms or data structures manually since everything is in the libraries these days. Therefore they're in the same boat as you: general knowledge and a couple of books under a hand to look things up. All they (and you) have to do is to refresh their knowledge since college years. I've never implemented a linked list since graduation, nor I sorted anything manually using quick sort. Moreover, I never had to generate permutations of anything, nevertheless those are the same damn questions they keep asking on interviews. I wonder why: it only makes sense for fresh graduates, because it's the only reliable way to compare then against each other.
- csmajorfive 19y agoIt's also one of the better ways to reliably compare people against each other for the type of intelligence and problem solving skills that programming requires.
- henning 19y agoI have used the Aho-Corasick and Boyer-Moore algorithms the Google presenter guy mentioned many times, at least a dozen, in 10 months of employment. I have also implemented a fulltext indexing system because we have total NIH syndrome, which involved working with suffix trees, inverted indexes, and other classic undergrad information retrieval material. You don't have to know everything; you need to know enough to know what you don't know, and where to look to get what you need to get the job done. Like, I just start with Wikipedia, usually. What you need when you actually get the job is a separate concern from what you need to get the job in the first place, though.
- csmajorfive 19y agoTake an algorithms course at the best university you have access to. Do all the homework. As for books, I really like Algorithm Design [Tardos, Kleinberg]. It has a ton of really well designed problems to work on.
- mronge 19y agoI'll second the Algorithm Design book recommendation. An even better theory book is Introduction to the Theory of Computation by Sipser, however it covers slightly different topics. It is one of the most readable theory books I've seen, highly recommended, and a great resource for information on regular languages, context-free grammars and turing machines. A less theoretical book, that is useful for a gentle intro is Masting Algorithms with C. A bit off the theory track, but useful for a software engineer: Modern Operating Systems by Tanenbaum and Computer Organization and Design for info on hardware.
- neilc 19y agoThe Sipser computation theory book is absolutely fantastic, I agree. Definitely the most readable and clear book on the subject that I know of. However, I don't think it would be particularly useful to prepare for an interview -- the number of people likely to quiz you on the details of computability theory or complexity theory is pretty small.
- llimllib 19y agobut if you understand sipser, you've probably got a good enough base to fudge through a lot of whatever they throw your way. (And recommendation thirded! I just reread a good bit of the book on a flight to Montana, and it still rocks.)
- boucher 19y ago"Algorithm Design" is a great book. A similar quality book that focuses more on introductory material is "Introduction to Algorithms" http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262032937/ref=pd_bbs_2?ie=UTF8&s=books&qid=1204613127&sr=8-2 http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...