Bravissimo Ltd · Software Engineer
Updated · 2026-10-02

Bravissimo Ltd Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Candidates describe Bravissimo Ltd as a retailer whose online presence runs on cloud-based platforms that connect customers to products, from browsing through checkout. The Software Engineer role is reported to work on that layer: refining the website user journey, keeping inventory data in sync, handling how a shopping basket is persisted, and taking part in the continuing move of the company's cloud infrastructure to newer approaches. The reported requirements put JavaScript and cloud experience first, with e-commerce or retail-tech background and agile working listed as extras.

This guide is for candidates applying as a Software Engineer at Bravissimo Ltd. It covers the three reported stages, the seven reported questions (two on coding practice and JavaScript, two on data design and data handling, three on motivation and work history), how to approach each one, and a seven-day plan that finishes with a full mock run.

Candidates report three stages over roughly 3-5 weeks: Application Review, Remote Interactions, and an On-site Assessment that includes group exercises and presentations.

Persisting Data (Shopping Basket Persistence)Preparing a Technical Solution to a SpecificationJavaScript

27 min read

Browse Software Engineer questions

See the practice prompts

11Practice promptsAcross five skill areas

The work candidates describe is the software behind an online retail operation. Three data problems keep coming up: where a shopper's basket lives between visits, how stock figures stay correct when goods move between locations, and how data flows between systems. Layered on that are two themes from the requirements: strong JavaScript, and experience of cloud environments. Preparing well means being able to reason about state that must survive a closed browser tab, and about numbers that must stay consistent when two updates arrive together.

The reported questions fall into three groups. Two ask for your own position: what you count as good coding practice, and how you approach JavaScript development. Two are small design problems: persisting items in an online shopping basket, and handling stock transfers between locations. Three are about you: why this company, what draws you to its culture and business model, and a walk through your employment history with the lessons you took from each role. The first group needs opinions backed by concrete code habits, the second needs a structured design answer with failure cases, the third needs a prepared narrative that is specific rather than flattering.

Candidates also report a format that rewards structure over improvisation: a mix of remote conversations and in-person assessment, with written technical tests, group exercises, and a presentation of a solution prepared to a brief. Some report writing code on paper. So the plan below spends as much time on explaining reasoning aloud, writing without an editor, and outlining a short presentation as it does on the technical content itself.

01

Application Review

reported

Candidates describe this stage as a review of your application for qualifications and fit. No questions are reported for it. The requirements candidates list for the role are the yardstick to prepare against: JavaScript proficiency, experience in cloud environments, an understanding of software development lifecycle practice, and, as extras, e-commerce or retail-tech experience and agile team working. Treat your CV and any application answers as the material that decides whether you move on, and make sure every line can be defended in conversation later.

What to demonstrate

  • Fit between your experience and the listed requirements: JavaScript, cloud, lifecycle practice
  • Whether your background shows e-commerce, retail-tech or agile team experience
  • Whether your application gives a clear account of your career so far

How to prepare

  • Map each requirement (JavaScript, cloud environments, lifecycle practice, e-commerce, agile) to one CV line with a concrete project behind it
  • Write out your employment history as a short narrative with one lesson per role, since the same story is a reported question later
  • Prepare a specific reason for applying to this retailer, grounded in what you have read about its products, so it can be reused when the question comes up
Bravissimo Ltd Software Engineer candidate reports ↗
02

Remote Interactions

reported

Candidates describe remote discussions that look at technical skills and how you would fit the team. The reported technical questions give the material to rehearse: your definition of good coding practice, your approach to JavaScript development, how to persist the items in an online shopping basket, and how to handle stock transfers between locations. Because the format is a conversation rather than a long coding session, the skill being exercised is explaining a design or a habit clearly in words, with the trade-offs said out loud.

What to demonstrate

  • Technical skills as they come across in a remote conversation
  • Team fit, as reported for this stage
  • Ability to explain technical choices clearly and in a logical order

How to prepare

  • Rehearse a spoken answer on your JavaScript approach: modules, asynchronous code and error handling, testing, and what you would refuse to merge
  • Talk through basket persistence aloud: guest and signed-in baskets, the data stored per line, merging on login, expiry, and what happens when a price or stock level changes
  • Talk through a stock transfer aloud: both sides of the move as one atomic change, an in-transit state, retries that must not double-apply, and an audit trail
Bravissimo Ltd Software Engineer candidate reports ↗
03

On-site Assessment

reported

Candidates report this as the longest and most varied stage, held in person and possibly lasting a full day. Reported formats include group exercises, a written technical test, a solution prepared on the spot to a project brief and then presented, and an office tour. Practical programming exercises and writing code on paper are also mentioned. The mix means three separate skills: producing correct, readable code without an editor, presenting a design with a clear structure, and working with other candidates rather than competing with them.

What to demonstrate

  • Working code written under assessment conditions, on paper or live
  • A solution prepared to a specification and presented clearly, including business impact
  • Collaboration in group exercises
  • Motivation for the company and the quality of your explanation of your own history

How to prepare

  • Write small JavaScript functions by hand (a basket total with quantity limits, a stock move that rejects negative stock) and trace them with a test case before saying you are done
  • Take a one-paragraph brief and practise producing an outline in a fixed structure: constraints, chosen design, one alternative rejected, risks, and what it means for the business
  • Practise a group exercise role: summarise, ask for missing constraints, and credit others' points, rather than monopolising or staying quiet
Bravissimo Ltd Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Answering the basket persistence question with one storage choice and nothing about the shopper's journey

Cover the full lifecycle: a guest basket before login, a signed-in basket, the merge when the two meet, expiry of abandoned baskets, storing item and quantity rather than a frozen price, and what the shopper sees when stock or price changes before checkout.

02

Describing a stock transfer as two independent updates, one subtracting from the source and one adding to the destination

Say the two sides must succeed or fail together, for example in one transaction or through a recorded transfer with an in-transit state. Add idempotent retries so a repeated message does not move stock twice, a rule that stock cannot go negative, and a log of every movement.

03

Staying silent while writing code on paper or in a live exercise

Narrate the plan before writing, name the inputs and edge cases (empty basket, zero or negative quantity, unknown item), and trace one example through your code before saying it is done. Candidates report that explaining the reasoning matters as much as the answer.

04

Giving a motivation answer that would fit any employer, such as praising the culture without examples

Tie your interest to the retail and e-commerce engineering problems candidates describe for this role, and to a concrete experience of your own. Make sure the answer to why this company and the answer on culture are different and not repeated.

05

Handling the group exercise or on-the-spot presentation as an individual performance

In the group, summarise others' points, ask about constraints, and move the discussion forward. For the presentation, use a fixed structure (constraints, design, rejected alternative, risks, business impact) so a partial solution still reads as organised.

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

What are your definitions for good coding practices?

medium
Technical Fundamentals and Coding

What are your definitions for good coding practices?

Approach
  1. Give a short, defensible definition rather than a list of slogans: code is good when another engineer can read it, change it safely and see it fail loudly. Then back each part with a concrete practice.
  2. Readability: intention-revealing names, small functions with one responsibility, early returns instead of deep nesting, and no magic numbers (a named constant such as FREE_DELIVERY_THRESHOLD_PENCE instead of 5000).
  3. Safety to change: automated tests on behaviour at the boundaries (unit tests for pure logic, a few integration tests around I/O), small reviewable pull requests, and formatting and linting enforced by tooling such as ESLint and Prettier so reviews discuss design, not whitespace.
  4. Failing loudly: validate input at system edges, never swallow errors in an empty catch, log with enough context to reproduce, and handle async rejections explicitly.
  5. Name the trade-off: DRY against premature abstraction. I duplicate twice and extract on the third use, because a wrong shared abstraction costs more than two similar functions.
Follow-up
  • How do you get a team to adopt these practices without every review turning into a style argument?
  • When have you knowingly shipped code that broke one of your own rules, and what did you do about it afterwards?
  • Show me a function you would refactor: what would you change first, and how would you prove behaviour did not change?

Can you explain your approach to JavaScript development?

medium
Technical Fundamentals and Coding

Can you explain your approach to JavaScript development?

Approach
  1. Structure the answer around how you write, type, test and ship JavaScript: const by default and let when reassigning (both block-scoped, unlike function-scoped and hoisted var), strict equality (=== never coerces types), and ES modules with small, focused files.
  2. Show you understand the runtime: the event loop runs all queued microtasks (Promise callbacks) before the next macrotask (setTimeout), so heavy synchronous work blocks rendering and I/O; I chunk or move it to a worker.
  3. Async handling: async/await with try/catch at the right level; Promise.all rejects as soon as any input rejects, so I use Promise.allSettled when partial results are acceptable, and I always handle rejections.
  4. Correctness traps relevant to retail code: 0.1 + 0.2 !== 0.3 in floating point, so I hold money as integer pence and format only for display; I avoid mutating shared arrays and objects in place and return new ones instead.
  5. Quality loop: TypeScript or JSDoc types for contracts, ESLint for bug-prone patterns, unit tests with Jest or Vitest, and a build that fails on type or lint errors.
Follow-up
  • What does this log, and why: console.log('a'); setTimeout(() => console.log('b'), 0); Promise.resolve().then(() => console.log('c')); console.log('d');
  • How does this behave in an arrow function compared with a regular function passed as a callback?
  • Three API calls run in parallel and one fails: how do you show the results that succeeded and report the failure?

How would you handle complex data scenarios, such as stock transfers between locations?

medium
Technical Fundamentals and Coding

How would you handle complex data scenarios, such as stock transfers between locations?

Approach
  1. Model stock as a ledger, not a single overwritten number: a stock_movement table (sku, location, delta, reason, transfer_id) and a balance table updated in the same transaction, so on-hand is a fast read and every unit has an audit trail.
  2. Treat a transfer as a state machine: requested, dispatched (decrement source, add to an in-transit location), received (decrement in-transit, increment destination), cancelled. In-transit stock is then counted once and never available at both ends.
  3. Make each step atomic: inside one transaction run UPDATE balance SET qty = qty - n WHERE sku = ? AND location = ? AND qty >= n and check that one row changed, so a concurrent sale at the source cannot drive stock negative; lock rows in a fixed order (for example by location id) to avoid deadlocks.
  4. When the source and destination live in different systems there is no shared transaction: use an outbox table written with the movement, deliver messages at least once, and make consumers idempotent on transfer_id plus step so a retry cannot apply twice.
  5. Edge cases: partial or damaged receipt (record the discrepancy as its own movement, never edit history), cancelling after dispatch, and a scheduled reconciliation comparing ledger sums with physical counts.
Follow-up
  • The destination scans 18 units but 20 were dispatched: how is that recorded, and who sees the difference?
  • Should units in transit count as available for online orders, and what changes if they do?
  • The dispatch message is delivered twice: walk me through why stock is only moved once.

Seven days built from the three reported rounds and the reported questions: coding practice and JavaScript first, then the two data problems, written and presented solutions, motivation and history, and a full mock. PracHub practice questions on concurrent updates and replication lag support the data days.

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 the requirements
  • Write out the three reported stages (Application Review, Remote Interactions, On-site Assessment) and next to each the formats candidates report: remote discussion, group exercises, written test, presentation.
  • List the requirements candidates describe (JavaScript, cloud environments, lifecycle practice, e-commerce, agile) and match each to one project from your own history, marking the gaps.

Deliverable: A one-page map of the three stages and a requirement-to-project table with gaps marked.

02Good coding practice and your JavaScript approach
  • Write your own definition of good coding practice as a short list, each point with a concrete habit: naming, small functions, tests, review, handling errors.
  • Take a messy JavaScript function you have written or found and refactor it, noting the before and after for each of your list points.
  • Prepare a spoken answer on your JavaScript approach covering modules, asynchronous code, error handling and testing, and say it aloud once.

Deliverable: A checklist of your coding practices, one before-and-after JavaScript refactor, and a written outline of the spoken answer.

Practice prompt ↗Practice prompt ↗
03Design: persisting a shopping basket
  • Sketch the guest basket and the signed-in basket and the merge between them when the shopper logs in.
  • Define the stored data per line (item, quantity, added time), when price is read, and the expiry rule for abandoned baskets.
  • List three failure cases (two tabs editing the same basket, an item going out of stock, the store being unavailable) and write what the shopper sees in each.

Deliverable: A one-page basket design with a data model, the login merge flow and a failure-case table.

Practice prompt ↗
04Stock transfers between locations
  • Write the transfer as a single atomic change: reduce the source, increase the destination, reject a move that would leave negative stock, and record it in a movement log.
  • Add an in-transit state and an idempotency key so a retried request does not apply twice.
  • Work the PracHub practice question on detecting a concurrent edit in an update path, and apply its idea to two simultaneous transfers from the same location.

Deliverable: A written transfer procedure with its data model, a worked retry case and a solved concurrent-edit practice question.

Practice prompt ↗Practice prompt ↗
05Written code and a solution built to a brief
  • Write by hand, without an editor, two small JavaScript functions (a basket total with quantity limits and a stock move check) and trace each with a normal case and an edge case.
  • Take a one-paragraph brief you invent about syncing stock between locations and outline a presentation in a fixed structure: constraints, design, rejected alternative, risks, business impact.
  • Work the PracHub practice question on replication lag and relate it to showing stale stock to shoppers.

Deliverable: Two handwritten functions with traces, a one-page presentation outline, and the replication-lag practice answer.

Practice prompt ↗
06Motivation, culture and career history
  • Write the answer on why you want to join this retailer specifically, with at least two points that could not be said about another employer.
  • Write a separate answer on culture and business model, using your own experience as the evidence, and check it does not repeat the first.
  • Prepare your employment history in order, each role with scope, decision, result and lesson, and rehearse it aloud; add a group-exercise role you can play.

Deliverable: Three written answers (why this company, culture and business model, career history) and a short note of your group-exercise approach.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Full dry run
  • Run a mock in the reported order: walk through your CV, answer the coding practice and JavaScript questions, then talk through basket persistence and stock transfers.
  • Finish with a presentation of a solution to a new brief and a spoken version of your motivation answer, then write down the two questions you most want to ask the team.

Deliverable: A completed mock with notes on weak spots and two questions to ask the team.

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

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

The behavioral questions candidates report are about motivation and background: why this company, what attracts you to its business model and culture, and what you learned across your previous roles. For a Software Engineer, the strongest answers use concrete work from your own history and connect it to the retail and e-commerce engineering described for the role.

What draws you to our company culture and business model?

medium
Behavioral and Role Motivation

What draws you to our company culture and business model?

Approach
  1. Treat it as a question about the business model, so show you understand it first. Describe in your own words how an online retail operation depends on its software, using what you have read about the products and the website journey, and what you could not tell from outside.
  2. Link the model to the engineering problems that follow from it: baskets that must survive between visits, stock figures that must be right across locations, and data that must flow between systems. This shows you can connect the work to the business, which is the advice candidates relay.
  3. For culture, avoid claiming facts you have not verified. Speak from what you have seen (reported collaborative development, group exercises, an office tour) and from what you want in a team: shared code review, working with non-technical colleagues, steady delivery.
  4. Give one example from your own past that proves the preference: a team habit that worked well for you, with a result. Do not rely on adjectives like 'friendly' or 'innovative'.
  5. The mistake that sinks this answer is flattery that could apply to any company. Test every sentence: if you could say it about another retailer unchanged, replace it with something specific.
Follow-up
  • What would worry you about working here, or what would you want to find out in your first month?
  • Which part of the website journey, from browsing to checkout, would you most like to improve, and why?
  • How does this team differ from the one you work in now, and what would you carry across?

Can you walk us through your employment history and the key lessons learned in previous roles?

medium
Behavioral and Role Motivation

Can you walk us through your employment history and the key lessons learned in previous roles?

Approach
  1. Choose a spine and keep to it: either oldest role first or most recent role first. For each job give four things in order: scope in one sentence, one decision you owned, the result, and the lesson you took from it.
  2. Pick two or three lessons that build towards this role and say how each changed your behaviour, for example how a production incident led you to add tests around a data update, or how working with a non-technical stakeholder changed how you explain choices.
  3. Where your jobs relate to the requirements (JavaScript, cloud environments, lifecycle practice, e-commerce or retail, agile teamwork), name that overlap briefly and with a concrete project, not a list of technologies.
  4. Explain moves and gaps honestly and without blame: what you were looking for, what you learned, what you chose next. Keep it short and let the conclusion lead into why you want this role.
  5. The usual failure is reading the CV aloud with no lessons. Another is spending most of the time on the earliest job. Rehearse so the recent roles get the most time and each lesson has evidence behind it.
Follow-up
  • Which of those lessons has most changed how you write or review code?
  • Why did you leave your last role, and what did you want from the next one?
  • Tell me about a decision in one of those roles that you would now make differently.

Tell callers you do not own that their integration breaks

medium
deprecationcompatibilitystakeholders

A field in a write endpoint's response must change shape. You own the endpoint; you do not own the four internal callers or the outbound webhook consumers who read it. Describe a deprecation you were responsible for: what you shipped first, how you established who was actually reading the field, the window you gave and what set its length, what you did about the consumer who never moved, and how you decided removal was safe. Name the signal you used, not the announcement you sent.

Approach
  1. Establish the reader set empirically rather than from a wiki of owners: per-field usage counters keyed by principal, or access logs attributed to a consumer. State the blind spot of whichever you pick, since a consumer that reads the field only on a monthly job will not appear in a week of logs.
  2. Ship additive first. Populate the new field alongside the old one so no reader is forced to move, which is also what keeps a rolling deploy safe, because old and new instances answer the same requests at the same time and a rollback must still find the old shape present.
  3. Set the window from the slowest legitimate consumer's release cadence, not from your calendar, and decide separately what to do for a consumer with no release process at all, such as an external webhook endpoint you can only email.
  4. Convert silence into evidence before you rely on it: a short, low-traffic removal window that makes a still-dependent consumer fail visibly and loudly while you are watching, rather than at three in the morning after you have moved on.
Follow-up
  • How would you detect a consumer that reads the field only during a monthly export?
  • One caller refuses to move and has a commercial relationship behind it. What changes in your plan and what does not?
  • 01

    Why do you want to join Bravissimo Ltd specifically?

  • 02

    What draws you to our company culture and business model?

  • 03

    Can you walk us through your employment history and the key lessons learned in previous roles?

  • 04

    Tell me about a time you explained a technical decision to someone outside engineering. What did you leave out, and how did you check they understood?

  • 05

    Describe a time you worked in a group where the task was unclear. What did you do to move it forward, and what did you do for the group?

PracHub preparation framework ↗
How long does the Bravissimo Ltd interview process take?

Candidates report three stages (Application Review, Remote Interactions and an On-site Assessment) over roughly 3-5 weeks. They also mention that timelines can shift and feedback can be delayed, so keep your communication with the recruitment team polite and brief while you wait.

Bravissimo Ltd Software Engineer candidate reports ↗
How should I prepare for the technical tests?

Candidates mention written technical tests and writing code on paper. Practise JavaScript without an editor, then work through the two reported data problems: persisting a shopping basket and handling stock transfers between locations. In both, say your reasoning aloud and check your code with an edge case before finishing.

Bravissimo Ltd Software Engineer candidate reports ↗
How do I handle the culture and motivation questions?

Candidates report questions on why you want to join, what draws you to the culture and business model, and your employment history, and they are advised to show real interest in the business. Prepare separate answers for each: read about the products, name the engineering problems of online retail, and support each claim with something from your own experience.

Bravissimo Ltd Software Engineer candidate reports ↗
What topics do candidates say are tested?

The reported topics are JavaScript, persisting data such as a shopping basket, preparing a technical solution to a specification, a written coding test and practical programming exercises. The requirements candidates describe also list cloud environments and software development lifecycle practice, so be ready to discuss them with examples.

Bravissimo Ltd Software Engineer candidate reports ↗
What happens at the on-site assessment?

Candidates report a mix that can include group exercises, written technical tests, and a solution prepared on the spot to a brief and then presented. Sessions can last a full day and may include an office tour. Prepare a fixed presentation structure, practise supporting other people in a group, and keep your explanations focused on what the design means for the business.

PracHub Software Engineer practice ↗
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.