A failed interview with Amazon

Hi, I am Maki, one of Özge’s cats. I am going to be the storyteller. Here, her very-first-and-embarrassing-at-the-same-time story in this blog. Hope it will be the last one:)

As far as I knew she wasn’t searching for a new job when she received a message from Amazon.es recruiter. It had been only one year and three months since we moved to this new country (Figure 1). Hence I wouldn’t expect her to say “yes” to an interview request that might end up with moving to a different country again. She did it though.

Figure 1: Haarlem, the Netherlands

She wasn’t ready I knew. But instead of taking a nap next to me when she had free time that remained from her little son, she decided to go with the flow. I heard she was saying “It’s time to blow the cobwebs away”.

First step: sending resume to recruiter’s email address

Even if they write to you to make an interview, they decide whether to proceed with the interview after they see your resume that is more detailed than your LinkedIn profile.

Second step: online coding assessment

They sent her a detailed email with a link to an online assessment system. She only had 90 minutes to finish the assessment after she started it. 75 min for two coding questions and 15 min to discuss in terms of complexity.

Online assessment system allows you to run your code with predefined test cases. You can not write your own tests or you can not see the tests’ inputs and expected outputs, of course. It’s expected from you to consider edge cases and optimal and alternative solutions.

Questions were like these as far as I remember:

1- Consider a string that is from a search box and a word list to be ignored. Find all the most recurring words in the sentence.

2- Write a function to find the number of scenes in a video. Every image in a video is represented by a char, and an array represents a video. For example:

Example 1:

Input: [‘a’, ‘c’, ‘g’, ‘a’, ‘c’, ‘d’, ‘e’, ‘j’, ‘f’, ‘e’, ‘d’, ‘j’, ‘f’, ‘h’, ‘i’, ‘h’, ‘k’, ‘i’ ]

Output: 3

Example 2:

Input: [‘a’, ‘j’, ‘d’]

Output: 3

She couldn’t manage her time, and wasted most of it on first question, but at least she filled discussion part for both questions.

She was so disappointed while filling my food bowl and she forgot to pet me after she finished the assessment. However she got a response real quick from recruiter just a day after it to proceed with the next step. That email also contained several questions like salary expectation, first three preferred location out of EMEA dev centers, would there be any barriers to you accepting etc.

Third Step: phone interview

Phone interview took 60 min. First part is about leadership principles and behavioral questions, second part was live coding while talking with your interviewer.

She was practicing Amazon’s leadership principles while preparing for the interview. I saw her writing to her notebook very harshly and murmuring while I was starving to death. Fortunately she also remembered her purpose of life and fed me.

As she also read what she wrote out loud, I could catch that she structured her stories in STAR (Situation, Task, Action, Result) form.

Part 1- Leadership principles and behavioral questions:

1- Tell me about a time when you inspire other team members.

2- Tell me about your role in the team.

3- What is the very first thing that you solved in your recent company.

First part passed smoothly.

Part 2: Coding

This was epic fail. I saw that she even forgot basic math. In 20 min she had to start with brute force approach and to find the optimal solution while discussing every step with her interviewer. It was very challenging for her since she always had her time to think about solutions in her own mind while she is all alone there.

Question was this:

Write a function that will take an integer called ‘target’ as the input and return the minimum number of steps that needs to be taken to reach that target from 1. In every step, allowed operations are: add 1, multiply by 2 or multiply by 3.

The day after, she got that negative email.

Lessons learnt

Learning from mistakes is an expensive process, especially when what needs to be done is obvious. On the other hand such experiences takes you out of your comfort zone and face you with how much you immerse yourself into your daily job. Beside that it can help you to show the path how you can become better you at your job.

What’s Next?

So after these lessons, she decided to revisit CS topics in daily bases and assigned me a continuous task to create stories out of that and publish them in this website. (I took these topics from Amazon‘s software development topics):

* Programming language: You have to know the internals of your preferred programming language like memory management, commonly used collections, libraries. It will save you a lot if you know all the Big O complexity of the operations over data structures implementation in your preferred language. It will help you a lot while analyzing your code. For Python: https://wiki.python.org/moin/TimeComplexity

* Data structures: Revisit the complex data structures and their implementation like trees or graphs.

* Algorithms: Knowing the common concepts will accelerate your coding skills. There is no need to reinvent the wheel every time.

* Coding: Practice with these web sites:

     https://leetcode.com/

    https://www.hackerrank.com/

     https://www.codingame.com/

* Operating systems:  memory management, processes, threads, synchronization, paging, and multi-threading

* Object-oriented design: It’s a good idea to revisit design patterns. Even if you may already be familiar with all these concepts from experience, having a comprehensive knowledge about that will help you to better defend your solutions and design. Thus Clean Code, Code Complete, Programmatic Programmer are the books needs to be read.

* General ML and AI

* Databases: Being familiar with the database alternatives and their use cases will help to better solve the system design questions. This wiki page may be good starting point: https://en.wikipedia.org/wiki/Database

* Distributed computing: service-oriented architectures, map-reduce, distributed caching, load balancing, and others. Wiki page can be a good starting point to create a roadmap: https://en.wikipedia.org/wiki/Distributed_computing

* Internet topics: General understanding how internet is working.

Useful resources:

https://github.com/kdn251/interviews

https://www.geeksforgeeks.org/