The C++ Algorithms online test assesses candidates' algorithmic thinking skills and their ability to implement algorithms using C++.

It's an ideal test for pre-employment screening. A good developer will be able to design and implement algorithms that are both correct and efficient. Computational complexity is important not only when scaling applications but when creating responsive, maintainable, and efficient code.

This online test requires candidates to analyze or design an algorithm using C++ as the programming language.

##### Recommended Job Roles

##### Sample Candidate Report

##### Sample Free Questions

**Binary Search Tree**

*Public questions*(free account) are common interview questions. They are great for practicing, or if you want to filter candidates using the classic problems.

Binary search tree (BST) is a binary tree where the value of each node is larger or equal to the values in all the nodes in that node's left subtree and is smaller than the values in all the nodes in that node's right subtree.

Write a function that, **efficiently** with respect to time used, checks if a given binary search tree contains a given value.

For example, for the following tree:

- n1 (Value: 1, Left: null, Right: null)
- n2 (Value: 2, Left: n1, Right: n3)
- n3 (Value: 3, Left: null, Right: null)

Call to *contains(n2, 3)* should return *true* since a tree with root at n2 contains number 3.

**Two Sum**

*Public questions*(free account) are common interview questions. They are great for practicing, or if you want to filter candidates using the classic problems.

Write a function that, when passed a list and a target sum, returns, **efficiently** with respect to time used, two distinct** **zero-based indices of any two of the numbers, whose sum is equal to the target sum. If there are no two numbers, the function should return (-1, -1).

For example, *findTwoSum({ 3, 1, 5, 7, 5, 9 }, 10)* should return a *std::pair<int, int>* containing any of the following pairs of indices:

- 0 and 3 (or 3 and 0) as 3 + 7 = 10
- 1 and 5 (or 5 and 1) as 1 + 9 = 10
- 2 and 4 (or 4 and 2) as 5 + 5 = 10

**Sorted Search**

*Public questions*(free account) are common interview questions. They are great for practicing, or if you want to filter candidates using the classic problems.

Implement function *countNumbers* that accepts a sorted vector of unique integers and, **efficiently** with respect to time used, counts the number of vector elements that are less than the parameter *lessThan*.

For example, for vector *v* containing *{ 1, 3, 5, 7 }*, *countNumbers(v, 4)* should return 2 because there are two vector elements less than 4.

##### Premium Questions

The premium question library contains our unique, hand-crafted questions. We offer a refund if you find any of them answered online.

##### Questions

Increment, Non Zero, Document Store, Crop Ratio, Increment, Babushka Doll, Chicken, Chain Link, Node, Battery, Hobbies, Out of Range, Tiles, Needle, Date Transform, Username, Limits, Internal Nodes, Entry, Window Manager, Moving Total, Rare, Max Sum, Unique Name, Paper Strip, Friend, Unique Numbers, Stories, Train, Runner, Archive, Platformer, Shipping, Weighted Average, Paragraph, Function Cache, Stack to Vector, Read Write Execute, Segment##### Skills

C++**The testing process:** Using std::vector to solve problems requiring dynamically sized arrays.

**Motivation:**Vectors are C++'s implementation of a dynamic array. A vector provides the random access lookup speed of a fixed size array, with the additional benefit of being easily resized at run time. Every C++ developer should be familiar with the std::vector and it's features.