EMPG Engineering Interview Preparation Guide
Here are some pointers for potential applicants to best prepare for the EMPG tech interview for teams working on internal apps for Zameen and other businesses. If you haven’t applied yet, then you may do so here for positions in Pakistan.
Our interview process is the same whether you have zero years of experience or 20 years of experience. The degree of difficulty and level of skills are expected to be better for the experienced candidates.
Screening
For screening, we use HackerRank or a similar platform. Here are some quick tips to clear this phase.
- Practice, practice, practice. If you can solve medium level problems on HackerRank, then you should clear our screening.
- The primary objective is to solve a problem(s) efficiently. It need not be the most efficient solution. However, where an O(n log n) solution is possible with a bit of thinking, don’t settle on O(n2).
- The secondary objective is code readability and maintainability. Once you have solved a problem, take some time to clean it up and make it concise.
Our recommendation is to use the same language at the screening that you intend to use in the main interview later. Use the language that you have the best mastery of. Be aware of general good practices associated with your favorite programming language.
Assignment
Based on screening result, some applicant may get an assignment e.g. create a simple SPA consuming some public API.
Main Interview
Our colleagues in SectorLabs will conduct the main technical interview. It has three parts.
Tip: while sharing your contribution to the projects you have worked on, use the word “I” not “We” :).
Problem Solving
First, there will be a live coding session to solve a problem on your local IDE with screen sharing. Try thinking out loud to engage the interviewers, and explain your thought process and reasoning.
If you can think of multiple solutions, talk about them before jumping in. Work your way up from trivial to an optimal solution, and don’t forget to address time and space complexities at each level.
For more help, see: https://yangshun.github.io/tech-interview-handbook/cheatsheet/
Code Review
You’ll be given a piece of code to review. You may not clear this phase if you have an ad hoc approach to code reviews.
See these links for a few pointers:
- https://www.michaelagreiler.com/code-review-checklist-2/
- https://google.github.io/eng-practices/review/reviewer/looking-for.html
- https://curtiseinsmann.medium.com/ive-code-reviewed-over-750-pull-requests-at-amazon-here-s-my-exact-thought-process-cec7c942a3a4
System Design
You are being interviewed for a team working on multi-tenant database-driven business apps that can potentially have a few thousand concurrent users. Your system-design skills should be reasonable for such a level of scale.
You should be able to work through a system design problem progressively as more constraints are being added. You’ll be required to talk about design tradeoffs and the pros and cons of different approaches to a specific design problem.
Following is a bit advanced stuff. So if you are applying for senior roles, you may want to skim through this:
- System Design Interview Questions — Concepts You Should Know
- The System Design Primer
- System Design Preparation just a couple of things from the first 4 points in “Starting Point”
- The Architecture of Open Source Applications (Check Chapter 1 Vol II, if you have time for just one chapter)
More goodies:
Following are some curated lists aimed at making everyone a better engineer.
- https://github.com/ESSS/awesome-dev-articles
- https://www.freecodecamp.org/news/resources-for-software-developers-who-are-obsessed-with-learning-94dd26ed5dbd/
- https://www.europeclouds.com/blog/awesome-software-design-patterns
- https://github.com/shashank88/system_design/blob/master/README.md
A good list of commonly used software design patterns are:
Acknowledgements:
A few colleagues directly or indirectly helped me in preparing this guide: including Shahid Ali Khan, Lucian Dragomir, and Ahmad Luqman.
Bonus:
If you are a fresh graduate and looking for ideas to make your resume noticed then check this out: https://asim-ghaffar.medium.com/cs-freshie-have-this-in-your-resume-39532b2fd934