My tips reflect my attitude more than general advice, but here goes:<p>- Decide what <i>you</i> want out of the interview. How do you decide to work for this company? An interview is a two-way street. Engage with the interviewer, connect with the culture. Push back (a little) on their ideas, see what happens.<p>- I hate puzzles. I think they're junk and have never found them to be good predictors (for either party). I usually (1) parlay it into some relevant experience "I encountered something like that when I..." or (2) describe how I'd solve a problem rather than dig into it [1].<p>- Demonstrate your common sense, flexibility, good social skills. Talk about how you work in a team. Talk about what you do when you encounter a problem you can't solve yourself. Talk about any self-lead learning you do. You need to fit in and you need the company to demonstrate they want you to help. Even if the interviewers aren't aware of it, more often these form the lasting impression from an interview.<p>[1] Long, long time ago I was asked to produce a "sort" implementation. So I drew a bubble-sort. When one of the interviewers was somewhat outraged by this, my reply was "I didn't have any constraints, so I optimized for maintainability." A bit cheeky perhaps, but worked in the context.
I am completely against written tests or questions that ask abstract questions and ask you to write algorithms. Unless you're going for a position that requires a PhD in computer science and your job will be writing algorithms and solving overly complex problems, the pen and whiteboard approach just doesn't work in 2013.<p>Hiring a developer shouldn't be as complicated as some companies make it out to be. Maybe for the likes of Google it has to be a lot more complex than others because they have an image and large workforce that depends on people being excellent self-managers and workers that require minimal management.<p>For smaller companies you are wasting your time and my time asking me questions that test my ability to remember things more-so than they do to search and find answers. Lets face it, most developers these days are hackers. I've never met a developer who knows the answer to everything, I've seen the best of the best using Stackoverflow to find an answer to their question.<p>The difference between a good developer and a great developer is knowing a little and for the stuff you don't know, knowing exactly what to Google when you encounter a problem you can't solve off of the top of your head. As Albert Einstein famously said, "Never Memorize What You Can Look Up in a Book" — that doesn't mean don't learn anything, but get the basics down and eventually you'll know what to Google when you don't know something.<p>The real test of any developer is if they're a good fit for your team, have good work ethic and can get the job done. You can find the smartest developer in the world but they might not be a good fit for your team. Culture matters as does a good work environment with compatible people.<p>The best way to test a developer anywhere in the world is to give them access to a computer, an IDE and their environment of choice. Then ask them to build you something. Don't ask them to write binary search code if they're being interviewed for a front-end position, ask them to build something.<p>Welcome to your interview; build us a blog, build us a todo app, write a simple Wordpress plugin, write a jQuery plugin or what my current employer did: they brought me in for a trial for a couple of days (paid) and asked me to get my hands dirty on a real project they were currently working on. Just threw me in the deep end and after two days they had a good idea how I worked and if I was a fit.
"So you're interviewing at Google and lunch time comes around. Food is free so you eat way too much, especially carbs. Your post-lunch interview is a disaster since you have trouble focusing due to lethargy. True story."<p>Ha... I might have chosen the wrong cafeteria, but to me the food was a disappointment during my Google interview. The veggies were way too hard, I didn't like tacos, some of the meat looked indecipherable, and I was fumbling as I wondered whether there was a line, or whether I was looking stupid. I kinda wished there was NO free lunch.
The idea of using "B-list" companies makes me a bit disgusted honestly. Have we put ourselves on such pedestals that we use other people's valuable time as unknowing practice runs? I would never interview somewhere I was not interested in working.
The talk about tech interviews reminds me of this clip.
<a href="http://www.youtube.com/watch?v=OXRi28W-ENY" rel="nofollow">http://www.youtube.com/watch?v=OXRi28W-ENY</a>
There are some good tips and links here, but I don't understand the "hacking" metaphor. There are no big secrets. It all comes down to the "always be coding" idea that was presented a few months ago [1]. It just takes discipline and time-management. Succeed at that and many offers will come your way.<p>[1] <a href="https://medium.com/tech-talk/d5f8051afce2" rel="nofollow">https://medium.com/tech-talk/d5f8051afce2</a>
I really appreciate this article! So many people go to interviews and are obviously unprepared. The simple fact that a person is unprepared for the given task is an obvious show on their personality. This goes for just about anything, not just interviewing. Would you just walk into a test without going to class first? Would you try to fly a plane full of people without first being taught how? So why would you go to an interview without knowing whats expected.<p>- Know that an interview is a 2 way street. Have questions to ask the interviewers, if they ask you silly algorithm questions, have them explain to you how they use those algorithms in the workplace.<p>- Make sure the job your interviewing is a place you can fit into, not just the other way around.<p>- If you don't know something they are asking, just be upfront and say you don't know it, then ask them what it is and how its used at their company. Take note of this for future interviews.<p>- Don't let the interviewer lead the interview the entire time.<p>- For those of you haters that don't like the B-list idea, you could ask your peers that work at other places to interview you. (Interesting idea for a startup? Mock interview company? :)