ErnieApp Back end Developer Python Django interview questions
based on 1 rating - Updated Apr 15, 2020
Difficultinterview difficulty
Very negativeinterview experience
How others got an interview
100%
Staffing Agency
Staffing Agency
Interview search
1 interviews
ErnieApp interviews FAQs
Candidates applying for Back end Developer Python Django roles take an average of 30 days to get hired, when considering 1 user submitted interviews for this role. To compare, the hiring process at ErnieApp overall takes an average of 16 days.
Common stages of the interview process at ErnieApp as a Back end Developer Python Django according to 1 Glassdoor interviews include:
I applied through a staffing agency. The process took 4 weeks. I interviewed at ErnieApp (Dublin, Dublin) in Mar 2020
Interview
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).
Interview questions [5]
Question 1
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?
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?