A Software Engineer at Mirantis works at the absolute core of cloud-native infrastructure. Mirantis is dedicated to freeing developers from infrastructure complexity by delivering secure, open-source-based cloud platforms like Kubernetes, OpenStack, and Lens. As an engineer here, you are not just building typical web applications; you are writing the low-level systems, orchestration layers, and networking pipelines that power massive enterprise clouds globally. Your work directly impacts how thousands of organizations scale their operations, manage multi-cloud environments, and deploy artificial intelligence workloads. Whether you are optimizing container runtimes, diving deep into operating system kernels, or refining software-defined storage solutions like Ceph, your contributions ensure high availability and high performance. The engineering team at Mirantis thrives on solving highly complex, ambiguous problems that sit at the intersection of hardware, operating systems, and distributed networks. This role requires a unique blend of systems-level thinking and modern cloud-native expertise. You will collaborate with global engineering teams, participate actively in upstream open-source communities, and continuously adapt to the rapidly evolving landscape of cloud infrastructure. It is a challenging but highly rewarding environment where technical rigor, architectural curiosity, and a passion for open-source technology are highly valued.
Conversational Screening
reportedInitial discussion with a recruiter about your background, career goals, and alignment with the company's domain.
What to demonstrate
- Initial discussion with a recruiter about your background, career goals, and alignment with the company's domain
- Depth in OpenStack
How to prepare
- Answer aloud and timed: Explain the different states a Linux process can transition through during its lifecycle.
- Answer aloud and timed: How do threads share memory, and what mechanisms do you use to prevent race conditions?
Technical Assessment
reportedOnline technical assessment or take-home assignment to evaluate coding, scripting, and system-administration skills.
What to demonstrate
- Online technical assessment or take-home assignment to evaluate coding, scripting, and system-administration skills
- Depth in OpenStack
How to prepare
- Answer aloud and timed: What is the difference between cache-through (write-through) and cache-aside caching strategies, and when would you use each?
- Answer aloud and timed: Describe how virtual memory works and how the OS handles a page fault.
Deep-Dive Technical Panels
reportedSessions with senior engineers and team leads that include real-world scenarios, systems design problems, and live coding exercises.
What to demonstrate
- Sessions with senior engineers and team leads that include real-world scenarios, systems design problems, and live coding exercises
- Depth in OpenStack
How to prepare
- Answer aloud and timed: How would you debug a memory leak in a production environment running a compiled systems language?
- Answer aloud and timed: Detail the structure of a TCP segment and explain the purpose of the flags within it.
Managerial Interview
reportedInterview focused on workflow, soft skills, and expectations.
What to demonstrate
- Interview focused on workflow, soft skills, and expectations
- Depth in OpenStack
How to prepare
- Answer aloud and timed: How does a DNS authority server differ from a recursive resolver, and how does the resolution process work?
- Answer aloud and timed: What are ingress and egress default rules in a cloud network, and how do you configure them securely?
PracHub editorial advice for the preparation topics above.
Emphasize the "Why" in System Design
When asked to design a system or solve a networking problem, do not just present a solution. Explain the trade-offs of your choices, such as why you chose a specific database, caching strategy, or network protocol over another.
Brush Up on Linux CLI Tools
Be prepared to talk about how you debug systems in real-time. Knowing tools like tcpdump, strace, lsof, netstat, and htop shows that you have hands-on, practical troubleshooting experience.
Prepare for the "Riddle" or Wit Tests
Some interviewers at Mirantis enjoy asking abstract logic puzzles or riddles. Do not panic if you get one. These are designed to test your critical thinking, how you handle ambiguity, and your ability to communicate your thought process under pressure.
Highlight Your Open-Source Mindset
If you do not have direct contributions to big projects like Kubernetes, talk about your experience reading open-source codebases, filing detailed bug reports, or helping others in technical forums. Showing that you understand how open collaboration works is a massive plus.
Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.
Explain the different states a Linux process can transition through during its lifecycle.
Explain the different states a Linux process can transition through during its lifecycle.
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- 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 threads share memory, and what mechanisms do you use to prevent race conditions?
How do threads share memory, and what mechanisms do you use to prevent race conditions?
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- 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?
What is the difference between cache-through (write-through) and cache-aside caching strategies, and when woul
What is the difference between cache-through (write-through) and cache-aside caching strategies, and when would you use each?
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- 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?
Describe how virtual memory works and how the OS handles a page fault.
Describe how virtual memory works and how the OS handles a page fault.
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- 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 does a DNS authority server differ from a recursive resolver, and how does the resolution process work?
How does a DNS authority server differ from a recursive resolver, and how does the resolution process work?
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- 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?
Imagine a network of computers with one coordinator server. If you have a massive array of data that must be p
Imagine a network of computers with one coordinator server. If you have a massive array of data that must be processed, how would you distribute and organize these calculations efficiently?
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- 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 implement a queue that supports concurrent read and write operations without locking the entire
How would you implement a queue that supports concurrent read and write operations without locking the entire data structure?
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- 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?
Given a highly fragmented file system, write an algorithm to find the largest contiguous free block of memory.
Given a highly fragmented file system, write an algorithm to find the largest contiguous free block of memory.
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- 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?
Find version gaps and relay lag with window functions
outbox_event holds event_id, aggregate_type, aggregate_id, aggregate_version, event_type, payload, status ('pending','published','dead'), attempts, created_at, published_at. A projection is missing rows and you must decide whether the relay skipped events or the consumer dropped them. Write three queries over the last seven days: one listing every aggregate_id whose published aggregate_version sequence has a hole, one giving per-day counts with a running total, and one returning the newest published event per aggregate. For each, say where the window function is evaluated relative to WHERE and LIMIT. PostgreSQL 16.
Approach
- Gaps: compute lead(aggregate_version) OVER (PARTITION BY aggregate_id ORDER BY aggregate_version) in a subquery, then filter next_version <> aggregate_version + 1 in the outer query. Window functions are evaluated after WHERE, GROUP BY and HAVING and before the outer ORDER BY and LIMIT, so the predicate cannot sit in the same WHERE clause and PostgreSQL 16 has no QUALIFY.
- Say what the seven-day filter does to the answer: it truncates every partition, so the first row per aggregate has no predecessor inside the window and a hole spanning the boundary is invisible. Widen the window, or join to resource.version as the authority for the true maximum.
- Running total: SELECT date_trunc('day', created_at) AS d, count() AS n, sum(count()) OVER (ORDER BY date_trunc('day', created_at) ROWS UNBOUNDED PRECEDING). An aggregate inside a window call is legal because grouping runs before windowing. The grouping key is unique per row here so ROWS and RANGE agree, but write the frame anyway — over ungrouped rows with tied timestamps the default RANGE frame pulls in every peer row and the total jumps.
- Newest per aggregate: DISTINCT ON (aggregate_id) ... ORDER BY aggregate_id, aggregate_version DESC is the cheap PostgreSQL-only form when an index matches that order; row_number() OVER (PARTITION BY aggregate_id ORDER BY aggregate_version DESC) = 1 is the portable form and needs a subquery for the same evaluation-order reason as the gap query.
Follow-up
- Relay failover redelivers events. Does a duplicate break the gap query, and how would you detect one from this table alone?
- Turn the gap check into a continuous monitor rather than a query someone runs after an incident. What does it watch?
Replace offset paging on the resource feed with keyset
resource holds resource_id, tenant_id, owner_user_id, title, body_ref, version, status ('draft','active','archived','deleted'), created_at, updated_at, deleted_at, with an index on (tenant_id, status, updated_at DESC, resource_id DESC). The listing endpoint returns active resources for one tenant, newest update first, 50 per page, today with LIMIT 50 OFFSET n. Tenants reach page 400 and rows are created while they read. Write the keyset query, define what the cursor carries and how it is encoded, and say which part of the index each predicate uses. Assume PostgreSQL 16.
Approach
- Name the two failures separately. OFFSET 20000 makes the server produce and discard 20,000 rows, so page cost grows with depth rather than with page size. Independently, any write that changes how many rows sort above the offset moves the window between two fetches, and the direction decides which anomaly you get: an insert lands at the head of updated_at DESC and pushes already-returned rows down past the boundary, so they are returned a second time; a delete above the offset, or a row whose updated_at is bumped above the cursor, pulls rows up and one is never returned at all. Nothing in the response reveals either.
- Write the seek: WHERE tenant_id = $1 AND status = 'active' AND (updated_at, resource_id) < ($2, $3) ORDER BY updated_at DESC, resource_id DESC LIMIT 50. The row-value comparison is one index range rather than a disjunction, and both columns are NOT NULL, which is what makes that comparison well defined.
- Map each predicate onto the index: tenant_id and status are equality on the leading columns, (updated_at, resource_id) is the range, and the ORDER BY matches the index order so no Sort node appears and the scan stops after 50 rows. The DESC in the definition only matters for mixed directions — a plain ascending btree on the same columns is read backwards for this query.
- Put both sort columns in the cursor and nothing the client can tamper with into another tenant: base64 of (updated_at, resource_id), validated server-side, with tenant_id taken from the principal.
Follow-up
- The client asks for 'jump to page 400'. What do you offer instead, and what does the honest version cost?
- Sort order becomes user-selectable across four columns. How many indexes is that, and which would you refuse to add?
Detail the structure of a TCP segment and explain the purpose of the flags within it.
Detail the structure of a TCP segment and explain the purpose of the flags within it.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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?
What are ingress and egress default rules in a cloud network, and how do you configure them securely?
What are ingress and egress default rules in a cloud network, and how do you configure them securely?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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?
Explain the architectural differences between OpenStack and Kubernetes for managing compute resources.
Explain the architectural differences between OpenStack and Kubernetes for managing compute resources.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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?
Describe how software-defined storage systems like Ceph manage data distribution and replication.
Describe how software-defined storage systems like Ceph manage data distribution and replication.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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?
Design a rate-limiting algorithm for an API gateway servicing distributed microservices.
Design a rate-limiting algorithm for an API gateway servicing distributed microservices.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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 would you debug a memory leak in a production environment running a compiled systems language?
How would you debug a memory leak in a production environment running a compiled systems language?
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- 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?
Describe a situation where you had to debug a complex system issue under tight time constraints.
Describe a situation where you had to debug a complex system issue under tight time constraints.
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- 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?
Built from the rounds and topics Mirantis candidates report.
Prepare, practise & reflect
One practical outcome each day. Spend longer where you need it.
0 / 7 done01Map the Mirantis loop
- Write out the reported sequence: Conversational Screening, Technical Assessment, Deep-Dive Technical Panels, Managerial Interview.
- 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.
02Work OpenStack
- Spend the session on OpenStack, which Mirantis candidates report being tested on.
- Write one worked example in OpenStack and time yourself on it.
Deliverable: One timed worked example in OpenStack.
03Work Linux Fundamentals & Internals
- Spend the session on Linux Fundamentals & Internals, which Mirantis candidates report being tested on.
- Write one worked example in Linux Fundamentals & Internals and time yourself on it.
Deliverable: One timed worked example in Linux Fundamentals & Internals.
04Work Python
- Spend the session on Python, which Mirantis 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: Systems Programming & OS Internals
- Answer aloud, timed: Explain the different states a Linux process can transition through during its lifecycle.
- Answer aloud, timed: How do threads share memory, and what mechanisms do you use to prevent race conditions?
Deliverable: Spoken answers to 2 reported Systems Programming & OS Internals question(s), under time.
06Answer out loud: Networking & Cloud Infrastructure
- Answer aloud, timed: Detail the structure of a TCP segment and explain the purpose of the flags within it.
- Answer aloud, timed: How does a DNS authority server differ from a recursive resolver, and how does the resolution process work?
Deliverable: Spoken answers to 2 reported Networking & Cloud Infrastructure question(s), under time.
07Answer out loud: Algorithms & Distributed Systems
- Answer aloud, timed: Imagine a network of computers with one coordinator server. If you have a massive array of data that must be processed, how would you distribute and organize these calculations efficiently?
- Answer aloud, timed: Design a rate-limiting algorithm for an API gateway servicing distributed microservices.
Deliverable: Spoken answers to 2 reported Algorithms & Distributed Systems 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.
Tell me about a time you contributed to an open-source project. How did you handle feedback from the maintaine
Tell me about a time you contributed to an open-source project. How did you handle feedback from the maintainers?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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 keep up with modern technology trends, and which recent cloud-native project has caught your attent
How do you keep up with modern technology trends, and which recent cloud-native project has caught your attention?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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 architectural decisions?
How do you handle disagreements with team members regarding architectural decisions?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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
Tell me about a time you contributed to an open-source project. How did you handle feedback from the maintainers?
- 02
How do you keep up with modern technology trends, and which recent cloud-native project has caught your attention?
- 03
How do you handle disagreements with team members regarding architectural decisions?
How difficult is the Software Engineer interview at Mirantis?
The interview is highly technical and rated as average to difficult by most candidates. It focuses heavily on systems programming, operating system internals, and networking rather than standard web-dev questions. Thorough preparation in these areas is essential.
Mirantis Software Engineer candidate reports ↗What is the typical timeline from the initial screen to an offer?
The process usually takes between 3 to 5 weeks. It involves an initial HR screen, an online assessment or take-home project, followed by 2 to 3 technical and managerial interviews.
Mirantis Software Engineer candidate reports ↗Does Mirantis support remote work for engineers?
Yes, Mirantis has a highly distributed, global workforce and offers robust remote work options for most engineering roles, depending on your location and team requirements.
Mirantis Software Engineer candidate reports ↗What is the company culture like for engineering teams?
The culture is deeply rooted in open-source collaboration, technical curiosity, and autonomy. Engineers are encouraged to take ownership of their projects and actively participate in global technology communities.
Mirantis Software Engineer candidate reports ↗What topics does Mirantis test in interviews?
Mirantis interviews most often cover OpenStack, Kubernetes, Problem Solving, Sales/Account Executive Competencies, and Linux. The exact emphasis depends on the specific role you apply for.
Mirantis 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.
- 01Mirantis Software Engineer candidate reports ↗
Company-reported rounds, questions and FAQ.
Candidate reports · Accessed 2026-09-22 - 02PracHub Software Engineer practice ↗
PracHub practice material, not company-reported.
PracHub page · Accessed 2026-09-22 - 03PracHub preparation framework ↗
PracHub preparation guidance.
PracHub page · Accessed 2026-09-22