CFS · Software Engineer
Updated · 2026-10-02

CFS Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Candidate reports describe CFS as an organisation that places engineers on projects for client organisations, and they do not name a specific product line. The Software Engineer role is described as covering front-end work, back-end integration and infrastructure optimisation, with engineers sometimes rotating between client projects. In practice that means building, testing and deploying software to a client's specification, joining feasibility discussions, keeping documentation current, and reporting progress and blockers to the client's stakeholders.

This guide is for Software Engineer candidates preparing for CFS. It covers the four reported stages (Screening Phase, Development Philosophy Assessment, Conversational Interview, Profile Building), the eight reported questions on languages, front-end versus back-end experience, development process, infrastructure experience, career story, five-year plans, relocation and work environment, and a plan for rehearsing them. Candidates do not report coding puzzles or system-design exercises for this loop, so the depth here goes into project stories and stack explanations.

Candidates report four stages over roughly 3-5 weeks: a recruiter Screening Phase, a Development Philosophy Assessment, a Conversational Interview and Profile Building. After the first screen, some candidates are kept on a contact list until a matching role opens.

Software Engineering (General)IT Infrastructure ManagementInfrastructure Engineering

30 min read

Browse Software Engineer questions

See the practice prompts

14Practice promptsAcross five skill areas

The reported questions are almost all about you: which languages and technologies you have used, how your experience splits between front end and back end, how you start a new project, what infrastructure or systems work you have done, and where you want to go next. None of them has a single correct answer, so preparation means building a small set of concrete stories and facts you can deliver cleanly, not memorising solutions.

Because the role is described as client project work, the useful material is evidence that you can land in an unfamiliar codebase and be productive. Candidates describe tasks such as building and testing to a specification, evaluating whether a new feature is feasible, writing documentation so a system can be supported later, and explaining blockers to non-technical stakeholders. Pick projects where you can show each of those, and be ready to say what you personally did as opposed to what the team did.

Reports describe the conversation as relaxed and the difficulty as moderate, with more weight on experience and fit than on trick-based coding. That does not mean it needs less preparation: a relaxed format rewards a tight narrative, a clear account of why you chose your tools and what the trade-offs were, and honest, specific answers about location, travel and the kind of team you want. The plan below spends two days on the technical story, one on infrastructure, and the rest on career narrative and logistics.

Candidates also report that the process is shaped by the project pipeline: after the initial screen you may be added to a contact list and called when a matching role opens. The Profile Building stage exists to match you to client needs, so a precise inventory of your stack, seniority, preferred environments and constraints is as useful as any technical answer.

01

Screening Phase

reported

Candidates report that a recruiter opens the loop by reviewing your background, your core skills and where you want your career to go. Treat it as the moment your whole profile is first summarised, since later stages build on it. Arrive with a short account of your recent roles, the languages and technologies you actually use, and your stated preferences on location and travel. Reports say to confirm on-site or remote expectations here, because they vary by position.

What to demonstrate

  • Your background and core skill set as you summarise them
  • Where you want your career to go, in a form a recruiter can match to roles
  • Whether your location and travel constraints fit open positions

How to prepare

  • Write a stack inventory: each language and technology, how recently you used it, and one thing you built with it
  • Prepare a concise answer about your front-end versus back-end balance, naming the layer where you are strongest
  • Decide your position on relocation and travel before the call, and note questions to ask about on-site versus remote
CFS Software Engineer candidate reports ↗
02

Development Philosophy Assessment

reported

The Development Philosophy Assessment is reported as a look at how you think about building software and what practical experience backs it up. The clearest preparation is to be able to walk through your process on a real project from requirements to deployment, and to say why you chose your tools and what you gave up by choosing them. Reports specifically point to the software development lifecycle and to clean, maintainable code as the topics around which these conversations circle.

What to demonstrate

  • How you move from requirements through to deployment
  • The reasoning and trade-offs behind your technical choices
  • Practical experience that supports the approach you describe

How to prepare

  • Outline your process for starting a new project as steps: clarify requirements, choose the stack, set up the repository and tests, deploy, document
  • Pick one past decision where you rejected an alternative, and be ready to state the trade-off in a sentence
  • Prepare an example of working from a client or stakeholder specification and what you did when it was ambiguous
CFS Software Engineer candidate reports ↗
03

Conversational Interview

reported

Candidates describe the Conversational Interview as relaxed but focused, centred on your previous projects and your technical proficiency. Reports also say this style is common when a third-party partner or an early-stage interviewer runs the conversation. Expect to talk through two or three projects in depth, so choose them to show different strengths and rehearse the specifics: your role, the bottleneck you hit, what you changed, and the outcome for the business or users.

What to demonstrate

  • How clearly you explain your role and results on past projects
  • Technical proficiency in the stack you claim
  • Collaboration with other developers, project managers or stakeholders

How to prepare

  • Build three project stories, each with problem, your contribution, a technical obstacle, and an outcome you can describe
  • Practise your introduction and project walkthrough aloud until it flows without reading from notes
  • Rehearse your five-year answer so it follows naturally from the projects you just described
CFS Software Engineer candidate reports ↗
04

Profile Building

reported

Profile Building is reported as the stage where your details are assembled so that you can be matched to clients' needs, which is why candidates connect it to the contact-list behaviour after screening. Treat it as a chance to make your preferences and constraints unambiguous: relocation, travel, company size and working environment. Reports say roles can be on-site or require moving depending on the client.

What to demonstrate

  • Fit between your stated preferences and available client assignments
  • Clarity about location, relocation and travel
  • The kind of team and company environment you describe wanting

How to prepare

  • Write a precise statement of what you will and will not do about relocation and travel, with conditions
  • Prepare a short, evidence-based description of the environment where you work best, drawn from past experience
  • List the facts a matcher needs: stack, years of experience, strongest layer, cloud or agile exposure, availability
CFS Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Listing languages and tools with no role, scale or reason behind them

For every technology you mention, add one sentence of what you built, what you personally owned, and why that tool over an alternative. Prepare this for your top three technologies in advance.

02

Claiming equal depth in front end and back end, then being unable to describe either in detail

State your stronger layer, give a defensible account of the other, and prepare one end-to-end feature story that crosses the boundary.

03

Overstating infrastructure or systems experience to match the role description

Describe the actual work you did, with its safeguards and outcome, and say clearly where your experience stops. A narrow true answer holds up under follow-up questions.

04

Giving an unclear or conditional answer about relocation and travel, then changing it later

Decide your limits before the screen, state them as specifics, and ask which roles are on-site, remote or travel-heavy so your profile is matched accurately.

05

Explaining projects in jargon that a non-technical client contact could not follow

Practise a two-level answer: one sentence on the business outcome, then the technical detail. Test it on someone outside engineering.

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

8 technical prompts0 include a worked solution

Find overlapping job attempts and peak concurrency from lease records

medium
sweep lineintervalsleases

A day of job_run history yields about 50,000,000 attempt records: (job_run_id, job_type, attempt, started_at, finished_at which is NULL when the worker died, lease_expires_at). Leases expire on a clock, so a job that outran its lease ran twice. Produce (a) every job_run_id whose attempts overlapped in wall-clock time and (b) the peak number of simultaneously running attempts per job_type with the minute it occurred. Target O(n log n). State how you treat a NULL finished_at and what clock skew does to your answer.

Approach
  1. Define the interval before sorting anything: an attempt occupies [started_at, COALESCE(finished_at, lease_expires_at)). finished_at is observed and lease_expires_at is only a promise, so every attempt without a finish contributes an estimate and the whole result is a lower bound on overlap rather than an exact count.
  2. For peak concurrency, sweep: emit 2n endpoints, sort by (timestamp, kind) with ends ordered before starts at equal timestamps, then walk the sequence maintaining a counter per job_type and record each type's maximum with its timestamp. O(n log n) dominated by the sort, O(n) space, or O(1) extra if the sort is external and the walk streams.
  3. For overlap detection, do not compare attempts pairwise. A single global sort by (job_run_id, started_at) gives both the grouping and the order; within a group, keep the maximum end seen so far and report an overlap exactly when the next start is less than that running maximum, which is one linear pass after the sort.
  4. Half-open intervals matter and are easy to get wrong: with closed intervals an attempt ending at the same millisecond another begins reads as concurrency two, and across 50,000,000 records that artefact swamps the real signal.
Follow-up
  • A handler is not idempotent and you have found 400 overlapping jobs. Which of them actually caused damage, and what would you query to find out?
  • Peak concurrency for one job_type is 4 against a configured cap of 4. Is the cap working, or is the data hiding attempts that never started?

Diff a projection against the primary without per-row point reads

hard
reconciliationrange hashingthrottling

The listing projection has drifted and some rows show a stale version. The primary holds 40,000,000 resource rows across 12,000 tenants while serving 1,200 writes and 14,000 reads per second. The obvious repair, reading each resource row and comparing its version against the projection, is correct and would eventually finish. Explain precisely why it is unacceptable here, then give a diff that finds the differing rows, state its complexity, and make it safe to run against a live primary. Replication lag is usually under 100 ms and is not bounded.

Approach
  1. Quantify the naive cost rather than calling it slow: 40,000,000 point reads at even 0.5 ms each is over five hours serialised, and the only lever is concurrency, which is exactly what you cannot spend. The primary's pool is sized for the write path, and 40,000,000 random reads evict the buffer cache that sustains the 85 percent cache hit rate, so the audit degrades the system it is auditing.
  2. Replace random access with one ordered pass per side. Both sides can be read in (tenant_id, resource_id) order, which is a sequential scan on each and a merge join in O(n) time and O(1) memory. For a dense diff that is the whole answer, and it reads the primary once instead of 40,000,000 times.
  3. For the expected sparse case, compare range hashes instead of rows: partition the key space, compute per range an order-independent aggregate over hash(resource_id, version), compare aggregates, and descend only into ranges that differ. With d differing rows and branching factor B, at most d ranges mismatch per level, so the drill-down examines O(d log_B(n/d)) ranges and reads full rows only in mismatching leaves.
  4. Aggregate with a sum modulo 2^64 or a multiset hash, never XOR. XOR is order-independent but self-cancelling, so two rows wrong in the same way, or a row duplicated on one side, leave the range aggregate matching and the range is declared clean.
Follow-up
  • The diff reports 900 stale rows. How do you decide between patching those rows and rebuilding the projection from resource_revision?
  • Same job, but the projection lives in a search index that cannot be scanned in key order. What changes?

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?

The plan alternates between inventory and spoken rehearsal across the four reported stages. Each day produces something written that you can reuse in the next, and the last day runs the whole loop in order.

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 loop and inventory your experience
  • Write out the four reported stages and, for each, what you want a listener to understand about you by the end of it.
  • List your last four or five projects with stack, your role, team size and outcome in one line each.
  • Mark the two projects you can speak about in the most depth.

Deliverable: A one-page stage map plus a project inventory with two projects marked as primary stories.

02Stack and front-end versus back-end answers
  • Build a table of languages and technologies with last-used date and one thing you built with each.
  • Write and speak your answer on front-end versus back-end experience, naming your stronger side.
  • Choose one feature that spans both layers and outline it end to end.

Deliverable: A stack table, a spoken answer on languages and technologies, and an end-to-end feature outline.

Practice prompt ↗Practice prompt ↗
03Development process and decisions
  • Write your process for starting a new project as numbered steps from requirements to deployment, with where testing and documentation fit.
  • Pick two decisions from past projects and write the alternative you rejected and the trade-off.
  • Practise explaining the process aloud to someone outside engineering.

Deliverable: A written step-by-step process and two decision-with-trade-off notes, spoken once.

Practice prompt ↗
04Infrastructure and systems stories
  • Write one infrastructure or systems story with problem, action, safeguards and measurable or observable result.
  • If you have little infrastructure experience, list the nearest work and what you have learned since.
  • Talk through the PracHub practice debugging scenario about one customer endpoint stalling other deliveries as a rehearsal for describing a diagnostic sequence.

Deliverable: One infrastructure story in outline form and a spoken walkthrough of a diagnostic sequence.

Practice prompt ↗Practice prompt ↗
05Career narrative and five-year answer
  • Write your tell-me-about-yourself in present, past, future form and cut anything that does not support this role.
  • Prepare walkthroughs of your two primary projects: problem, your role, one decision, outcome.
  • Write a five-year answer that follows from those projects and name one step already under way.

Deliverable: A spoken introduction and project walkthroughs, plus a five-year answer in two or three sentences.

Practice prompt ↗Practice prompt ↗
06Logistics and environment fit
  • Decide your position on relocation, travel and on-site work and write it as specific conditions.
  • Write your answer on company size and work environment using two examples from your experience.
  • Prepare three questions to ask about how assignments and on-site expectations work.

Deliverable: A relocation and travel statement, an environment answer with examples, and three questions to ask.

Practice prompt ↗Practice prompt ↗
07Full dry run across all four stages
  • Run all eight reported questions back to back as one conversation, recording yourself.
  • Replay the recording and mark filler, unanswered parts and places where you named a tool without explaining why.
  • Tighten the two weakest answers and run them once more.

Deliverable: A recorded full run and a revised version of the two weakest answers.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗

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

Candidates describe the later stages as conversations about your past projects, your career direction and the conditions you want. For a project-based engineer role, the stories need to show your own contribution, the reasoning behind your choices, how you worked with other people, and what you would change.

Can you describe your experience with front-end versus back-end development?

medium
Technical & Domain Expertise

Can you describe your experience with front-end versus back-end development?

Approach
  1. Choose one project per side and say what you owned on each. Name the layer concretely: for front end, component structure, state handling, form validation, accessibility; for back end, endpoint design, data model, authentication, integration with third-party services.
  2. Trace one feature end to end, for example a form submission going through client validation, an API call, server validation, a database write and a rendered confirmation. That shows you understand the boundary, not just each side.
  3. State your stronger side plainly and give the weaker side an honest depth statement, such as what you have shipped and what you would need to read up on. Claiming equal depth in both is the usual way this answer falls apart.
  4. Mention a bug or design choice that crossed the boundary, such as a pagination contract, an error shape the client could not handle, or duplicated validation, and how you resolved it with the other side.
  5. Close with where you would be most useful on a client project, because the role is described as spanning front end, back-end integration and infrastructure.
Follow-up
  • Which side would you pick for a client project and why?
  • How did you agree on an API contract with whoever built the other side?
  • Tell me about a bug that spanned the front end and back end and how you found it.

What is your experience with infrastructure-related tasks or systems engineering?

medium
Technical & Domain Expertise

What is your experience with infrastructure-related tasks or systems engineering?

Approach
  1. Pick one concrete piece of infrastructure or systems work you personally did, such as setting up a CI pipeline, containerising a service, moving a deployment to a cloud provider, automating environment setup, or adding monitoring and alerts. State the starting problem, your action and the resulting change.
  2. Quantify only with numbers you can defend: deploy frequency, time to provision, failure rate or cost before and after. If you have no figures, describe the observable improvement instead of inventing one.
  3. Show how you made the work safe: staging first, a rollback path, infrastructure kept in version control, documentation another engineer could follow. Candidates report documentation for long-term supportability as part of the role.
  4. If your experience is thin, say so and describe the nearest real work, such as writing Dockerfiles, reading logs during an incident, or supporting a release, then say what you have studied since. A truthful limited answer beats an overreach that the next question exposes.
  5. Link it to client work: say how you would learn an unfamiliar environment, reading existing configuration and pipelines before changing anything.
Follow-up
  • How did you measure whether the change actually helped?
  • Describe something that failed in production and what you did first.
  • What would you automate next in that environment?

Tell me about yourself and walk me through your past projects.

medium
Behavioral & Career Alignment

Tell me about yourself and walk me through your past projects.

Approach
  1. Structure the opening as present, past, future: your current role and strongest skills, two or three earlier steps that built them, then what you are looking for next. Keep it as a story of growth in responsibility rather than a résumé recitation.
  2. For the walkthrough, select two or three projects that show different things, such as a full-stack build, an integration, and an infrastructure or performance task. For each give the problem, your exact role, one technical decision with its trade-off, and the outcome for users or the business.
  3. Say why you chose your tools in each project and what you would do differently. Candidates are told to explain the why, not list technologies.
  4. Aim at the client-facing angle: mention a time you explained a technical issue to a non-technical person or adapted to a new codebase or team.
  5. The mistake that sinks it is listing every job chronologically with tools and no ownership. Cut anything that does not support the role you are applying for.
Follow-up
  • Which of those projects are you proudest of, and what was your exact contribution?
  • What would you change about the project if you rebuilt it now?
  • What did you learn from the least successful project you mentioned?

Where do you see yourself in five years?

medium
Behavioral & Career Alignment

Where do you see yourself in five years?

Approach
  1. Give a direction, not a job title: deepening technical ownership, taking on architecture decisions, mentoring newer engineers, or growing toward leading projects. Tie it to the work you already do so it sounds earned.
  2. Make it coherent with this role. Client project work gives exposure to many stacks and teams, so you can say you want breadth now and a chosen specialism later, provided it is true for you.
  3. Name one or two concrete steps already under way, such as a certification, a cloud platform you are learning, or a responsibility you took on at work. This makes the plan credible.
  4. Avoid two failure modes: a plan that has nothing to do with software engineering, and a vague answer such as wanting to grow. If you are unsure, offer a direction and say how you would revisit it.
  5. Keep it flexible and honest about what you cannot control, rather than promising to stay in a given path.
Follow-up
  • What would you need to learn to get there?
  • What if your client projects did not give you that opportunity?
  • Would you move into management, and what would you miss?

Are you willing to relocate for the right opportunity?

medium
Behavioral & Career Alignment

Are you willing to relocate for the right opportunity?

Approach
  1. Answer directly first: yes, no, or yes under stated conditions. Then give the conditions in specifics, such as regions you would consider, whether your situation depends on family or timing, and how much notice you need.
  2. Separate relocation from travel and from on-site client work. Candidates report that roles may be on-site, require relocation or involve travel depending on the client, so say which of these you accept and which you do not.
  3. Ask questions that show you are weighing it seriously: where the role is based, whether the assignment is fixed-term, and whether the arrangement is the same for every client assignment.
  4. Do not overcommit to get through the call. Saying yes and then withdrawing at the offer stage damages your profile more than an honest limit now.
  5. If you would relocate for the right role, say what makes it right, for example the type of work or the team, in a sentence.
Follow-up
  • Would you accept regular travel to a client site instead of relocating?
  • Is there a timing constraint on when you could move?
  • What would make you turn down an assignment that required relocation?

What type of company size or work environment are you looking for at this stage in your career?

medium
Behavioral & Career Alignment

What type of company size or work environment are you looking for at this stage in your career?

Approach
  1. Answer from evidence, not preference alone: describe the size and environment where you have worked, what you did well there, and what you noticed you wanted more or less of.
  2. Give a clear lean but show range. Candidates report that comfort with different team structures and project scopes counts for this role, so cite a time you adapted, such as joining a small team that had no process or a large team with heavy process.
  3. Name the working conditions you do best in, for example clear specifications and regular check-ins with a lead, or autonomy to make technical calls, and avoid criticising past employers.
  4. Connect it to client rotation: say how you ramp up in a new codebase, who you ask, what you read first, and how you document what you learned.
  5. Finish with a question about how assignments are structured so the answer becomes a conversation.
Follow-up
  • Tell me about a time you worked in an environment you liked less and what you did.
  • How do you get productive in a codebase you have never seen?
  • Would you prefer a single long project or moving between several, and why?
  • 01

    Can you describe your experience with front-end versus back-end development?

  • 02

    What is your experience with infrastructure-related tasks or systems engineering?

  • 03

    Tell me about yourself and walk me through your past projects.

  • 04

    Where do you see yourself in five years?

  • 05

    Are you willing to relocate for the right opportunity?

  • 06

    What type of company size or work environment are you looking for at this stage in your career?

PracHub preparation framework ↗
How difficult are the interviews at CFS?

Candidates describe the process as accessible and professional, with moderate difficulty. They report that the weight is on your real experience and fit rather than on high-pressure coding puzzles, so the most useful preparation is rehearsing project stories and technical explanations.

CFS Software Engineer candidate reports ↗
How long does the process take?

Candidates report four stages over about 3-5 weeks, though timing varies with the project pipeline. After the first screen you may be added to a contact list and approached when a matching role opens.

CFS Software Engineer candidate reports ↗
How do I stand out?

Tie every project to its result and to your own part in it, explain why you chose your tools and what the trade-offs were, and show you understand the business impact of your code. Candidates also report that clear communication with recruiters and clients counts.

CFS Software Engineer candidate reports ↗
Will I be working on-site or remotely?

Reports say this depends on the position and the client, and some roles are on-site or involve relocation. Confirm location expectations during the recruiter screen and decide your own limits before it.

CFS Software Engineer candidate reports ↗
Should I prepare coding exercises?

Candidates do not report coding puzzles or system-design rounds for this loop. Be ready to discuss code you have written, your language choices and your process; if a specific role adds a technical exercise, the recruiter is the person to ask.

PracHub Software Engineer practice ↗
Which skills do candidates say matter for the role?

The requirements candidates describe are proficiency in the languages of the client's stack, understanding of the software development lifecycle and strong verbal communication, with cloud infrastructure, agile methods and consulting or client-facing experience listed as nice-to-haves. Most roles are described as expecting a record of delivered projects and growing responsibility over about 2-5 years.

CFS 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.