You need to know, to begin as software engineer

Fortunately I had the opportunity to face few interviews. And this article is a sum up of what companies (good companies) expect from a software engineer. Though I interviewed as Java developer but most of the things are same for any stack.

Data Structure : It doesn't matter what if its a technical position companies will judge your knowledge about data structure. Like,
In a interview, the interviewer asked,
"Assume there are lots of items and few of them are unique. How you will get the unique items ?"

What could be the answer ? Well, a single Set can save you. They will judge whether you know or not when to use which data structure.

If you are a Java developer, you may know there are few implementations of Map (HashMap, TreeMap). Do you know what is the difference between HashMap and TreeMap ?
Ah, simply TreeMap keep the data sorted by key value.

There are other data structures you must know before facing any interview like Array, Queue, Stack, Tree, Graph and their implementations based on your technology stack. As there could be differences between stack-stack/platform-platform implementation. Like C++ Set keeps data sorted, but in Java HashSet won't, you will need TreeSet.

Algorithms : Another important topic is how much you know about algorithms. They won't ask you to write a search algorithm like google but the basics.
Have a look at the below graph, How you can go to B from A within minimum cost ?

Remember you were taught kruskal's minimum spanning tree in algorithms class ? ;)

Object Oriented Programming : In real world software development you have to use OOP. They will ensure you know about the OOP principles and how to use them properly. When to use Abstract class and when Interface. What is the difference between method overloading and method overriding. What is polymorphism ? What is Diamond problem ? etc.

If you know about few design patterns thats a plus point. They may ask why (Java context),

private static MyClass myClass = new MyClass();

public static MyClass getInstance() {
    return myClass;

is efficient than,

private static MyClass myClass;

public static MyClass getInstance() {
    if(myClass == null){
            if(myClass == null) {
                myClass = new MyClass();
    return myClass;

Study it 3:)

Threading : Could be few interesting question about threading.

Database : What is one to many, many to one, many to many relationship with real world example is very common question to ask. Consider a blogging platform, a blogger may have multiple posts (its one to many relationship). Knowledge about ORM libraries like Hibernate, EBean (Java context) etc. Having experience with noSQL is a plus point. Play with MongoDB, ElasticSearch, Riak or any other noSQL database. Database for mobile devices like Sqlite, Realm etc.

Now come to the point, you will be asked few platform based question you are going to work. If you are interviewing for Android, question could be related to Android platform.

If you are looking for backend engineering job, learning at least one framework depending on programming language. Like Play, Spring, Jersey for Java. Django for Python. Laravel for PHP, Rails for Ruby, Nitrogen for Erlang etc.

As there will be short time ( 15 - 30 mins) they mayn't ask from every topic or they may. Topics can vary for different platforms. Some company may take written exam first. Written exam could be problem solving or technical questions, it varies from company to company.

To be better at data structure and algorithms the easiest way is to do competitive programming. Few problem solving platforms to mention are UVA Online Judge, Codeforces, HackerRank, TopCoder etc. Besides do not wait to join company, start developing some fun project at university to grow your skill.

If you can cover these, go further, explore about socket programming. Different networking protocols like HTTP, MQTT, WebSocket, XMPP, WebRTC, RTP, RTSP etc. Reactive Programming (Rx). Distributed System. Load balancing. Data caching. Huh There are lot to know ;)

Another thing companies aren't bothered about your CGPA, rather your skills.

Talk is cheap, show me the code.

Its better if you could show few project you have already done.