
Ask HN: How do you prepare for a Technical Interview - 64bitbrain
Hi.<p>I am full time software developer and my day to day activities involve bug fixes and sometimes working on a prototype or POCs. I recently got an chance to interview and after a little research I found that, they are more focused on Data Structures and Algorithms coding questions. The problem here is, that I know what a complexity of a quick sort or how I do use HashMaps, but I don&#x27;t work on these data structures or algos everyday, or even write a tree traversal routines. I remembered all these when I was a fresh graduate. How do you deal with this? Should  I ask more time before I go for an interview?? What should be a better approach.<p>Sorry for my bad English.
Thanks in advance.
======
leap_ahead
Personally, I have come to realize that you cannot truly prepare for a
technical interview no matter what you do. You can study for months in a
futile attempt to commit to memory everything that might be relevant (data
structures, algorithms, maths, statistics, API reference etc.) but they will
always find something to ask you that you missed during your studies.

These days I simply reply that I do not do technical interviews any more as I
do not believe these can efficiently probe one's professional abilities and I
cannot justify expending time in memorizing bulkloads of trivial information
for the sake of going through some rite of passage, which some interviews
often turn into.

Agreeing to a technical interview also puts you at a disadvantage. They will
probe your weak spots and then use this knowledge to publicly disgrace you,
declare you less competent than what you'd like them to believe and then to
low-ball you with an offer below what you might otherwise get. Many developers
fall for that trick, the best you can do is to make sure you don't join their
group.

Just say to them you will not do a technical interview (or a test project on
your own unpaid time) but that you are prepared to meet and have a
constructive discussion around their needs and your willingness to possibly
help them out with whatever they have in mind. If they don't like it, skip
them for the next company in your list.

------
poof131
I like the advice given here: [https://medium.com/@davidbyttow/abc-always-be-
coding-d5f8051...](https://medium.com/@davidbyttow/abc-always-be-
coding-d5f8051afce2)

I'm thinking about making a move and am slowly prepping algorithms and data
structures again myself. Going to focus on studying nuances of the language
I'm working with - JavaScript (+HTML, CSS) and the frameworks I'm currently
using - Angular & Node.

But having seen the other side now, I recognize that you will most likely run
into peoples' pet questions that you can't always prepare for. One coworker
gets upset when people can't answer his Angular question, another gets upset
if the Java isn't idiomatic enough. If they like you enough they'll overlook
it.

So study what you can, be confident but not arrogant, and recognize luck will
play a factor. I'd rather be writing code to build things than for practice,
but it is part of the game. And in reality the quizzes should really be a
screen and the decision should be based upon the things you've built. So
hopefully you have things to show, can talk about what you've done, and the
team your looking to join recognizes actual accomplishments are more important
than solving puzzles on the spot.

------
harpb
I read Programming Interviews Exposed ([http://www.amazon.com/Programming-
Interviews-Exposed-Secrets...](http://www.amazon.com/Programming-Interviews-
Exposed-Secrets-Landing-
ebook/dp/B008SGNJOW/ref=tmm_kin_title_0?_encoding=UTF8&sr=8-1&qid=1430703825))
- which covers lot of topics that come up during interview.

------
MalcolmDiggs
I've found that technical interviews are their own best prep. I'm sure you get
contacted by recruiters/startups pretty regularly (and that you usually pass
on these opportunities). I try to say "yes" to one or two per week, and go
through their technical interview process, just to stay on my toes.

It takes the pressure off and keeps you on top of your game.

------
soham
Three main ways to prepare for a technical interview are:

    
    
      1. Books
      2. Websites
      3. Classroom courses
    

=====

Books

=====

    
    
      There are a dozen or so books in the market. 
      The two most popular books (and well written also) are:
    
      1. Cracking the Code Interview
      2. Elements of Programming Interviews
    

========

Websites

========

Websites are roughly divided into two groups:

a. Where you can write code and compare yours with others' solutions

Popular ones, in no particular order, are:

[http://leetcode.com](http://leetcode.com)

[http://HackerRank.com](http://HackerRank.com)

[http://uva.onlinejudge.org/(UVA](http://uva.onlinejudge.org/\(UVA) Online
Judge)

[http://SPOJ.pl](http://SPOJ.pl)

[https://projecteuler.net/](https://projecteuler.net/) (Project Euler)

Note that not all of them have questions that are interview oriented. But it's
great practice regardless.

b. Ones that give you a problem and then a solution, with no or little
competitiveness

Popular ones, are:

[http://InterviewCake.com](http://InterviewCake.com)

[http://GeeksForGeeks.org](http://GeeksForGeeks.org)

[http://Glassdoor.com](http://Glassdoor.com)

[http://Careercup.com](http://Careercup.com)

=============================

Classroom courses / Bootcamps

=============================

[http://InterviewKickstart.com](http://InterviewKickstart.com) (I run this
one)

Having said that, realize that you are not alone. Most programmers these days
don't use fancy data-structures and algorithms at work.

But unfortunately, interviews still ask for it. That is a whole debate on its
own.

~~~
64bitbrain
Thanks a lot for this. I didn't really know what to do or where to start from.
You have really summarized it well for me. Thank you!! :)

~~~
soham
Np. If you have enough time, then start with doing one problem every couple of
days from Leetcode.

If you feel overwhelmed, then you can join a classroom course/bootcamp where
you will get regimented preparation, like-minded people and a lot of help from
experts.

If you are not overwhelmed and enjoy the self-paced practice, then all you
need, is some fake/mock interviews with seasoned interviewers, to make sure
you are on track. Those you can do by applying to companies that you don't
want to work for, or you can do those with us
([http://InterviewKickstart.com](http://InterviewKickstart.com)).

------
rifung
I used to prepare for them using CareerCup and doing problems on either
HackerRank or Google Code Jam's practice problems.

Now though I usually don't even bother and just go to them; I think that after
you studied for them the first time you kind of already know what to expect,
and the interviews themselves kind of prepare you, so usually I try to
schedule interviews I don't care about as much before the ones I really want
to do well on. The scheduling also helps because for the first one I might be
nervous but if you keep doing it I think your body just gets used to it and I
honestly kind of stop caring whether I'll get in or not. it might sound
counterintuitive but I actually find that the less I care the more likely I am
to do well.

------
MichaelCrawford
I prefer the book "Algorithms" 2nd Edition by Sedgewick. It is long out of
print but can be had used for a song.

Implement each algorithm in the book in your preferred language. The
algorithms themselves are presented in Pascal, which IMHO makes them easier to
understand.

Now implement them all in some other language - not your preferred one.

