- Meest recent
- Oudste eerst
Sollicitatiegesprekken bij ErnieApp
Kandidaat voor anonieme sollicitatie in Dublin, Dublin
Ik heb via een uitzendbureau gesolliciteerd. De procedure duurde 4 weken. Ik heb gesolliciteerd bij ErnieApp (Dublin, Dublin) in mrt. 2020
Technical assessment and Zoom (40 min) video call. The coding task I'd say is fairly complicated and they will ask different questions about during the video call, as well as additional questions about general software engineering. The waiting time between the submission of the technical assesment and the video call to review it was more than 3 weeks (probably due to COVID-19).
- You should implement a simple REST API with Django REST Framework to synchronize remote mobile devices executing Tasks. In your model you should represent the concept of a Customer, where each customer has: - An email address - A password Each customer may posses zero or more Devices, where each device has: - A unique UUID For each customer there is a list of Tasks, where each Task has: - An ID (INTEGER) - A state (INTEGER) Devices can execute Tasks. Devices can only execute tasks belonging to their owner. When a device starts executing a task, it has 2 minutes to complete it. Tasks can be retried an arbitrarily large amount of times. Devices have a mobile connectivity and may go offline at any time (may not be able to call any REST API). The result of an execution of a Task by a Device can be: - Success (in that case the Task is completed) - Failure (the task should be re-executed) - Execution Time Exceeded (the device did not complete in 2 minutes and the task should be re-executed) The same Task can only be executed by one device at a time. One Device can execute at most one Task at a Time. Different Devices can execute different tasks concurrently. Coding Questions - Using Django Rest Framework, define the model that you suggest to use. Feel free to add new fields if you need it to correctly implement the synchronization algorithm - Define the set of possible states of a Task - Add an API method to let a Device retrieve the set of Tasks it may execute - Add an API method to let a Device notify the beginning of the execution of a Task - Add an API method to let a Device notify the result of an execution of a Task - How would you suggest to configure permissions for the previous model (coding is NOT required)?
- If you had to design from day zero, an horizontally scalable REST-API, which techniques would you suggest to use? How would you structure the architecture of the backend? How would you structure the DB?
- Which tools does django provide to support backend scaling?
- Django REST framework provides CSRF protection. When should it be used?
- Assume that as a result of a POSTed message you want to execute a long-running task (that normally lasts for 5 minutes). How would you implement this behavior?