Job Details
C++ Developer with Multithreading
Remote Job
Sapient
Contract
Description

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:

 

  • Strong Basic C++ knowledge
  • Should know polymorphism and dynamic memory allocation
  • Good knowledge on multi threading and STL
  • Good to have knowledge on Design patterns
  • Knowledge on C++1x with hands-on

 

 

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