Provyn Prep · 9 min read
How to pass the Provyn DSA assessment
Sixty minutes, practical coding. The assessment focuses on recognising the right data structure for a constraint and on writing code that handles edge cases — not on exotic algorithms.
What you will be tested on
- Arrays and sliding window / two-pointer patterns
- Hash tables: collision handling, load factor, design
- Trees: BST properties, traversals, height-balanced properties
- Graphs: BFS vs DFS, cycle detection, topological sort
- Dynamic programming: overlapping subproblems, memoisation vs tabulation
- Time/space complexity: Big-O analysis, amortised complexity
What the assessment tests
The DSA assessment is not a LeetCode hard marathon. It tests whether you can recognise which data structure or algorithmic pattern fits a given constraint and implement a clean, correct solution in under 15 minutes per question.
The highest-weighted area is pattern recognition: two-pointer for sorted arrays, sliding window for substring/subarray problems, BFS for shortest-path problems, and dynamic programming for overlapping subproblems. Knowing the pattern is worth half the points — the implementation is the other half.
Array patterns: two-pointer and sliding window
Two-pointer works on sorted arrays where you need to find a pair satisfying a constraint. One pointer starts at the beginning, one at the end. If the current pair undershoots the target, advance the left pointer; if it overshoots, retreat the right pointer. O(n) versus O(n²) for the naive double loop.
Sliding window works on subarrays or substrings where you need the longest/shortest window satisfying a constraint. Expand the right boundary until the constraint is violated, then shrink the left boundary until it is restored. The trick is knowing what 'violated' means for your specific problem.
Hash tables: design and trade-offs
Hash tables provide O(1) amortised lookup, insert, and delete. The amortised part is important: when load factor exceeds the threshold (typically 0.75), the table resizes and rehashes all entries — O(n) for that operation. The assessment will ask about amortised complexity versus worst-case.
Collision resolution: chaining (linked list at each bucket) versus open addressing (probe for the next empty slot). Chaining degrades to O(n) in the worst case (all keys hash to the same bucket). Open addressing has cache-friendly access but is harder to implement correctly.
Dynamic programming
DP applies when: (1) the problem has overlapping subproblems, and (2) optimal substructure — the optimal solution to the problem contains optimal solutions to its subproblems. Without both, DP is the wrong tool.
Top-down (memoisation): recursive solution with a cache. Bottom-up (tabulation): iterative solution filling a table from the base case up. The assessment will ask you to convert a recursive solution to DP — start by writing the recursion, identify the parameters that change across calls, and that is your cache key.
Three-day prep plan
Day one: drill the four most common patterns back-to-back: two-sum (hash table), longest substring without repeating characters (sliding window), binary search on a sorted array (two-pointer), and number of islands (BFS/DFS).
Day two: implement a basic LRU cache (doubly linked list + hash map). This appears on almost every DSA assessment that includes 'design' questions.
Day three: write the time and space complexity for every solution you implemented. If you cannot state the complexity confidently, you will lose points on the short-answer questions that always ask for it.
Ready when you are
Take the Data Structures and Algorithms assessment
Sixty minutes. One credential. Free tier — no card required.
Last updated 2026-05-01.