Hacker News new | ask | show | jobs
by ultimoo 4778 days ago
I believe I am a good engineer, I have heard generally positive things about my professional work, have a college degree, etc.

I am however terrified of programming challenges (topcoder, spoj, interview-street, etc.) I have tried solving some problems there using Ruby (back when it was 1.8.x, too slow for these kind of problems) and given up. Maybe I should give it a shot with C. Any ideas how to start, considering these competitive coding websites are quite important when interviewing at certain companies?

4 comments

My experience participating in TopCoder SRMs (quick algorithm development competitions) has payed off quite a bit when it comes to white board coding style interviews (both as the interviewee and the interviewer). Just thought I'd share a few pointers:

- participating in SRMs is great practice for interviews because you're forced to learn to think clearly while under intense time pressure.

- The TopCoder tutorials are a great resource. In addition to review of useful mathematics, data structures and algorithms they'll give you an introduction into how to participate well. For example time management between the easy, medium and hard problems.

- You have four language choices for SRMs. My preference is C#. I like using Visual Studio because the auto-complete/intellisense comes in handy when you have to write a bit of boilerplate code (like "new Dictionary<int, int>();". I've also used MonoDevelop on OS X. It worked well. iirc almost all problems are solveable using C# except a few where, to my knowledge, C++ was necessary. Read-up on Petr's advice. I believe he's a fan of C#.

- My knowledge of C# isn't particularly deep so don't let learning a new language scare you away. imo you just have to effectively use dynamic arrays (List<T>), hashtables (Dictionary<Tkey, TValue>), static arrays and strings. Also a sorted key-value store like SortedDictionary comes in handy once in a while.

- Last bit of advice: solve lots of problems and have fun! You can access a vast archive of problems from previous competitions and match editorials which usually have decent explanations for the problem solutions.

I believe Petr has switched to Java now though
I am similar- I don't perform well with abstract code challenges. So I don't interview with companies like Google that require them- it's just a coincidence (or is it?) that I don't particularly want to work at those companies either.

In my most recent interview I was given a computer hooked up to a projector and a real world challenge to solve. I went step by step, describing to my interviewer what I was doing. I got the job.

Those programming challenges are silly, completely unrelated to real-life programming. Staying awake for 24 hs, writing ultra-optimized snippets of code that barely compile with zero documentation. Training exactly the kind of programmer that is useless in any organization except for programming challenges.
Sure, but if it is what is required to get a job...
Start with the basics of data structures and algorithms. Get a textbook and read it and implement the structures using whatever language you like, and find problems that are solved by using those data structures (and solve them).

Watch computer science lectures on iTunes U. These days all the top schools put their lectures online. Try to do some of the homework assignments. If it's too hard, figure out what part you don't know and find an online course on it. Then try again.