cswork / libraryOpen practice workspace

Interview guides · Akamai

Akamai Software Engineer Interview Guide

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

The 60-second brief

As a Software Engineer at Akamai, you will work at the core of the global internet infrastructure. Akamai operates one of the world's largest distributed computing platforms, delivering and securing digital experiences for billions of users worldwide. In this role, you will design, build, and optimize high-performance, fault-tolerant software systems that handle massive traffic volumes, defend against complex cybersecurity threats, and accelerate content delivery from edge to cloud. Engineers at Akamai operate across various domain teams, including Edge Computing, Cybersecurity (such as Bot Manager and Microsegmentation), Cloud Infrastructure, and Core Network Protocols.

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

Focus areas

  • Data Structures & Algorithms (DSA)
  • Coding Interviews
  • Computer Networks (CN)

The Akamai interview process

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

Recruiter Screening

Initial discussion to align on your background and interests.

What to demonstrate

  • Initial discussion to align on your background and interests
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.

Technical Phone Screen

Involves coding problems or domain-specific questions, depending on seniority.

What to demonstrate

  • Involves coding problems or domain-specific questions, depending on seniority
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.

Onsite Interviews

Loop of 3 to 5 separate interviews focusing on coding, system design, and behavioral aspects.

What to demonstrate

  • Loop of 3 to 5 separate interviews focusing on coding, system design, and behavioral aspects
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: Walk through the OSI model, focusing on Layer 4 (Transport) and Layer 7 (Application) responsibilities.
  • Answer aloud and timed: Given an array of strings, write an algorithm to group all anagrams together.

Final Assessment

Deeper dive into architecture and past project experiences for senior roles.

What to demonstrate

  • Deeper dive into architecture and past project experiences for senior roles
  • Depth in Data Structures & Algorithms (DSA)

How to prepare

  • Answer aloud and timed: Find the KthK^{\text{th}} largest element in an unsorted array efficiently.
  • Answer aloud and timed: Write a function to detect the intersection point of two single-linked lists.

Where candidates lose points

Master Network Foundations End-to-End

Do not limit your review to surface-level definitions. Understand how packets flow, how DNS resolves queries step-by-step, and how SSL/TLS encryption handshakes establish secure sessions.

Practice Explaining Your Resume Projects

Prepare detailed walk-throughs of the projects listed on your resume. Be ready to discuss system architecture, personal contributions, trade-offs, and how you measured success.

Communicate Proactively During Coding Rounds

Talk through your logic as you write code. Verbalizing your initial assumptions, edge case checks, and complexity trade-offs helps interviewers understand your problem-solving style.

Brush Up on Linux Command-Line Utilities

Familiarize yourself with command-line tools for processing files and inspecting system status (grep, awk, sed, find, dig, curl, netstat).

Questions & practice

What is the difference between recursive and iterative DNS queries, and how does DNS caching work at scale?

Medium · Networking & Internet Protocols

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 an array of strings, write an algorithm to group all anagrams together.

Medium · Data Structures & 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?

Find the KthK^{\text{th}} largest element in an unsorted array efficiently.

Medium · Data Structures & 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 function to detect the intersection point of two single-linked lists.

Medium · Data Structures & 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 an array of integers, output the elements as continuous ranges (e.g., transform `[-6, -5, -4, 0, 1, 2, 5

Medium · Data Structures & Algorithms

Given an array of integers, output the elements as continuous ranges (e.g., transform [-6, -5, -4, 0, 1, 2, 5] into "-6 to -4, 0 to 2, 5").

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 custom HashMap from scratch, explaining how you handle collisions and dynamic resizing.

Medium · Data Structures & 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?

How do smart pointers (std::unique_ptr, std::shared_ptr, std::weak_ptr) manage memory in modern C++?

Medium · Systems Programming, Linux & Core CS

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

How do you validate whether an input string is a valid IPv4 or IPv6 address?

Medium · Systems Programming, Linux & Core CS

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Explain the concept of process multithreading, memory sharing, and how to prevent race conditions.

Medium · Systems Programming, Linux & Core CS

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

How do you use Linux command-line utilities to parse large log files and extract unique IP addresses?

Medium · Systems Programming, Linux & Core CS

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Explain the core operational differences between containers (Docker) and virtual machines.

Medium · Systems Programming, Linux & Core CS

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Write an SQL query to find duplicate records across a database table and clean them safely.

Medium · Databases & SQL

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 indexing strategies in relational databases and how improper indexing affects query execution plans.

Medium · Databases & SQL

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 in detail what happens from the moment you type a URL into a browser until the page finishes rendering

Medium · Networking & Internet Protocols

Explain in detail what happens from the moment you type a URL into a browser until the page finishes rendering.

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?

Describe the TCP three-way handshake and contrast TCP with UDP in terms of reliability and overhead.

Medium · Networking & Internet Protocols

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 does the SSL/TLS handshake process establish a secure connection?

Medium · Networking & Internet Protocols

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?

Walk through the OSI model, focusing on Layer 4 (Transport) and Layer 7 (Application) responsibilities.

Medium · Networking & Internet Protocols

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 database transactions ensure ACID properties, and what are common isolation levels?

Medium · Databases & SQL

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?

Describe a complex technical project you led, detailing your architectural choices and tradeoffs.

Medium · Behavioral & Situational

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

How do you approach debugging an intermittent production issue when logs are limited?

Medium · Behavioral & Situational

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 Akamai candidates report.

Day 1 — Map the Akamai loop

  • Write out the reported sequence: Recruiter Screening, Technical Phone Screen, Onsite Interviews, Final Assessment.
  • 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 4 reported rounds, with the weakest marked.

Day 2 — Work Data Structures & Algorithms (DSA)

  • Spend the session on Data Structures & Algorithms (DSA), which Akamai candidates report being tested on.
  • Write one worked example in Data Structures & Algorithms (DSA) and time yourself on it.

Deliverable: One timed worked example in Data Structures & Algorithms (DSA).

Day 3 — Work Coding Interviews

  • Spend the session on Coding Interviews, which Akamai candidates report being tested on.
  • Write one worked example in Coding Interviews and time yourself on it.

Deliverable: One timed worked example in Coding Interviews.

Day 4 — Work Computer Networks (CN)

  • Spend the session on Computer Networks (CN), which Akamai candidates report being tested on.
  • Write one worked example in Computer Networks (CN) and time yourself on it.

Deliverable: One timed worked example in Computer Networks (CN).

Day 5 — Answer out loud: Networking & Internet Protocols

  • Answer aloud, timed: Explain in detail what happens from the moment you type a URL into a browser until the page finishes rendering.
  • Answer aloud, timed: Describe the TCP three-way handshake and contrast TCP with UDP in terms of reliability and overhead.

Deliverable: Spoken answers to 2 reported Networking & Internet Protocols question(s), under time.

Day 6 — Answer out loud: Data Structures & Algorithms

  • Answer aloud, timed: Given an array of strings, write an algorithm to group all anagrams together.
  • Answer aloud, timed: Find the KthK^{\text{th}} largest element in an unsorted array efficiently.

Deliverable: Spoken answers to 2 reported Data Structures & Algorithms question(s), under time.

Day 7 — Answer out loud: Systems Programming, Linux & Core CS

  • Answer aloud, timed: How do smart pointers (std::unique_ptr, std::shared_ptr, std::weak_ptr) manage memory in modern C++?
  • Answer aloud, timed: How do you validate whether an input string is a valid IPv4 or IPv6 address?

Deliverable: Spoken answers to 2 reported Systems Programming, Linux & Core CS question(s), under time.

Behavioural preparation

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

Tell me about a time you had a technical disagreement with a team member and how you reached a resolution.

Medium · Behavioral & Situational

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?

Turn a code review disagreement into a decision

Easy · code review · optimistic concurrency · communication

A colleague's change updates a row with UPDATE resource SET version = version + 1 WHERE resource_id = 1ANDversion=1 AND version = 2 and treats an affected-row count of zero as a successful no-op. You read that as a silently lost update; they think returning 200 is friendlier to clients than returning a conflict. Describe how you have handled a review disagreement of this shape: what goes in the comment, when you leave the thread, and who decides. Then write the comment you would leave here, in under 80 words.

Approach

  1. Sort the disagreement before writing anything. A silently discarded write is a correctness claim about data; the choice between 409 and 412 is taste. Only the first justifies blocking a merge, and saying which one you are doing is most of the value of the comment.
  2. Make the claim reproducible in the comment itself with an interleaving rather than a principle: A reads version 7, B reads version 7, B commits version 8, A's predicate matches zero rows, A is told it succeeded and A's edit is gone.
  3. Offer the alternative with its cost attached: return 409 carrying the current version and the revision that won, so the client can re-read and re-apply. Note that automatic retry is not the fix, because a retry re-reads the winner's state and reapplies an intent formed against data that no longer exists.
  4. Apply an escalation rule you can state: two round trips on the thread, then a call, and the service's owner decides rather than the reviewer. A reviewer who cannot be overruled is a bottleneck with extra steps.

Follow-up

  • Where would you put the test that fails if someone reintroduces the swallowed zero rowcount?
  • The author says clients cannot handle a 409. How do you check whether that is true?

Reverse your own decision and price the reversal

Medium · reversibility · measurement · migrations

Describe a technical decision you made and later reversed. Pick one that cost something: a service you split and merged back, a cache you added and removed, an index you created that pushed the planner onto a worse plan, a projection you rebuilt from scratch. State what you believed when you decided, the measurement that changed your mind, how long the wrong version ran in production, and what the reversal cost in migrations, dual writes, and a deprecation window for callers you did not own.

Approach

  1. State the original rationale without irony, in the version you would still defend given what was known then. If it is not defensible, the story is about carelessness rather than judgement, and a different example serves you better.
  2. Give the measurement that moved with a before and after: the p99 that did not improve, the cache hit rate that sat at 40%, the plan that flipped to a sequential scan once the table passed a size you can name.
  3. Cost the reversal in steps, not adjectives: expand-and-contract deploys, the dual-write window, the callers who had to be notified, the rows already written in the wrong shape that had to be backfilled or abandoned.
  4. Distinguish reversal from rewrite by naming what you kept. Most good reversals preserve the schema or the interface and undo one decision inside it, which is also why they were affordable.

Follow-up

  • What in that decision was irreversible, and did you know it was irreversible when you made it?
  • How did you tell the people who had already built on top of the original decision?