Last week, a reader contacted me to explain issues he was facing in his recent interview with Facebook. During the System Design challenge, he was asked to design a Mobile Application. Unlike the traditional System Design interview, this one focuses specifically on the architecture of the mobile application, and then moves into its many different details.

Since that reader has been part of a mobile application team, and his view point was rather limited, he did not have enough exposure to fully plan an application, and to help him prepare for such an interview. …

Find more useful articles at

The most prominent questions to last week’s article, “How I got into FAANG”, revolved around the Object Design interview. Namely, “what it is?”, “how to prepare for it?” as well as what the OOP interview at Amazon actually looks like.

Object Oriented Design

Object Oriented Programming is a programming paradigm based on the concept of objects, which can contain properties and functionality.

When designing the OOP way, we could define a class Human. With attributes such as height and hairColor and methods such as eat() and sleep().

Our desire could now be to extend the functionality of…

Find more useful articles at

Over the past months, many colleagues and friends have asked about my preparation, interviewing experience, and how my life has changed since I joined Amazon as a Software Development Engineer, working on the Alexa iOS application.

Although I don’t want to bore you with irrelevant anecdotes and stories, it’s still important for the bigger picture to understand who I am, my background, and how I ended up in the FAANG interview process.

Before code

Just like many reading this article, I don’t come from a traditional computer science educational background. …

Find more useful articles at

Push Notifications have always been a big subject. You can find countless threads on Stackoverflow, videos on YouTube, and even entire books on them.

To keep the scope of this article centric around a specific problem, we need to make assumptions. For the sake of this article, I will assume that you have a solid understanding of Swift, you understand the theory of how Push Notifications work, and how Firebase works in general.

Recently, my mentee was struggling with her application and the desire to set up remote notifications. Since her application uses Firebase…

Find more useful articles at

As some of my followers, and most of my friends know, I love poker. As an engineer, efficiency and automation are always at the forefront of my mind. Therefore, when playing online poker, I always ask myself: How could I make this more efficient?

Obviously, as a lover of the game, I know that cheating, and especially defrauding my opponents is highly unethical, and simply wrong. I would never use, nor would I provide a full tutorial on how to build one.

Yet whenever I played, this inner anxiousness coupled with curiosity continued to…

Find more useful articles at

LeetCode’s challenge of the day on June 15, 2020 (#700) asks us to search a Binary Search Tree and return the node where node.val equals the target value.

To understand why the search in a Binary Search Tree (BST) is so highly efficient, we first need to understand the characteristics of it. A BST consists of nodes that each contain either one, two, or zero children. A node that contains zero children is called a Leaf.

Each node’s left child’s value is smaller than the node’s value, and the right node’s value is larger…

Find more useful articles at

LeetCode’s challenge of the day on June 12, 2020 (#380) asks us to create an API wrapper around the standard Swift Set implementation. The only given requirement is that all operations must operate in constant time. We will use a Set as underlying data structure because there is no mentioning of duplication and all operations of a Set are constant by default.

insert(val) will forward to Set.insert and return a boolean indicating whether or not the given value has already been present in the underlying Set.

remove(val) will forward to Set.remove and return a…

Find more useful articles at

LeetCode’s challenge of the day on June 8, 2020 (#231) asks us to write a function that determines if the given Integer n is a power of two. In other words: If we multiply the number 2 any amount of times, will we end up with n?

This is a typical dynamic programming problem. We could solve it with recursion. Using a helper function, we would pass n and the current multiplication. …

Find more useful articles at

LeetCode’s challenge #102 asks us to traverse a Binary Search Tree in level order. Level order traversal is the key to solve a multitude of tech challenges and comes up in many different varieties within numerous questions on LeetCode.

The idea is: We enqueue the root of the tree into a queue. Within a while loop, we dequeue the root and enqueue each child while maintaining the current level.

Find more useful articles at

LeetCode’s challenge of June 4, 2020 (#344) asks us to reverse a String. This task can be achieved with 1 line of code, yet it’s worth exploring the different options. Interviewers will want you to show that you can explain different approaches.

Two Pointer Approach

Interviewers very often ask about two pointer approaches, and it’s very likely that you may be asked not to rely on built in functions, which make this solution viable.

David Seek

Software Engineer at Amazon (Alexa Mobile)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store