You could get better at logical problem solving by practicing on Khan Academy or Brilliant or Art of Problem Solving. If that's what you want, then do those things. But it's not an efficient way to get better at interview questions.
4 karma · joined March 22, 2015
Twitter: @RedGreenCode
You could get better at logical problem solving by practicing on Khan Academy or Brilliant or Art of Problem Solving. If that's what you want, then do those things. But it's not an efficient way to get better at interview questions.
Companies that get a lot of applicants care more about false positives than false negatives. So they're fine not hiring a lot of qualified people, as long as there's a low chance of accidentally hiring an unqualified person. Apparently LeetCode-style problems work for that type of screening.
But really, the way to get started is just to pick a site and start solving problems. If you're specifically interested in GCJ then it's best to practice using previous problems from that contest. But I wouldn't recommend getting too caught up in one contest. If you start with the Easy and Medium problems on HackerRank or LeetCode, there are tutorials, discussions, and editorials to help when you get stuck. And those sites are easy to use, so you can get a lot of practice time in with low friction. That will get you past the beginner stage.
A programming contest, even if you just do the easy problems, can be a more enjoyable way to practice for interviews than reading a book or even going through online puzzles like those on LeetCode.
I wrote a blog post on this topic with more details on a specific process: http://www.redgreencode.com/deliberate-practice-for-software...
Khan Academy is a reasonable way to start learning programming, but like other learning sites (Codecademy and others) they focus on learning things the first time, and not as much on getting better. CodingBat (http://codingbat.com/) takes a more drill-oriented approach, which is more effective for learning the basics well. But there's not a lot of content there, in comparison with a puzzle site like SPOJ (http://www.spoj.com/).
http://www.quora.com/Why-are-programmers-in-the-software-eng...
It's worth reading the whole thing, but here's a summary of why alternative interview techniques have their own problems:
* Testing for specific technology knowledge excludes good programmers who don’t happen to know that technology.
* Asking someone to explain their past projects is biased towards people who can explain effectively, not necessarily people who can do the work.
* Giving candidates a homework problem has several drawbacks: they may have someone else do the work for them; it is biased towards candidates with more free time; and because it requires negligible time for a company to send off a canned assignment, but potentially a lot of time for the candidate to complete it, it can be unfair to candidates.
* Having candidates work on a real project for one day makes it difficult to focus on characteristics that distinguish great programmers from good or mediocre ones, since real projects have a lot of simple tasks that almost any programmer can handle.
* Letting candidates use a computer during the interview can cause them to focus on syntax rather than problem-solving.
Basically, although many people hate the coding interview, there's no good alternative.
If you want more information on this topic, it is often discussed on Quora. Here are a few relevant posts:
* Why tech interviews are the way they are: http://www.quora.com/What-do-you-think-about-the-current-tec...
* Preparing for a coding interview: http://www.quora.com/How-do-I-prepare-for-a-software-enginee...
* Possible reasons for getting rejected after an interview: http://www.quora.com/What-are-possible-reasons-for-getting-r...