You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Click to expand the learning outline for Language Basics
Knowledge Domain
Topic
Sub Topics
I. Language Basics
1. C++ Evolution
2. Compilation
3. Running C++ Code
4. Variables
1. Declaration and Initialization
2. Memory Location and Lifecycle
3. Primitive Types
4. Non-Primitive Types
5. Casting
6. Const Variables
5. Methods
1. Signature
2. Static Method
3. Instance Method
4. Pass by Value or Pass by Reference
5. OperatorPrecedence
6. Math Operations
7. String Manipulation
8. Conditionals
1. If Statement
2. Switch Statement
9. Loops
1. For Loop
2. While Loop
3. Do-While Loop
4. Recursion
10. I/O Streams
1. Standard Input
2. Standard Output
3. Standard Error
11. Exceptions
12. Multi-Threading (Basic)
1. Process
2. Thread
3. Fork / Join
4. Mutex
5. Race Condition
13. Template
14. Differences between C++ and Java
15. STL
16. Namespaces
17. Smart Pointers
II. Data Structures
Click to expand the learning outline for Data Structures
Knowledge Domain
Topic
Sub Topics
II. Data Structures
1. Array
1. std::vector
2. std::array
2. List
1. std::list
2. std::forward_list
3. Set
1. std::set
2. std::unordered_set
3. std::multiset
4. std::unordered_multiset
4. Map
1. std::map
2. std::unordered_map
3. std::multimap
4. std::unordered_multimap
5. Stack
1. std::stack
6. Queue
1. std::queue
2. std::priority_queue
3. std::deque
7. Tree
1. Binary Tree
2. BST
8. Graphs
1. Directed
2. Undirected
3. Acyclic Graph
4. DAG
9. Manipulating Data Structures
1. Iterators
2. Function Objects (<functional>)
3. Lambda Expressions
4. STL Algorithms (<algorithm>)
III. Object-Oriented Programming
Click to expand the learning outline for Object-Oriented Programming
Knowledge Domain
Topic
Sub Topics
III. OOP
1. Classes and Objects
1. What are Classes and Objects/Structs?
2. Instantiation and the life cycle of an object
3. Declaring and Implementing a Class
4. Access Modifiers
5. Data Member
6. Method
7. Types of Constructors
8. Nested Class
9. Destructors
10. Accessors
11. Static Variable
12. Static Method
13. Const Variable
14. Const Method
15. Friend keyword
16. Enum and Enum Classes
17. Splitting between header and source files
18. The Rule of Three
2. Pointers
1. What are Pointers?
2. Stack Memory Allocation
3. Heap Memory Allocation
4. References vs. Pointers as method parameters
5. Pointer Arithmetic
6. Smart Pointers
3. Inheritance
1. What is Inheritance?
2. Modes of Inheritance
3. Types of Inheritance
4. Advantages of Inheritance
5. Types of Casting
4. Polymorphism
1. What is Polymorphism?
2. Method Overriding
3. Virtual Methods and Pure Virtual Methods
4. Abstract classes
5. Abstraction
6. Method Overloading
7. Static vs. Dynamic Polymorphism
8. Virtual Destructors
9. Virtual Table
10. The Diamond Problem
5. Operator Overloading
1. What is Operator Overloading?
2. When is it used?
6. Further OOP Principles
1. Composition
2. Composition vs. Inheritance: Advantages and Disadvantages
3. Association
4. Aggregation
5. Encapsulation
6. SOLID Principles
IV. Algorithms
Click to expand the learning outline for Algorithms
Knowledge Domain
Topic
Sub Topics
IV. Algorithms
1. Time Complexity
2. Space Complexity
3. Techniques
1. Brute Force Algorithms
2. Greedy Algorithms
3. Divide and Conquer Algorithms
4. Two Pointers Technique
5. Fast and Slow Pointers Technique
6. Merge Intervals Technique
7. Sliding Window Technique
8. Cyclic Sort Technique
9. Subsets Technique
10. Topological Sort
11. Top K Elements Technique
12. Min Heaps and Max Heaps Technique
4. Sorting
1. Selection Sort
2. Bubble Sort
3. Insertion Sort
4. Merge Sort
5. Quick Sort
6. Heap Sort
7. Bucket Sort
5. Searching
1. Tree Traversal Algorithms (Pre-order, In-Order, Post-Order)
2. Graph Traversal Algorithms (BFS, DFS)
3. Linear Search
4. Binary Search
6. Recursion
1. Iterative vs. Recursive Approach
2. Memory Utilization of a Recursive Approach
3. Maintaining Intermediate Results while Using Recursion
4. Constructing the Recursive Calls and Determining the Base Case
Resources:
I. Online Learning Material
The below resources are only meant to help you start researching to find the material that would cover the required topics. They are not meant to be a comprehensive source of learning material.
We assembled the below list of exercises as a sample to help you prepare for the Hackerrank test.
We advise you to start with this list and then solve other exercises from similar categories based on your need.