The long answer needs more information. Why do you think you suck at technical interviews? How do you know that? If the answer is "because I haven't gotten an offer," what makes you think it was the technical portion of the interview you failed? What parts are you not good at? When do you freeze up? Why do you freeze up?
2.) Work through one of the popular coding interview books .
3.) Practice off-keyboard things like white-boarding and public speaking. Get up in front of your white board and work through a problem like you're teaching a class on the subject.
I recognize that 1 and 2 might feel like gaming the system a bit - they are, but as long as companies continue to practice contrived interviews targeted preparation will naturally follow.
As stated, you don't lack the ability to perform in general, just within the artificial confines of an interview.
- Practice makes perfect: find someone to give you a mock interview. Do this as often as necessary until you conquer your problem.
- Caffeine, adderall, etc, can make you much more anxious. You need to be calm.
- Don't feel pressure/rushed, and don't panic. Slow down. If your mind races under pressure, that's completely normal, but it can be controlled.
- Its ok to not entirely know the answer. Start by responding with what you do know. Once you begin speaking, the ideas will start flowing. Many technical questions are "loaded". To actually solve the problem in the best way possible, you need way more information than they give you. This will cause your mind to race. Try to qualify your response with your thought process, "if this or this, I'd do this. If something or another, I'd probably do this."
- Practice speaking with confidence. Take a deep breath, all the way down into your belly, and then use that air pressure to make your vocal chords "sing". Having a strong vocal tonality will resonate confidence inside your head, and inside theirs. Also, don't be monotone/boring. Find/express energy and enthusiasm without sounding fake or cheesy.
Being nervous for an interview is normal. I've interviewed a lot, and I always get nervous. Its just something you have to deal with. Public speakers and pick up artists (approaching women to ask them out) are two areas that you can find a ton of advice for calming your nerves.
Introverts can have a hard time finding their inner personality. Practice makes perfect. Try to start as many conversations as you can each day. Don't force it, become natural at engaging conversations with other people. This will help all areas of your life, including interviews.
One good trick is to take charge of the interview.
There are standard questions the interviewer must ask (every time he does an interview) Try to answer all of those before he gets to ask them. This renders him without things to say. Then you get to ask your own questions.
Change the discussion from "why do we want to hire you?" into "why do I want to be hired by you?" When will I get a raise? when will I get promotion? when will you get to sit where he is sitting? And where will he be at that point? How are ideas treated here? Is one supposes to show initiative or not?
Will you get locked away in an office or will there be other people on the floor? Who do you get to work with? Have him tell me something about your future coworkers.
My favorite one is to just bluntly ask why their product is better than the competitor. I ask that because when it is asked from me I want to be able to answer it precisely the way I'm suppose to.
Show an interest in the interviews, the guy is doing that all day long, is he having fun? Did he see many good candidates? How many interviews will they do for a single job opening? Does he enjoy his work? Don't allow him to just sit there pretending to be interested in your life. Show an interest in who he is, what he does and where he comes from (or she)
You can be empathic about it but working down your list like a robot is equally impressive.
Talk fast but not to fast, keep eye contact but don't gaze.
If their argument 'why you want to work there' is good enough and their product is good enough end the interview before he does, ask if he made up his mind already, when do I start? You don't want to pressure him but you have a lot of other interviews you would rather not have to go to.
You want him to have the impression that you are putting serious work into finding a job - but not to much.
Maybe your advice works in certain situations but, against a full on neck beard who cares only to see if you know data structures and OOP, your advice would guarantee that you do not pass the interview.
So dissociate yourself and detach yourself from the process. Others have given you tons of advice on this process. The secret really is to practice. It is hard. But it is doable. Good luck, mate.
The thing to realize is that being good at technical interviews (as done by the above companies) is a skill unto itself but it is a skill an intelligent person with a comp sci background has the ability to get significantly good at after a 1 to 2 months of disciplined preparation. - I went to a top ranked school myself and had a comp sci degree but was very intimidated by technical interviews until I realized that this was no different than all the other other intellectual hurdles/gauntlets I had successfully navigated up to that point by giving myself time to thoroughly prepare.
Get "Elements of Programming Interviews" and give yourself 2 months to prepare. Start to with "1-month" plan in the book spending at least an hour a day at the very minimum. (I have worked through both Elements of Programming Interviews and Cracking the Coding Interview in their entirety and while both are good, in my experience Elements of Programming Interviews was clearly the better preparation in terms of technical depth, breadth of exposure to the kinds of questions I faced in the full-day interviews, and succinctness of coding solutions)
Get dry-erase paper/notebook or a white-board and work through the problems by hand including the coding (important!). For the first week or two give yourself an honest focused couple of hours to wrestle with a problem before looking at the solution. it is not enough to settle for "I think I know how to solve this" - Actually code up the solution by hand and step through it with some simple cases. This is important and it allows you to develop confidence in your ability to think methodically through a problem as well as giving you an opportunity to develop mental heuristics for how to tackle and test unfamiliar problems. Developing confidence in your ability to think through interview-style problems is every bit as important as exposing yourself to interview-style problems. As you progress, you will be working towards being able to deconstruct a problem and be ready to start coding up a high confidence solution in 15 - 20 minutes.
"Talk to yourself" as you try to solve a problem to simulate explaining your thought process to someone as you go along.
When going through the solutions in the book, do not gloss over a detail you do not understand. Go online and find alternative explanations/references if you don't understand some detail of the solution provided.
After a few weeks of this kind of daily disciplined prep, you should start feeling pretty good and your confidence should start building nicely. Lots of interview questions are variants of each other and once you have enough breadth, you start quickly being able to key into the "type" of question and possible solution approaches almost as soon as you hear it.
Last thing is when you feel ready to start doing interviews, do not interview with your "top choice" first. If you can find someone that has done interviews to give you a mock interview, great! If not, schedule interviews whose outcome you are not as attached to (relatively speaking) first.
Hope that helped.
Also, check out this classic post on the topic:
Over the years, I have seen a particular scenario play itself over several times - the scenario is a very smart and high quality engineer decides to take an interview with Google, FB, MSFT, Amazon etc etc on a whim without preparation, have a pretty bad day and remember rudely that the interview experience is pretty different from their day to day job, go back home, take a month or so to prepare diligently, and then take interviews again and have excellent results.
My attitude reinforced over the years is that my edge going into interviews over other candidates is my ability to prepare. I take it seriously and don't fuck around. The return on investment on that month or two of preparation has been very worthwhile and each time you invest in it makes the next time easier.
This is the Aziz and Prakash book, yes? Formerly known as "Algorithms for Interviews"?
If so, can anyone comment on whether or not the content has significantly changed between editions?