Skip to content

Latest commit

 

History

History
22 lines (14 loc) · 2.05 KB

software-engineering.md

File metadata and controls

22 lines (14 loc) · 2.05 KB

GoodNotes - Example of Technical Challenge

===

This is an introductory coding challenge to evaluate candidates interested in joining the team at GoodNotes. It is meant to be fun and short (<4 hrs typically) and introduce some of the engineering challenges at GoodNotes. This challenge has now been replaced with a short Hackerrank test, but we keep it here to give you and idea of some of the problems we like to solve and a core element of our technology.

Introduction

Conflict Free Replicated Data Types (CRDTs) are data structures that power real time collaborative applications in distributed systems. CRDTs can be replicated across systems, they can be updated independently and concurrently without coordination between the replicas, and it is always mathematically possible to resolve inconsistencies which might result.

Recommended Reading

Deliverable

Study LWW-Element-Set and implement a state-based LWW-Element-Dictionary with test cases.

Similar to LWW-Element-Set, the dictionary variant you are going to implement will store a timestamp for each key-value pair. In addition to the lookup, add and remove operations, the dictionary variant will also allow updating the value of a key. There should be a function to merge two dictionaries. Test cases should be clearly written and document what aspect of CRDT they test. We recommend you to spend no more than 4 hours on this challenge. The provided readings should be sufficient to understand LWW-Element-Set and CRDT on a high level. You are welcome to dig deeper on those but we expect you to come up with the implementation yourself without any help from other open sourced implementations.

Grading & Submission

You'll be graded based on code quality and test coverage, and you can use any language of choice.