Company Name : Sapient
Job Title: C++ Developer with Multithreading
Job Type: Full time, Work from Home
Location : Pan India
Years of Experience : 6+yrs
Salary : 250/M
Following is the C++ JD and its details:
Classes & Objects
1. Can explain the memory layout of a Class (with and without Virtual methods in case of class Hierarchy)
2. Can explain constant, static member variables, method in a class and mechanics of it
3. Knows and explains practical scenarios where structs are more suited than a class
4. Explains how abstraction, encapsulation concepts are supported by Classes & Objects
5. Can explain difference in overloading the operators as part of Member functions vs Friend functions
6. Understands what Nested or Inner classes are and provides at least one practical example of its use
7. Can explain at least 3 to 4 familiar and commonly accepted Best Practices of C++ Class Layout definition and
advantage of same
Inheritance & Composition
1. Can list the methods which does not get inherited automatically like Constructors, Destructor,
Assignment Operations and explain the reason
2. Explains how Static Members behave in case of inheritance
3. Explains why the Multiple Inheritance should be avoided
4. Explains with justification why too much of inheritance is bad and nice if can specify trade off in same
Polymorphism
1. Can explain when and how vtable gets initialized
2. Can explain in what order and how the pointers are listed in vtable
3. Can explain why Static Methods can't be made virtual
1. Can explain memory layout of vtable
2. Can explain vtable's initialization, modification during upcast and downcast
3. Can explain how various cast operators work and how they are suited to their own practical scenarios
Memory Allocation, Pointers and References
1. Can explain how reference counting can be implemented to manage the lifetime of an object
2. Can explain how to detect memory leaks
3. Knows Boost Library or any other standard library for Pointer life time management
Streams, STL, Data Structures & Algorithm
1. Can specify the underlaying Data Structure of containers like Vector, Map and List
2. Can specify type of the Iterator used in containers like Vector, Map and List
3. Can specify the Practical scenario on when to use which vector and which scores over other in terms
of Memory complexity and Time Complexity
4. Nice if knows Big O Notation specific stats for insertion/iteration/deletion on the containers like Vector, Map and List
Templates & Exception Handling
1. Can explain template specialization
2. Can explain and provide example for Partial and Full Template Specialization
3. Can explain how stack winding happens and understands its impact in memory handling
4. Can explain how exceptions are thrown, re-thrown, and handled
Analysis, Design & UML
1. Given a Class Diagram of a Pattern with missing item/relationship/class can fill it
2. Can Draw Sequence Diagrams for Synchronous and Asynchronous Flows
Design Pattern
1. Knows Architectural Patterns and Principles
2. Knows Concurrency Patterns
4. Have handled patterns in Multi-threaded environment and can explain the issues faced in MT environment
and its solutions
Modern C++11/14/17
1. lambda expressions, closure.
2. Variadic Template
3. Multithreading and Task based programming.
4. Move semantics, rvalue references, forwarding references