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

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 Python 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.

**Song**

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

A playlist is considered a repeating playlist if any of the songs contain a reference to a previous song in the playlist. Otherwise, the playlist will end with the last song which points to *None*.

Implement a function *is_repeating_playlist* that, **efficiently **with respect to time used, returns true if a playlist is repeating or false if it is not.

For example, the following code prints "True" as both songs point to each other.

```
first = Song("Hello")
second = Song("Eye of the tiger")
first.next_song(second)
second.next_song(first)
print(first.is_repeating_playlist())
```

**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 *None*.

For example, *find_two_sum([3, 1, 5, 7, 5, 9], 10)* should return a single *tuple* 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

##### Premium Questions

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