cswork / libraryOpen practice workspace

Interview guides · Safaricom

Safaricom Software Engineer Interview Guide

Safaricom Software Engineer interview guide: reported rounds, questions and how candidates describe the process.

The 60-second brief

As a Software Engineer at Safaricom, you are at the heart of East Africa’s most transformative technology ecosystem. You are not just writing code; you are building the digital infrastructure that powers M-PESA, connects millions to the internet, and enables the next generation of financial and telecommunications services. This role is critical because your work directly influences the daily lives of millions, requiring a unique blend of technical precision, massive-scale thinking, and a deep understanding of the local and regional market. You will operate in a complex, high-stakes environment where reliability and performance are non-negotiable.

This guide is scoped to a Software Engineer candidate at Safaricom.

Focus areas

  • Telecommunications fundamentals
  • GSM (Global System for Mobile Communications)
  • Networking fundamentals

The Safaricom interview process

Safaricom candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.

Online Assessment

Candidates complete an online assessment on platforms like Codility to evaluate coding skills and algorithmic proficiency.

What to demonstrate

  • Candidates complete an online assessment on platforms like Codility to evaluate coding skills and algorithmic proficiency
  • Depth in Telecommunications fundamentals

How to prepare

  • Answer aloud and timed: Explain the difference between TCP and UDP and provide a use case for each in a telecommunications context.
  • Answer aloud and timed: How would you implement and manage an infinite scroll feature in a web application, including performance optimization and loading states?

Virtual Panel Interviews

Candidates participate in a series of virtual panel interviews with senior developers, line managers, and HR representatives.

What to demonstrate

  • Candidates participate in a series of virtual panel interviews with senior developers, line managers, and HR representatives
  • Depth in Telecommunications fundamentals

How to prepare

  • Answer aloud and timed: What are the key differences between SQL and NoSQL databases, and how do you decide which to use for a high-transaction system?
  • Answer aloud and timed: Explain the OSI model and how you would troubleshoot a connectivity issue at the application layer.

Background Checks

The company conducts thorough background checks for candidates who successfully pass the interviews.

What to demonstrate

  • The company conducts thorough background checks for candidates who successfully pass the interviews
  • Depth in Telecommunications fundamentals

How to prepare

  • Answer aloud and timed: How do you handle data fetching, pagination, and caching when consuming a GraphQL endpoint?
  • Answer aloud and timed: Solve a problem involving Data Structures (e.g., Arrays, Linked Lists, or Trees).

Where candidates lose points

Practice with a timer

Since many assessments are timed, practice solving coding problems in a constrained environment to build speed and accuracy.

Know the company

Research Safaricom products like M-PESA and understand the scale at which they operate. Being able to relate your technical experience to the company's business model is a major advantage.

Be ready for 'whiteboard' scenarios

Even in virtual interviews, you may be asked to explain your design on a virtual whiteboard. Practice drawing diagrams and explaining your thought process clearly.

Review your resume

Be prepared to talk in detail about every project you have listed. Interviewers will ask for specifics about your role and the technical challenges you faced.

Questions & practice

Solve a problem involving Data Structures (e.g., Arrays, Linked Lists, or Trees).

Medium · Coding and Algorithms

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Implement a function to perform a specific data transformation or search algorithm.

Medium · Coding and Algorithms

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Write a snippet of code to demonstrate your proficiency in your primary language (e.g., Java, React, or Python

Medium · Coding and Algorithms

Write a snippet of code to demonstrate your proficiency in your primary language (e.g., Java, React, or Python).

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

How would you optimize an existing algorithm that is currently performing poorly under high load?

Medium · Coding and Algorithms

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Given a specific wireframe, how would you implement the frontend logic using React or a similar framework?

Medium · Coding and Algorithms

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

What are the key differences between SQL and NoSQL databases, and how do you decide which to use for a high-tr

Medium · Technical and Domain Knowledge

What are the key differences between SQL and NoSQL databases, and how do you decide which to use for a high-transaction system?

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Why do you want to join Safaricom, and how do your values align with our mission?

Medium · Behavioral and Culture Fit

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Explain the difference between TCP and UDP and provide a use case for each in a telecommunications context.

Medium · Technical and Domain Knowledge

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

How would you implement and manage an infinite scroll feature in a web application, including performance opti

Medium · Technical and Domain Knowledge

How would you implement and manage an infinite scroll feature in a web application, including performance optimization and loading states?

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

How do you handle data fetching, pagination, and caching when consuming a GraphQL endpoint?

Medium · Technical and Domain Knowledge

Approach

  1. Say who the caller is and what they do when the call fails halfway.
  2. Define the identity of a request so a retry cannot double-apply it.
  3. Separate accepted, pending, failed and confirmed; they are different facts.
  4. Design the error taxonomy before the success shape; callers branch on it.

Follow-up

  • What happens if the caller retries after a timeout?
  • How does a client discover it is on an old version of this contract?

Explain the OSI model and how you would troubleshoot a connectivity issue at the application layer.

Medium · Technical and Domain Knowledge

Approach

  1. Establish what changed and when, before forming any theory.
  2. Pick a bisection that eliminates candidates whichever way it turns out.
  3. Check the instrumentation before believing the symptom.
  4. Separate the trigger from the cause; the deploy is rarely the bug.

Follow-up

  • What would you look at first, and what would it rule out?
  • How would you tell a cause from a coincidence here?

Suggested practice checklist

Built from the rounds and topics Safaricom candidates report.

Day 1 — Map the Safaricom loop

  • Write out the reported sequence: Online Assessment, Virtual Panel Interviews, Background Checks.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

Deliverable: A one-page map of the 3 reported rounds, with the weakest marked.

Day 2 — Work Telecommunications fundamentals

  • Spend the session on Telecommunications fundamentals, which Safaricom candidates report being tested on.
  • Write one worked example in Telecommunications fundamentals and time yourself on it.

Deliverable: One timed worked example in Telecommunications fundamentals.

Day 3 — Work GSM (Global System for Mobile Communications)

  • Spend the session on GSM (Global System for Mobile Communications), which Safaricom candidates report being tested on.
  • Write one worked example in GSM (Global System for Mobile Communications) and time yourself on it.

Deliverable: One timed worked example in GSM (Global System for Mobile Communications).

Day 4 — Work Networking fundamentals

  • Spend the session on Networking fundamentals, which Safaricom candidates report being tested on.
  • Write one worked example in Networking fundamentals and time yourself on it.

Deliverable: One timed worked example in Networking fundamentals.

Day 5 — Answer out loud: Technical and Domain Knowledge

  • Answer aloud, timed: Explain the difference between TCP and UDP and provide a use case for each in a telecommunications context.
  • Answer aloud, timed: How would you implement and manage an infinite scroll feature in a web application, including performance optimization and loading states?

Deliverable: Spoken answers to 2 reported Technical and Domain Knowledge question(s), under time.

Day 6 — Answer out loud: Coding and Algorithms

  • Answer aloud, timed: Solve a problem involving Data Structures (e.g., Arrays, Linked Lists, or Trees).
  • Answer aloud, timed: Implement a function to perform a specific data transformation or search algorithm.

Deliverable: Spoken answers to 2 reported Coding and Algorithms question(s), under time.

Day 7 — Answer out loud: Behavioral and Culture Fit

  • Answer aloud, timed: Tell me about a time you had to explain a complex technical problem to a non-technical stakeholder.
  • Answer aloud, timed: Describe a situation where you had to work under pressure to meet a tight deadline.

Deliverable: Spoken answers to 2 reported Behavioral and Culture Fit question(s), under time.

Behavioural preparation

Behavioural rounds judge the decision you made and what it cost.

Tell me about a time you had to explain a complex technical problem to a non-technical stakeholder.

Medium · Behavioral and Culture Fit

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Describe a situation where you had to work under pressure to meet a tight deadline.

Medium · Behavioral and Culture Fit

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

How do you handle disagreements with team members regarding technical architecture or code implementation?

Medium · Behavioral and Culture Fit

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Tell me about a time you failed in a project. What did you learn, and how did you apply that lesson later?

Medium · Behavioral and Culture Fit

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?