Kraken · Software Engineer
Updated · 2026-10-02

Kraken Software Engineer
Interview Guide

THE 60-SECOND BRIEF

As a Software Engineer at Kraken, you are at the absolute center of the global green energy transition. Kraken (the technology platform powering Octopus Energy) is not a typical utility company; it is an operating system for the energy sector, managing millions of customer accounts globally. Your work directly impacts how energy grids operate, how renewable resources are integrated, and how consumers interact with their energy footprints. You will be building and scaling a highly sophisticated platform that processes massive volumes of real-time data, manages complex API integrations, and automates energy market communications. Whether you are optimizing backend pipelines for billing, building smart grid management systems, or parsing intricate energy market flow files, your code will solve real-world physical and environmental challenges.

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

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

Problem SolvingSystem DesignPython

24 min read

Browse Software Engineer questions

See the practice prompts

21Practice promptsAcross five skill areas

As a Software Engineer at Kraken, you are at the absolute center of the global green energy transition. Kraken (the technology platform powering Octopus Energy) is not a typical utility company; it is an operating system for the energy sector, managing millions of customer accounts globally. Your work directly impacts how energy grids operate, how renewable resources are integrated, and how consumers interact with their energy footprints. You will be building and scaling a highly sophisticated platform that processes massive volumes of real-time data, manages complex API integrations, and automates energy market communications. Whether you are optimizing backend pipelines for billing, building smart grid management systems, or parsing intricate energy market flow files, your code will solve real-world physical and environmental challenges. The engineering culture at Kraken is highly pragmatic, collaborative, and mission-driven. We value clean code, strong architectural principles, and the ability to navigate ambiguity over raw speed or dogmatic adherence to specific frameworks. It is a challenging but deeply rewarding environment where you can see the direct environmental and societal impact of your commits.

01

Recruiter Call

reported

Initial screening call with a recruiter to discuss your background and the role.

What to demonstrate

  • Initial screening call with a recruiter to discuss your background and the role
  • Depth in Problem Solving

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.
Kraken Software Engineer candidate reports ↗
02

Take-Home Coding Challenge

reported

Complete a coding challenge that reflects realistic work scenarios.

What to demonstrate

  • Complete a coding challenge that reflects realistic work scenarios
  • Depth in Problem Solving

How to prepare

  • Answer aloud and timed: Explain how Python's memory management works, specifically concerning garbage collection and reference counting.
  • Answer aloud and timed: How would you structure a custom Django management command to run as a scheduled background cron job?
Kraken Software Engineer candidate reports ↗
03

Technical Discussion

reported

Interactive discussion where you review your code with Kraken engineers.

What to demonstrate

  • Interactive discussion where you review your code with Kraken engineers
  • Depth in Problem Solving

How to prepare

  • Answer aloud and timed: How would you design a Python script to parse a large, malformed CSV or energy industry flow file efficiently?
  • Answer aloud and timed: How do you manage rate limits and error handling when orchestrating multiple third-party API calls?
Kraken Software Engineer candidate reports ↗
04

Team Fit Interview

reported

Final interview focusing on team compatibility and management fit.

What to demonstrate

  • Final interview focusing on team compatibility and management fit
  • Depth in Problem Solving

How to prepare

  • Prepare two projects you led end to end, each with the decision you owned and what it cost.
  • Have three questions about the team's roadmap and how success is measured in the first six months.
Kraken Software Engineer candidate reports ↗
05

Collaborative Design Session

reported

Optional session for specialized departments involving system design whiteboarding.

What to demonstrate

  • Optional session for specialized departments involving system design whiteboarding
  • Depth in Problem Solving

How to prepare

  • Answer aloud and timed: How would you design a scalable logging system to track real-time energy consumption across millions of smart meters?
  • Answer aloud and timed: Describe how you would approach scaling a system that experiences massive, unpredictable spikes in traffic (e.g., dynamic energy pricing events).
Kraken Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Document Everything in Your README

This is the single most important tip for the take-home challenge. Since the requirements are intentionally vague, use your README to explicitly state your assumptions, describe your architectural choices, and list what you would have built next if you had more time.

02

The take-home challenge instructions are purposefully ambiguous

Interviewers are actively looking to see how you define boundaries, make sensible assumptions, and communicate them clearly in writing.

03

Prioritize Test-Driven Development (TDD)

Do not treat testing as an afterthought. Kraken engineers place a massive premium on robust, clean testing. Ensure your take-home code includes well-structured unit tests that cover both happy paths and edge cases.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

16 technical prompts0 include a worked solution

Explain how Python's memory management works, specifically concerning garbage collection and reference countin

medium
Python & Django Backend Core

Explain how Python's memory management works, specifically concerning garbage collection and reference counting.

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?

Canonicalise a request body into a stable idempotency fingerprint

medium
parsingcanonicalisationhashing

idempotency_key.request_fingerprint is a SHA-256 over the method, path and canonicalised body, and a retry whose fingerprint differs must be rejected with 422 rather than served the stored response. Write the canonicaliser. Bodies are JSON up to 256 KB nested at most 32 levels; clients vary key order, whitespace and unicode escaping, and some send 64-bit ids as JSON numbers. Produce a deterministic byte string such that semantically identical bodies match and any semantic difference does not. State your complexity and name two normalisations you refuse to perform.

Approach
  1. Parse once into a tree, then re-serialise under fixed rules: object keys sorted, array order preserved, one escaping convention, no insignificant whitespace. Parsing is O(n) and sorting keys is O(k log k) per object, so O(n log n) overall with O(depth) stack, and the 32-level cap is enforced during parsing because hostile nesting is how a canonicaliser becomes a stack overflow.
  2. Sort keys by their UTF-8 bytes and say why the obvious implementation is wrong in some runtimes: a default string comparison that orders by UTF-16 code units places surrogate pairs, meaning code points from U+10000 up, below U+E000 to U+FFFF, which is not UTF-8 byte order, so two services written in different languages disagree on the same document.
  3. Do not re-encode numbers through a double. IEEE-754 binary64 represents integers exactly only up to 2^53, so normalising a 19-digit id through a float changes it, and 1 against 1.0 cannot be reconciled without deciding whether they are the same value. Preserve the literal token, and require ids as strings at the API boundary if you want them comparable.
  4. Reject duplicate keys rather than picking one. JSON permits them and parsers disagree, most keeping the last, so any choice you make ties the fingerprint to a parser detail that the code handling the request does not necessarily share.
Follow-up
  • A client sends the same logical request with an extra field your API ignores. Same key, different fingerprint, so you return 422. Is that the right answer?
  • Where does the fingerprint get computed relative to request decompression and the body-size limit?

Merge partitioned event streams into one ordered feed with bounded lateness

hard
k-way mergewatermarksout-of-order streams

The read-model service consumes 64 log partitions carrying about 4,000 events per second in total. Each partition is ordered within itself, but partitions drift by up to 30 seconds, and the activity feed must present a tenant's events in occurred_at order. Produce the merge. State its complexity, the buffer it requires in events and in bytes, what happens when one partition is idle, and what you do with an event that arrives after you have already emitted its position. Payloads average 1 KB.

Approach
  1. Merge with a min-heap over the 64 partition heads keyed on (occurred_at, event_id): O(log P) per event and O(n log P) overall. The tie-break on event_id is what makes the output deterministic when two partitions carry the same millisecond, which matters because the feed is paginated and a non-deterministic order reorders pages under the reader.
  2. Emitting the heap head is only correct once every partition has produced everything up to that timestamp, so the emit condition is a watermark: the minimum across partitions of the highest occurred_at seen, less the allowed lateness. Events are held until the watermark passes them, which is what turns individually ordered streams into a jointly ordered one.
  3. Size the buffer from the lateness rather than guessing: 4,000 events per second times 30 seconds is 120,000 buffered events, and at 1 KB each about 120 MB of heap. That number is the real price of the ordering guarantee and belongs in front of whoever asked for it.
  4. Handle the idle partition explicitly, because it fails the feed rather than corrupting it: a partition with no traffic never advances its own maximum, so the watermark freezes and output stops entirely. Either every partition emits a periodic idle marker carrying the broker's current time, or the watermark falls back to wall clock for a partition silent beyond a threshold.
Follow-up
  • The lateness budget is raised to five minutes. What is the new buffer, and what besides memory changes?
  • The consumer restarts. Where does it resume from, and what does the feed look like for the first 30 seconds?

Built from the rounds and topics Kraken candidates report.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Map the Kraken loop
  • Write out the reported sequence: Recruiter Call, Take-Home Coding Challenge, Technical Discussion, Team Fit Interview, Collaborative Design Session.
  • 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 5 reported rounds, with the weakest marked.

02Work Problem Solving
  • Spend the session on Problem Solving, which Kraken candidates report being tested on.
  • Write one worked example in Problem Solving and time yourself on it.

Deliverable: One timed worked example in Problem Solving.

03Work System Design
  • Spend the session on System Design, which Kraken candidates report being tested on.
  • Write one worked example in System Design and time yourself on it.

Deliverable: One timed worked example in System Design.

04Work Python
  • Spend the session on Python, which Kraken candidates report being tested on.
  • Write one worked example in Python and time yourself on it.

Deliverable: One timed worked example in Python.

05Answer out loud: Python & Django Backend Core
  • Answer aloud, timed: What are the performance implications of Django's ORM `select_related` vs. `prefetch_related`?
  • Answer aloud, timed: How do you handle migrations in a large-scale Django application with zero-downtime requirements?

Deliverable: Spoken answers to 2 reported Python & Django Backend Core question(s), under time.

06Answer out loud: Data Processing & API Management
  • Answer aloud, timed: How would you design a Python script to parse a large, malformed CSV or energy industry flow file efficiently?
  • Answer aloud, timed: How do you manage rate limits and error handling when orchestrating multiple third-party API calls?

Deliverable: Spoken answers to 2 reported Data Processing & API Management question(s), under time.

07Answer out loud: System Design & Architecture
  • Answer aloud, timed: How would you design a scalable logging system to track real-time energy consumption across millions of smart meters?
  • Answer aloud, timed: Describe how you would approach scaling a system that experiences massive, unpredictable spikes in traffic (e.g., dynamic energy pricing events).

Deliverable: Spoken answers to 2 reported System Design & Architecture question(s), under time.

Expand any day for tasks and deliverables. Your progress is saved on this device.

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

How do you handle migrations in a large-scale Django application with zero-downtime requirements?

medium
Python & Django Backend Core

How do you handle migrations in a large-scale Django application with zero-downtime requirements?

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?

Why do you want to work at Kraken, and what does our mission of a green energy transition mean to you?

medium
Behavioral & Team Alignment

Why do you want to work at Kraken, and what does our mission of a green energy transition mean to you?

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 time you had to work with highly ambiguous or incomplete requirements. How did you proceed?

medium
Behavioral & Team Alignment

Describe a time you had to work with highly ambiguous or incomplete requirements. How did you proceed?

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 receiving critical feedback on your code or architectural decisions from team members?

medium
Behavioral & Team Alignment

How do you handle receiving critical feedback on your code or architectural decisions from team members?

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 had to coordinate with cross-functional teams to deliver a highly complex backend fea

medium
Behavioral & Team Alignment

Tell me about a time you had to coordinate with cross-functional teams to deliver a highly complex backend feature.

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?
  • 01

    How do you handle migrations in a large-scale Django application with zero-downtime requirements?

  • 02

    Why do you want to work at Kraken, and what does our mission of a green energy transition mean to you?

  • 03

    Describe a time you had to work with highly ambiguous or incomplete requirements. How did you proceed?

  • 04

    How do you handle receiving critical feedback on your code or architectural decisions from team members?

PracHub preparation framework ↗
How difficult is the Kraken interview process, and how much prep time is needed?

The process is widely regarded as average to difficult, but highly practical. Instead of cramming complex Leetcode algorithms, you should spend 10 to 15 hours reviewing Django best practices, TDD patterns, and clean code architecture to prepare for the take-home challenge.

Kraken Software Engineer candidate reports ↗
What is the expectation for the 3-4 hour take-home challenge?

While we suggest spending 3 to 4 hours on the task, we value quality over speed. It is highly recommended to take a bit of extra time to write a comprehensive README, document your assumptions, and add robust unit tests, as this is often what sets successful candidates apart.

Kraken Software Engineer candidate reports ↗
How quickly does Kraken make a hiring decision?

Kraken is known for a relatively fast and efficient process. Many candidates receive feedback within a few days of each stage, and final offers are often extended within 24 to 48 hours after the final round.

Kraken Software Engineer candidate reports ↗
Does Kraken offer remote or hybrid working arrangements?

Yes, Kraken supports flexible working models, including hybrid and fully remote setups depending on the team, role level, and geographic location. These details are typically discussed and aligned during your initial recruiter call.

Kraken Software Engineer candidate reports ↗
What topics does Kraken test in interviews?

Kraken interviews most often cover Python, Time Management, SQL, Django, and Case Study Analysis. The exact emphasis depends on the specific role you apply for.

Kraken Software Engineer candidate reports ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.