| I'm currently prepping for an interview at one of the Big 4. I can tell you that this site is quite useful. They have tons of problems to help you with the recognition part as well. You don't have to be a genius to be able to do these problems. It just comes down to pattern matching. That said I don't think this is the ideal way to interview people. However no one has as yet proposed a better alternative. I turned down an interview assignment recently because they wanted me to implement an app with : - Syncing to a database - UI Tests (with a mock API) - Unit tests - Functional reactive programming - A really complex architectural design pattern All this just to get a shot at the interview. I was too tired to do it at the time so I turned it down. So I would criticise programming interviews but I don't have a better alternative. Sane assignments are a reasonable middle ground (Perhaps they could have knocked off a few from the above list). So if you want to work at a top employer and not be forever stuck doing CRUD then your only option is to learn algorithms and practice interviewing. I know it sucks but that is how the game is played. The reason some people can do them is not because they're geniuses but they come from employers,schools where there is a culture of doing interview problems. They've been doing this for atleast a year if not more. So try doing them for a year and then tell me whether you still find them impossible. I realised this when I took the help of a champion competitive coder for preparation. It was hard to find a question typically asked in these interviews which he hadn't heard of in some shape or form. I have some tips I'm compiling which I might turn into a blogpost or book. For recognition you need to practice abstract thinking . Thinking of something in terms of code should be completely avoided. Suppose I ask you to find the common ancestor of two divs. In this case the DOM is a tree whose nodes have parent pointers. Turn every question into a mathematical abstract form. Find a k such that , Find two numbers x & y such that and so on. The next step is massive repetition. It feels like you're grinding with no understanding , but something happens when you repeat something 20+ times. Depending on how smart you are it happens sooner. Eventually it will become intuitive. Always learn multiple solutions. Never settle for just one answer. Learn all possible answers and how it might be possible to go from a brute force to the optimal one. Use Geeks4Geeks and Elements of Programming Interviews to build your pattern recognition. Next read books and PDFs by Udi Manber on algorithm design. http://akira.ruc.dk/~keld/teaching/CSS_e10/Manber88.pdf This is a lot of effort. But that's just how it is. You don't HAVE to work at Google. You can work at other places and do quite well too. But if you want the top jobs then this the road you must take. |