How to Prepare for the Google APM Internship Technical Interview

Originally published 10th June 2022

The technical interview is an inevitable part of the Google APM program hiring process, with it taking place at some point during your on-site interview stage. This article will provide some insight into how I prepared for this portion of the process.

If you want to find more about my experience in the hiring process as a whole then please visit my other article How I landed the Google APM Internship.

From reading the briefing materials provided by Google and doing some online research into the interview, I decided to group my preparation into three main aspects:

  • Programming Fundamentals
  • System Design
  • Technology Fundamentals

I will delve into more detail around each of these below.


Programming Fundamentals

One of the APM program requirements is to have a background in Computer Science or a related area. Although the role doesn’t require you to code, it is possible that it could be asked of you in the interview. It is also very helpful to have a good knowledge of programming principles and to know how these are used in practice, as being a PM involves working with developers. Below are the three steps I took to improve my programming skills:

  1. Learn (or revise) basic data structures and algorithms
  2. Understand how to implement them in your strongest programming language
  3. Practice interview-style coding questions

Below are the main resources I used throughout this process:

  • Beginner Data Structures Explained Like You Are 5 — A great starting point video that simply explains some basic data structures.
  • Cracking The Coding Interview — The book for preparing for coding interviews, it includes comprehensive explainations of basic and advanced data structures and algorithms, as well as offering plenty of practice questions.
  • HackerRank YouTube Channel — This channel has great videos explaining many data structures and algorithms, and will usually show you how they are implemented in practice.
  • LeetCode — A great website that allows you to practice with over 2000 coding questions, ranging from Easy to Hard. This resource is helpful to train your brain to think more algorithmically.
  • NeetCode YouTube Channel — When I was stuck on a Leetcode question, this channel usually had an easy-to-follow tutorial with a few different approaches as to how to answer the question.

Remember — this is not a coding interview, but you could be required to design an algorithm or produce something in pseudocode, so putting in some programming practice is worthwhile in my opinion!

System Design

This topic requires that you understand the high-level architecture and components of systems, and how you would optimise the performance and efficiency of those systems. For example, you may be asked to map out how you would design the system architecture behind Instagram.

Some of the key elements I covered in my revision were:

  • APIs
  • Load Balancers
  • Caches
  • Database Management

My main resources for learning more about this topic were:

Once I had a fairly good understanding of the main components used to build systems and how they were scaled and made more efficient, I attempted to draw out designs for well-known technology products and then compare them to the actual architecture. Don’t worry if it doesn’t match the exact system design, what matters is that you have most of the main components and have considered important aspects such as scalability, data management, and security.

Technology Fundamentals

This area is a little bit more ambiguous, and what I found most difficult to prepare for. The premise of this area for me was to understand key processes within technology, that would show your passion and interest for tech. Some examples of these key processes could be:

  • How a search engine works — i.e. with the use of web crawlers
  • Internet protocols — how data is sent from one computer to the other via the internet
  • How you would explain Cloud Computing to a non-technical person

For this portion, I mostly watched a lot of YouTube videos and read a lot of articles on many different aspects of technology, and made sure to stay up to date with the latest industry trends.


Technical interviews often strike an intense fear into a lot of people. The pressure to perfectly and eloquently solve complex technical problems can be overwhelming. However, my perception is that the interviewer may not be looking for an exact ‘correct’ answer — just for you to be logical, intuitive, and able to communicate clearly. So some last tips to leave you with are:

  • Ask a lot of clarifying questions to understand the context of the problem, as well as the scope you are expected to cover.
  • Don’t be afraid to say you don’t know too much about a particular topic, but then ensure you proceed to fill in the gaps by asking questions and using logical assumptions.
  • Clear communication is even more important in a technical interview setting — don’t be set on using every complicated term or process you know to try and impress your interviewer. Being clear and concise will get you much further!

Good Luck!

Discover more from letters from nowhere

Subscribe now to keep reading and get access to the full archive.

Continue reading