Responsibilities Excellent knowledge in C,C++ OOPS Concepts Templates and STL Exception Handling and Overloading Containment and Inheritance Multiple Inheritance Run Time Type Identification (RTTI) Understanding of the operating systems and how they work: What is the difference between virtual storage and real memory What is paging and swapping. Types of shared memory in Unix systems and its usage Usage of Unix commands. (ps,pstack,pmap,vmstat iostat netstat etc). What is the difference between a process and a thread How can we share data between threads, and between processes Good Analytical and Logical skills. Awareness of software engineering processes in design, code, testing etc. Ability to work under less supervision Be a team player Possess good verbal and written communication skills