Codility Instructions – Internships

Instructions

– Four exercises are available for a total time of 3 hours. The applicant is expected to complete at least 3 exercises of his choice. Obviously, if time allows, you are encouraged to complete all the exercises.

– Advanced exception/error handling is outside the scope of this test. Inputs range is specified in each exercise, it is unnecessary to handle any other cases.

– Favor C++ over any other language if C++ is part of your skills.

– Using available online resources (documentation, etc.) is encouraged but you may not get help from another person. This test is designed to evaluate your personal skills.

 

Evaluation factors

Correctness: Codility will evaluate your code according to several units tests. Consider all edge cases.
Speed: favor algorithm with the following complexity: O(1), O(log n), O(n) or O(n.log n). Avoid O(n2) or worse as much as possible.

– Readability: code organization, indentation, use of separate functions when appropriate, etc.

Comments: do not hesitate to comment your code, especially in the following situations: non-trivial operations (why did you write this code?), potential improvements which you couldn’t implement due to time constraints. You may also add comments in uncompleted exercises to explain how you would have approached them.

 

Recommendations

If necessary, favor quality over quantity. Before starting, you should read all four exercises and pick those that suit you best.

– Before you start the test, have an empty solution ready in order to debug issues hard to detect with naked eyes. Codility will not allow you to run step by step or place breakpoints into your code.

– You may use the Standard C++ (or C) Library but keep in mind that the point of this test is to demonstrate your programming skills. Figuring out the proper amount of handwritten code versus high-level functions is up to you. Commenting each use of a high-level function is highly recommended.

Reason: In a real world, cross-platform working environment, high-level functions are not always available or appropriate.

Note: using qsort (C) or std::sort (C++) is acceptable.

– Use the “Add test case” functionality at the bottom left of the test page. However, keep in mind that Codility will only verify the absence of run-time errors but will not check for correctness on your custom test cases.

– You may create new functions to improve readability or avoid code duplication.

– For those not familiar with the Codility environment, we suggest trying out the demo before starting the test.