Xelix · Software Engineer
Updated · 2026-09-20

Xelix Software Engineer
Interview Questions & Guide 2026

THE 60-SECOND BRIEF

Xelix builds accounts-payable software that helps finance teams check invoices and reconcile supplier statements.

This guide focuses on Python backend engineering: incoming data, Django APIs and dependable financial workflows.

Four official typical stages, including a technical task or presentation. Start by practising one small, tested backend change.

Python correctnessDjango and SQLExplain your decisions

11 min read

Practice 11 Software Engineer prompts
11Practice promptsAcross five skill areas
4With worked solutionsIncluded in the practice prompts

Start with one working example. Build and test a small invoice importer, then explain your decisions. Use it to connect your Python, SQL and system-design preparation.

  • Official facts: The backend opening describes Python data handling and Django APIs. PostgreSQL and AWS are desirable skills.
  • PracHub practice: Check amounts, tenant boundaries and retries, then explain why each check matters. The eleven prompts are original exercises, not reported employer questions.

Understand the domain first. Accounts payable concerns money an organization owes suppliers. A repeated invoice, missing credit or incorrect amount can change a payment decision. Keep three ideas visible in your practice work:

  • Identity: Which tenant, supplier and invoice does this record belong to?
  • Accuracy: What currency and amount does it represent?
  • Traceability: Can a reviewer follow the result back to the original row?
01

Talent Partner introduction

official

Official: A short introductory conversation about your background and the opportunity.

Format
Teams conversation
Interviewer
Talent Partner

What to demonstrate

  • Relevance: Connect one backend project to a problem its users needed solved.
  • Ownership: Separate your contribution from the team’s overall result.

How to prepare

  • Prepare a concise introduction: problem, action and outcome.
  • Explain why invoice accuracy or reliable data processing interests you.
Read the source
02

Hiring Manager discussion

official

Official: A discussion of your experience and fit for the team.

Format
Teams meeting
Duration
30–45 minutes
Interviewer
Hiring Manager

What to demonstrate

  • Judgment: Explain a tradeoff, including the alternative you rejected.
  • Learning: Give a concrete example of applying something new.

How to prepare

  • Choose a project you can explain without internal terminology.
  • Bring an example of a review comment that improved your code.
Read the source
03

Technical task or presentation

official

Official: A role-relevant task or presentation. The posting does not specify a delivery mode or duration.

Format
Role-relevant task or presentation

What to demonstrate

  • Correctness: Make assumptions and failure cases explicit.
  • Explanation: Connect your data structures, tests and tradeoffs to the problem.

How to prepare

  • Practise a small Python change with a reproducible test command.
  • Explain one incomplete extension and the next test you would add.
Read the source
04

Leadership and co-founder conversation

official

Official: An office meeting with senior leadership and co-founders.

Format
In-person meeting at the office
Interviewer
Senior leadership and co-founders

What to demonstrate

  • Product judgment: Explain how an engineering choice affected users.
  • Responsibility: Describe what you did after a mistake or disagreement.

How to prepare

  • Prepare one delivery story and one incident story with real outcomes.
  • Bring a question about how finance-user feedback shapes engineering priorities.
Read the source

PracHub editorial advice for the preparation topics above.

01

Silently rounding money

Set the precision policy first. Reject an amount that needs rounding unless the contract explicitly permits it. Keep currency separate from amount.

02

Treating an invoice ID as globally unique

Include tenant and supplier scope. Test two customers with the same invoice reference. Apply the boundary to both list and detail endpoints.

03

Automatically acting on a possible duplicate

Preserve the evidence for review. A matching signature identifies a candidate, not permission to delete a record or change a payment.

04

Submitting an example that is hard to run

Provide one verification command. Include input, expected output and a failing case. A reviewer should be able to reproduce the result from those instructions.

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

8 technical prompts4 include a worked solution

Parse an invoice amount exactly

mediumWorked solution
PythonDecimalValidation

Task: Implement minor_units(text, scale). Accept at most 64 characters, an optional minus and scale 0–4. Return an integer only for exactly representable amounts; reject exponent notation and non-finite values.

Approach
  1. Validate the grammar and currency scale.
  2. Convert directly with Decimal; reject any required rounding.
Worked solution 30 min
  1. Parse directly: Decimal preserves the input’s decimal value; converting through float first defeats that purpose.
  2. Bound the input: The grammar excludes whitespace, separators and exponents. Scale comes from currency policy.
  3. Check exactness: Extra trailing zeros are acceptable; unsupported precision raises ValueError. The implementation uses O(n) storage for bounded input length n.
Python
import re
from decimal import Decimal, localcontext


def minor_units(text, scale):
    if type(scale) is not int or not 0 <= scale <= 4:
        raise ValueError("scale must be an integer from 0 to 4")
    if (not isinstance(text, str) or len(text) > 64
            or re.fullmatch(r"-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?", text) is None):
        raise ValueError("invalid amount syntax")
    with localcontext() as context:
        context.prec = max(28, len(text) + scale + 2)
        scaled = Decimal(text) * (Decimal(10) ** scale)
        if scaled != scaled.to_integral_value():
            raise ValueError("amount exceeds currency precision")
        return int(scaled)


assert minor_units("12.340", 2) == 1234
assert minor_units("-0.25", 2) == -25
assert minor_units("500", 0) == 500

Scroll sideways to view long lines.

EXPECTED RESULT12.340 at scale 2 becomes 1234; -0.25 becomes -25; 1.005 at scale 2 is rejected.
Follow-up
  • Which document types should permit negative adjustments?

Group duplicate invoice candidates

medium
Hash mapsData qualityTenant isolation

Task: Group records by tenant, supplier, currency, amount and reference. Trim and case-fold references, preserving punctuation. Send missing references to review.

Approach
  1. Build a complete signature; retain original records.
  2. Return groups with at least two records.
Follow-up
  • How would you measure false positives before using a broader matching rule?

Reconcile repeated statement lines

medium
CountersReconciliationDeterminism

Task: Compare validated statement and ledger tuples for one tenant and supplier. Return missing and extra occurrences, including repeated identical rows.

Approach
  1. Count each (reference, currency, amount) tuple.
  2. Subtract counts in both directions; a set would erase repetitions.
Follow-up
  • How would a different reporting cutoff affect the comparison?

A PracHub practice schedule: complete one pair of related tasks per session and keep the result you can explain or run. Adjust the pace to your experience; this is not an employer hiring timeline.

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 AP workflow
  • Sketch import, validation and review. Mark two ways an incorrect record could change the result.
  • Rehearse one project introduction and a question about the product.

Deliverable: A workflow sketch; A concise introduction

02Validate invoice amounts
  • Run the money parser. Explain its rejection rules before adding cases.
  • Group records with shared references across different tenants and suppliers.

Deliverable: A tested amount contract; A complete matching key

Practice prompt ↗Worked solution ↗
03Reconcile repeated lines
  • Compare repeated statement rows using counters and then sets. Explain the difference.
  • Run the balance query with unpaid invoices, reversals and overpayments.

Deliverable: A mismatch example; Expected SQL results

Practice prompt ↗Worked solution ↗
04Tell the correctness story
  • Describe a correctness bug and the test that prevents its return.
  • Draw the import transaction and checkpoint. Walk through a worker crash.

Deliverable: One evidence-backed story; A recovery walkthrough

Practice prompt ↗Worked solution ↗
05Design review actions
  • Model a stale review action and the conflict response.
  • Reproduce the doubled total, then repair it without SUM(DISTINCT).

Deliverable: An API contract; A regression case

Practice prompt ↗Worked solution ↗
06Query current review state
  • Test resolved and reopened alerts with tied event timestamps.
  • Explain one implementation to a reviewer. Address their strongest objection.

Deliverable: A latest-state query; A revised explanation

Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Prepare stakeholder examples
  • Rehearse the disagreement and incident questions using real examples.
  • Run every example and check the instructions from a clean directory.

Deliverable: Two concise stories; A reproducible handoff

Practice prompt ↗Practice prompt ↗

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

Use real project stories. Focus on your decision, the evidence available at the time and what changed afterward.

Explain a correctness decision

medium
OwnershipRiskEvidence

Task: Describe a real change where a plausible result was wrong. Explain the rule it broke, your correction and the user impact.

Approach
  1. Show the smallest input that exposed the bug.
  2. Explain your contribution and the regression check.
Follow-up
  • What would you change if the issue had already reached users?

Discuss a disagreement about automation

medium
StakeholdersProduct judgmentCommunication

Task: Explain a real disagreement about an automated action or release threshold. How did you reach a decision?

Approach
  1. Describe the competing risks and available evidence.
  2. State the decision, owner and outcome without overstating agreement.
Follow-up
  • What result would have made you reverse the decision?

Hand off a data incident

medium
Incident responsePrivacyTeamwork

Task: Describe an investigation another engineer had to continue. What helped them reproduce the failure while protecting customer information?

Approach
  1. Include the timeline, symptoms and current hypothesis.
  2. Provide sanitized evidence and a clear next action.
Follow-up
  • How did you confirm the receiving engineer could continue?
  • 01

    Explain how another person could verify your result and what you did when the evidence changed.

Xelix — Python Software Developer, Backend
Does this cover every Xelix engineering role?

No. It focuses on the advertised Python backend role. Other teams can have different requirements and assessments.

Xelix — Python Software Developer, Backend
Can I use AI to prepare?

The current posting permits research and preparation, but asks candidates not to generate answers with AI during live interviews. Practise explaining your work yourself.

Xelix — Python Software Developer, Backend
Are the eleven prompts actual Xelix questions?

They are original PracHub exercises informed by the backend role and accounts-payable product context. They do not establish a verified employer question bank.

Where can I run the SQL examples?

Use SQLite for the supplied fixtures. They check query results; PostgreSQL concurrency and production performance require separate testing.

PostgreSQL — Transaction isolation
Sources & methodology 8 sources ↗

Official role evidence, timestamped platform data and clearly labeled preparation advice.