Monday, September 25, 2017

Preparing for Technical Interview for software Development Job


I would like to elucidate the most important aspects of a technical interview for Software Development position.  If you are planing to change your job or have already started looking for one this may be useful for you.

Follow the steps below in order to make yourself ready for interview:
  • Prepare your resume carefully, Do not add anything which you are not comfortable with. 
    • Review your resume after every interview and update it if required.
    • Keep it brief and Impactful 
    • Avoid adding too much things like college projects etc.
    • Avoid spelling mistakes
  • Below are the list of topics that you have to focus on:
    • Data Structures
    • Programming languages
    • Operating System Concepts
    • Domain experties
    • Projects
    • Others 
  • Practice the programming/Algorithm questions on white paper. Do not try to remember.
  • Make small notes of OS/Domain concepts
  • Prepare some behaviours Questions as well like :
    • Most Challenging Problem/Project
    • What You Learned
    • Most Interesting Problem/Project
    • Hardest Bug
    • Project Enjoyed Most
    • Conflicts with Teammates
  • Prepare list of companies which you are interested in or suitable for you.
  • Start applying for small companies once you gain the confidence after spending some time on the above topics. Save your dream companies for later.

Lets explore some topics in more detail which we listed above. Basically Data Structures, C Programming and  Operating systems.

Data Structures:
This is the most important topic in any technical interview for Software Development position. This topic have the most impact on your hiring process. So give most focus and energy to this.
Here is the list of must prepare topics:
  • Array
  • Stack
  • Queue
  • Linked List (All types of linked lists, Generic List)
  • Searching (Binary Search questions)
  • Sorting(Insertion, Bubble, Muick, Merge)
  • Hashing
  • Tree (BTree, BST, AVL, RB Tree, Trie, Patricia, Splay Tree, Heap)
  • Graphs (DFS, BFS, etc)
  • Matrix
  • Recursion
  • Dynamic Programming.


C Programming:
There are lots of tricky programming question which you should prepare.  However below are some of the most important topics to prepare for in C/C++ programming interviewes:
  • Bit Manipulations
  • Strings
  • Pointers
  • Implementing system call by yourself (sizeof, strcpy, strcmp etc)
  • Function Pointers
  • Structures/Unions/Bit fields/ Structure padding
  • Memory allocations and APIs (Malloc/calloc/realloc/heap)
  • Various Keyword (Static, Volatile etc)
  • Make Files
  • Libraries (Static/Dynamic)
  • GCC Flags

Operating System:
One need to have good and crisp understanding of OS concepts in order to answer the questions without getting trapped. Some of the most important topics are as follows:

  • Process  Management (fork, exec)
  • Linux I/O (File,Buffred)
  • Multi Threading concepts
  • Deadlocks and how to avoid them
  • Mutex and Semaphore(when to use what)
  • Memory Management
    • Virtual Memory
    • Process address space
    • Thrashing
    • Paging/Demand Paging
    • Belady’s Anomaly
  • Multiprocessing / SMP system/ RTOS
  • Various IPCs 
    • PIPES
    • FIFOs
    • Shared Memory
    • Sockets
  • I/O Multiplexing (Select, Poll, EPOLL)
  • Compilers/ Linkers/Loaders
  • GCC
  • GDB
  • Interrupts
  • Signals


Will try to compile and share list of popular questions for all the above topics.



Some really helpful sites:


https://www.geeksforgeeks.org/

https://leetcode.com/

https://www.codingame.com/

https://www.algoexpert.io/

http://www.ardendertat.com/2012/01/09/programming-interview-questions/

http://highscalability.com/


https://codeforces.com/


https://get.interviewready.io/





No comments:

Post a Comment