Position they were looking for: The advertisement was for a Software Engineer with experience in Monolith to Microservices decomposition experience and knowledge of AWS and cloud services. No specific language was mentioned for the position. A recruiter contacted me via Linkedin.
Round 1: First round was a pair coding interview with one of their developers. I mentioned earlier that my preferred programming language for coding interview was Java. I was given a user management system project in Java. And screenshots of some Jira Issues which described some bugs in the project given to me. For example, One of the problem was,
I have deleted a user “Jessy” from the group. Now, when I am trying to add “Jessy” again to the group, it is complaining that user Jessy already exists. But, when I print all the users of that group, it doesn’t show that user.
Since it was pair programming it’s expected to discuss your thoughts regarding the issue and also proposing solution for the potential problem before jumping into coding.
Things to consider:
- Mention your programming language, your favorite IDE and your preferred OS.
- Don’t start programming immediately, discuss with your pair what your proposed solution is.
- The code structure is well defined. The class names were easy to read ie. Users, UsersService, Group, GroupService, UserRegistrationService etc. If you have any question regarding the code, which file or class should touch that particular parts of code ask your pair.
- My interviewer was TDD believer, so I started writing the test first and coding.
- Another very important thing there’s 99% chance that you will be given Mac for the interview. I am a Windows user and not used to with Mac style Keyboard or Mouse, I gave the coding interview remotely, so didn’t face any Mac issues. But, I have heard from people that, they faced a bad coding interview experience because they were given Mac with Windows Keyboard or something like that. (Which is not entirely a Windows style keyboard).
- There was no algorithm problem solving interview questions (ie. Sorting/Searching problem solving questions) . The whole coding interview was depending on a running existing project. I had to fix some bugs or add small features in that project.
- TALK, consider the interviewer is your colleague and you two are working in an issue.
Round was technical round. I had to describe one project that I had worked on in a white board with diagrams. A lot of questions were asked from the technical side of the project. Questions include Monolith part, microservice decomposition, deployment in production, update an existing deployment in production, docker, if something happens in production how is that handled, memory management, handling high volume of users, load balancing and clustering, AWS, different types of tests to guarantee code and performance, if an external service is not responding how is that handled,
Rather then describing what that concept, questions are asked more like how you involved in such a concept, what was your your role in solving that problem. My suggestion would be, clear general concepts first and try to link that from your personal work experience.
There a coding task in that interview too. As far as I remember it was to implement a sample Connection Pool.
- Try to tell a story.
- For example, if they ask
“if very high volume of users query your service and your service is not in sending a response, how would you figure the problem“
Rather then, just saying I would do this and that, try to relate it with your experience. I started with,
“I was writing JMeter scripts during load testing before a release. I was running 400 Threads concurrently and then found that after a certain period of time say 4 hours my service became very slow. I took a Thread dump and also took a screenshot of the Database connection monitor graph. Then, from the thread dump tried to investigate the stack traces and error logs to figure out the issues. The problem was fixed by increasing the connection pool size from 50 to 100.”
Round 3 was culture interview. They ask about different process you have followed before, ie Scrum or Kanban, whether you fit as a team member, whether you are pro active or not, if you have ever proposed something in your previous job that improved the process or the product, how you react with positive or negative feedback etc
- Again, Tell a Story. Try, to think about some examples from previous experience. For example, I was asked
“Did you ever helped any team member who didn’t actually ask for help“.
My answer was,
“A new developer joined my team and he was working in a bug fix task, he was stuck in that task for 3 days and didn’t approach for any help. I knocked him and asked if he needed any help or guideline and pair programmed with him for 30 minutes, which really helped him to progress quickly.”
- Read Atlassian core Values from their website and try to think of some example before going to the interview about your personal experience in those fields.