What you should know to pass IT interview

If you are reading this, then maybe soon you are going to attend rather nervous and challenging event — IT interview, but be strong as soon as I can tell you what topics and material you have to learn ant revise before. Most of the topics will be related with C++, however in many cases knowledge is applicable to other languages and is useful to people who just want to dive deeper into the ordinary things.


Data Structures and Complexity

IT interviewers love to ask about how many data structures do you know and, which is more important, where each of them could be applied. You must tell time complexity information for insertion, search and delete even when you are woken in the middle of the night.

Simple cheat sheet will help you to do this.

Sorting Algorithms

This is an obvious basis, but realization on the desk during an interview may become a challenging task. Practice much, remember the principles and try to generalize sorting functions with templates.

And of course, some fundamental books to read =)

Introduction to Algorithms and Algorithms.

“C” is where to start from

Don’t forget where it started! C language basis will obviously help you to better understand how things were done before STL containers and other useful features.

Templates

C++ templates may be hard to understand, but once you get used to the syntax, it become the powerful mechanism for code generalization. Of course somebody can say that templates is not “must have” knowledge in the language, but since all modern compilers almost completely support the C++11 standard…why not to use it.

I strongly recommend this two books to read. The first one is pretty old, but this book by Andrei Alexandrescu will blow your mind on the topic of possible meta-programming approaches. And the second one will help you to dive deeper in modern C++ features.

Threading and synchronization

Since C++11 it became easier to write multi-threading code. Different synchronization primitives and atomic operations helps to write safe code.

http://en.cppreference.com should be the default resource for your all C++ questions. You can also show your knowledge and experience in 3d party libraries usage, for example Threading Building Blocks.

Strange puzzles

Many companies like to ask you strange questions that requires algorithm thinking, creativity and logic in order to solve them.

On Quora there is a good collection with solutions.

Practice programming

Maybe the most useful advice not only for all who just entered the world of software development but for experienced folks is to practice algorithmic tasks!

I can mention Codility (good thing to start with), HackerRank and TopCoder as the best places to train you algorithmic thinking! After each completed task you will mention that you are growing as a developer.


All in all, just start your own project and improve it every day. That is the most effective road to a success in IT word. Interest and self motivation is very valuable. Good Luck!