Aubay Spain · Software Engineer
Updated · 2026-10-02

Aubay Spain Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Aubay Spain is described by candidates as the Spanish arm of an international technology consultancy. Its engineers work on enterprise application systems, modernisation of legacy software and custom platform integrations for clients in banking, telecommunications, insurance and enterprise technology, in Spain and elsewhere in Europe. A Software Engineer works with business unit managers, tech leads and client engineering teams, and the stack follows the project: Java, .NET/C# or Kotlin on the backend, Angular and TypeScript on the frontend, plus enterprise platforms such as Salesforce and SailPoint IdentityIQ, or API architecture work. Reported day-to-day tasks include building microservices and REST APIs, writing SQL queries and stored procedures against SQL Server, MySQL or PostgreSQL, joining design reviews, refactoring legacy code and writing unit and integration tests.

This guide is for candidates applying to Aubay Spain as a Software Engineer, from junior profiles with a strong academic base to mid-level, senior and tech lead profiles, which is the range candidates describe. It covers the four reported rounds, the reported questions on OOP and language mechanics, SQL and persistence, architecture and microservices, project experience and communication, and a 7-day plan. It does not cover the Salesforce or SailPoint specialist tracks in depth.

Candidates report four rounds over roughly 3-5 weeks: HR Screening, Online Technical Assessment, Technical Validation Interview and Client-Specific Interview. The last stage is reported as depending on the client placement.

Coding tests / programming quizzesTechnical interviewsRecruiter screening (HR interview)

45 min read

Browse Software Engineer questions

See the practice prompts

1Candidate experiences ↗Read their reports
27Practice promptsAcross five skill areas

Aubay Spain is a consultancy, so the job is shaped by whichever client project you are matched to, and the language and framework change with it. Candidates list Java, .NET/C#, Kotlin, Python, C and TypeScript/Angular as the languages that come up. Pick one primary language you can write fluently under a timer and be ready to say so plainly during the first call, because candidates report that stating your technical preferences early helps the recruiter match you to an opportunity.

The reported questions fall into five families. Core OOP and language mechanics covers the four OOP principles, abstract classes versus interfaces, access modifiers, how references and memory allocation work in Java or .NET, and binary representation with bitwise operations. Databases covers joins, indexes and B-trees, primary and foreign keys, ACID and isolation levels, and a GROUP BY / HAVING / subquery query. Architecture covers design patterns, REST, monolith versus microservices, cross-cutting concerns and data consistency across services. The last two families are project history and communication. Candidates describe the online assessment as logic, OOP, algorithm and database questions, so the first two families are the ones to rehearse under a clock.

Seniority changes how you should spend your time. Candidates describe positions from junior (0-2 years, academic foundations) up to senior and tech lead (3-8+ years, architecture ownership). A junior profile gains most from precise, example-backed answers on OOP, SQL and one language runtime. A senior profile also needs two or three project stories in which you made and defended architectural decisions, since the technical validation stage is reported to revolve around past projects and assessment results.

Language and client readiness are part of the loop as candidates describe it: an English self-introduction at the recruiter stage, an English assessment alongside discussions in Spanish, and a possible final conversation with someone from the client. Practise explaining a trade-off, such as monolith versus microservices or why you chose an index, in both languages. If cloud (AWS, Azure), CI/CD, automated testing, Salesforce or SailPoint IdentityIQ appears on your CV, expect to be asked about it, since candidates list these as nice-to-have experience.

01

HR Screening

reported

Candidates describe a conversational call with a recruiter that covers your career history, familiarity with the tech stack, salary expectations and a short check of your spoken English. One report says it checks your programming preferences rather than asking you to code. The practical goal is to leave the recruiter with a clear picture of which languages and project types fit you, so be specific: name your primary language, the frameworks you have shipped with, and the kinds of client work you want.

What to demonstrate

  • Career history, academic training and the projects you have worked on
  • Familiarity with the tech stack and stated language preferences
  • Spoken English, through a short self-introduction
  • Salary expectations as they relate to the opportunity

How to prepare

  • Write and rehearse an English self-introduction that names your primary language, one or two frameworks, and one project outcome, then say the Spanish version too.
  • State your preferred language and the stacks you would accept before the call, so you can answer without hedging.
  • Prepare an answer on where you want to be in two to three years and which technical domains you want to master.
  • Decide your salary expectations and notice period in advance, and ask what the next stages involve.
Aubay Spain Software Engineer candidate reports ↗
02

Online Technical Assessment

reported

This is an automated test on a platform such as CodinGame or HackerRank, or a custom timed quiz. Candidates report logic problems, object-oriented concepts, algorithm challenges and database queries, with per-question time limits. Because the stage is timed and automated, the skill is reading the constraints carefully, choosing a simple correct approach, and finishing working code in the language you are strongest in.

What to demonstrate

  • Working code under the platform's time limits
  • Logic and algorithm problem solving
  • OOP concepts and language syntax
  • Writing correct SQL queries

How to prepare

  • Do timed practice on CodinGame-style and HackerRank-style problems in your primary language, and read every constraint before you write code.
  • Drill fast answers on access modifiers, inheritance, interfaces versus abstract classes and what happens on the stack and the heap.
  • Practise SQL that combines joins, GROUP BY, HAVING and a subquery, and check your result against edge cases such as empty groups and NULLs.
  • Revisit binary representation and bitwise operators (AND, OR, XOR, shifts) so bit-level logic does not cost you time.
Aubay Spain Software Engineer candidate reports ↗
03

Technical Validation Interview

reported

Candidates describe an interview with a Tech Lead or Engineering Manager, and in other reports a business unit director, that revisits your assessment results and goes through past projects. Reported topics are framework architecture, system design principles, microservices and how you implemented things in earlier work. Come ready to explain why your answers in the assessment were right, to correct any that were not, and to defend design decisions from your own projects with trade-offs.

What to demonstrate

  • How you explain and correct your own online assessment answers
  • Depth in framework architecture, system design principles and microservices
  • Ownership of decisions in past projects
  • Clarity when explaining technical reasoning aloud

How to prepare

  • Re-solve your assessment problems afterwards so you can explain the approach and its complexity, and any mistake you made.
  • Prepare a diagram and a short narrative of one complex project: your role, the stack, the data model and two architectural decisions with alternatives you rejected.
  • Prepare the monolith-to-microservices trade-off, service boundaries, an API gateway, centralised configuration and asynchronous messaging, with a concrete example of each.
  • Rehearse a production bug or performance story with the exact diagnostic steps, and a short account of how you apply dependency injection in your framework.
Aubay Spain Software Engineer candidate reports ↗
04

Client-Specific Interview

reported

Candidates describe a final interview, depending on the placement, with a stakeholder from the client, to confirm that you and the specific project are a good match. It follows the internal technical stages, so the emphasis shifts from fundamentals to communication, project context and expectations on both sides. Prepare to describe your experience in terms of the client's domain and to ask good questions about the engagement.

What to demonstrate

  • Fit between your experience and the specific client project
  • Communication with client-side technical or business contacts
  • Adaptability to existing codebases and established team workflows

How to prepare

  • Use what the recruiter told you about the client's sector (banking, telecom, insurance or enterprise technology) to prepare two relevant examples from your experience.
  • Prepare to explain a technical trade-off in plain language to a non-technical manager, in English and in Spanish.
  • Have your answer ready on changing scope or ambiguous requirements raised by client management, with a concrete story.
  • Prepare questions about project setup, team structure, the client's domain and hybrid or remote arrangements.
Aubay Spain Software Engineer candidate reports ↗

1 candidate reports. Individual accounts describe a particular role and hiring cycle.

Software Engineer

Aubay Spain Software Engineer interview experience: Java, Spring, SQL, and Docker

Technical Screen → HR ScreenOutcome: offer

The process began with a formal HR discussion of my background, motivations, and the professional projects I wanted next. I also received an overview of the company and its opportunities. Afterwards, I took an in-office technical test in Boulogne-Billancourt. That was the difficult part. It covered Java, Spring, SQL, and Docker backend fundamentals through knowledge checks, practical exercises, a…

Read full experience

PracHub editorial advice for the preparation topics above.

01

Defining abstract class versus interface from memory with no deciding example

Give the contrast in your language. Java and C# classes extend one base class but implement many interfaces, and an interface defines a contract while an abstract class can hold shared state and partial behaviour. Then name a situation where you chose each, and mention that default interface methods blur the line.

02

Rushing a timed CodinGame or HackerRank test and missing a constraint or edge case

Read the statement and limits fully, run the sample cases, then test an empty input, a single element and the largest size before moving on. Write a simple correct solution first and tune it only if time remains.

03

Writing SQL that gives plausible but wrong numbers, such as filtering an aggregate in WHERE or turning a LEFT JOIN into an inner join

Use WHERE for row filters and HAVING for filters on aggregates. Put conditions on the optional side of a LEFT JOIN in the ON clause, and check for one-to-many joins before summing. Explain the same query with EXPLAIN and say which index it uses.

04

Walking through a project as a list of technologies with none of your own decisions

Prepare a story for one project with your role, the data model, two decisions you made and what you rejected, and one failure with its fix. Be ready to defend each choice in the architecture discussion of the technical validation interview.

05

Answering monolith versus microservices as if microservices are always the better option

Talk about the costs as well as the benefits: network calls, distributed data consistency, deployment and monitoring overhead, and when a monolith with clean modules is enough. Tie it to a legacy modernisation example, since modernising legacy systems is a reported part of the work.

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

24 technical prompts0 include a worked solution

Explain the core principles of Object-Oriented Programming (OOP) and give practical examples of encapsulation,

medium
Core Object-Oriented Programming & Langu

Explain the core principles of Object-Oriented Programming (OOP) and give practical examples of encapsulation, inheritance, polymorphism, and abstraction.

Approach
  1. Encapsulation: keep state private and let methods enforce its rules, e.g. an Account whose private balance changes only through withdraw(), which rejects an overdraft; a getter for an internal list returns an unmodifiable view, not the list itself.
  2. Inheritance: use it for a true is-a relationship (SavingsAccount extends Account) and state the Liskov rule: a subclass must work wherever the parent is expected. Name the cost (fragile base class) and when you would use composition instead.
  3. Polymorphism: separate compile-time overloading (resolved by the argument types) from runtime overriding (dynamic dispatch on the object's actual type), e.g. looping over a List and calling pay() on each.
  4. Abstraction: callers depend on what a component does, not how, e.g. a Notifier interface with Email and SMS implementations, so the calling code never changes when a channel is added.
Follow-up
  • Give an example where you would replace inheritance with composition, and say why.
  • Show a Liskov violation (the Square extends Rectangle case) and how you would fix it.
  • How does the compiler pick between two overloads when one takes int and the other takes long or Integer?

How do access modifiers (`public`, `private`, `protected`, default) enforce data hiding and encapsulation?

medium
Core Object-Oriented Programming & Langu

How do access modifiers (public, private, protected, default) enforce data hiding and encapsulation?

Approach
  1. List the Java levels precisely: private (the class only), package-private by default (same package), protected (same package plus subclasses), public. Note that Java protected is wider than people expect because it includes package access.
  2. Give the C# set as well, if C# is your language: private (the default for class members), protected, internal (same assembly, the default for top-level types), protected internal, private protected, public.
  3. Explain how this hides data: when the fields are private, only the class's own methods can write them, so a validated setter or constructor keeps the invariant true for every caller.
  4. Name the leak that private does not stop: returning a reference to an internal mutable collection or Date lets callers change state. Return List.copyOf or an unmodifiable view, or a defensive copy.
  5. Access modifiers are a compile-time design boundary, not a security boundary: reflection can bypass them, though the Java module system (strongly encapsulated JDK internals since Java 16/17) restricts that.
Follow-up
  • Can an overriding method in Java reduce the visibility of the method it overrides? Can it widen it?
  • What are private constructors used for?
  • Can an outer class read a private field of its nested class in Java?

Explain how object reference and memory allocation operate under the hood in managed runtime environments like

medium
Core Object-Oriented Programming & Langu

Explain how object reference and memory allocation operate under the hood in managed runtime environments like Java or.NET.

Approach
  1. Separate the stack and the heap: each thread's stack frames hold local variables, primitives and references; objects created with new live on the heap. In C#, struct values are stored inline (in the frame or inside their containing object), while class instances go on the heap.
  2. Explain passing: Java passes everything by value, including the reference, so reassigning a parameter does not affect the caller but mutating the object does. C# adds ref/out for real pass-by-reference.
  3. Describe allocation and collection: HotSpot allocates by bumping a pointer in a thread-local allocation buffer, which is why allocation is cheap. The GC finds live objects by reachability from roots (stack references, static fields), and generational collectors sweep the young generation often and promote survivors. .NET uses generations 0/1/2 plus a Large Object Heap for objects of 85,000 bytes or more.
  4. Mention JIT details as a bonus: escape analysis can remove an allocation for an object that never leaves a method.
  5. Leaks still happen in managed runtimes: static collections that only grow, listeners never removed, caches without eviction. You find them with a heap dump (jcmd GC.heap_dump, dotnet-gcdump) and by looking at what retains the objects.
Follow-up
  • Why can Integer a = 127, b = 127 compare equal with == while 128 does not?
  • What is the difference between a StackOverflowError and an OutOfMemoryError, and what causes each?
  • How do try-with-resources or IDisposable relate to garbage collection?

What are standard binary number representations, and how do low-level bitwise operations work in foundational

medium
Core Object-Oriented Programming & Langu

What are standard binary number representations, and how do low-level bitwise operations work in foundational programming algorithms?

Approach
  1. Representation: signed integers use two's complement, so -x equals ~x + 1 and an n-bit type covers -2^(n-1) to 2^(n-1)-1. Java int arithmetic overflows silently (Math.addExact throws). Floats follow IEEE 754 (sign, exponent, mantissa), which is why 0.1 + 0.2 != 0.3.
  2. Operators: & | ^ ~ <<, and the two right shifts. Java's >> extends the sign and >>> fills with zeros; in C#, >> on int is arithmetic and on uint is logical, and C# 11 added >>>.
  3. Idioms worth writing from memory: x & 1 for parity; x & (x - 1) clears the lowest set bit, so x > 0 && (x & (x - 1)) == 0 tests for a power of two; x & -x isolates the lowest set bit; Kernighan's popcount loop runs once per set bit.
  4. Algorithmic uses: XOR every element to find the single unpaired number in O(n) time and O(1) space; enumerate all subsets of n items as the bitmasks 0 to 2^n - 1; pack boolean flags or permissions into one int.
  5. Edge cases: Java masks an int shift distance to 5 bits, so 1 << 32 == 1; -Integer.MIN_VALUE and Math.abs(Integer.MIN_VALUE) both return Integer.MIN_VALUE.
Follow-up
  • Count the set bits of every number from 0 to n in O(n). (bits[i] = bits[i >> 1] + (i & 1))
  • Swap two variables with XOR. Why does it fail if both refer to the same memory location?
  • How would you store and check a set of user permissions as bit flags?

How do database transactions guarantee ACID properties, and how do isolation levels mitigate concurrency issue

medium
Databases & SQL Persistence

How do database transactions guarantee ACID properties, and how do isolation levels mitigate concurrency issues?

Approach
  1. Map each letter to a mechanism. Atomicity: the undo/write-ahead log lets a failed transaction roll back completely. Consistency: constraints hold at commit. Isolation: locking (two-phase locking) or MVCC snapshots. Durability: the commit is acknowledged only after the log is flushed to disk.
  2. Name the anomalies in order: dirty read, non-repeatable read, phantom read, plus lost update and write skew, which the standard levels do not spell out.
  3. The levels: Read Uncommitted, Read Committed, Repeatable Read, Serializable. Know the defaults: Read Committed in PostgreSQL and SQL Server, Repeatable Read in MySQL InnoDB. PostgreSQL's Repeatable Read is snapshot isolation and also prevents phantoms, and its Read Uncommitted behaves like Read Committed.
  4. Fixing a lost update without going to Serializable: an atomic UPDATE stock SET qty = qty - 1 WHERE id = ? AND qty > 0, SELECT ... FOR UPDATE, or optimistic locking with a version column (JPA @Version) that fails if the row changed.
  5. The trade-off: higher isolation means more blocking or more aborted transactions (serialization failures), so the application needs a retry loop and short transactions.
Follow-up
  • Describe write skew (two on-call doctors both going off call) and the isolation level that prevents it.
  • How does the database detect and resolve a deadlock, and what do you do in the application?
  • With a framework-managed transaction such as Spring's @Transactional, why does calling the annotated method from the same class skip the transaction?

The plan follows the four reported rounds and the five question families candidates report: OOP and language mechanics, SQL, architecture, project stories and communication. Days 2 to 4 build technical fluency under a clock, and days 5 to 7 prepare the discussion rounds and the client stage.

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
01Recruiter call and bilingual introduction
  • Write your English self-introduction (background, primary language, one project outcome) and record yourself saying it, then repeat in Spanish.
  • Write a short answer on your career goals for the next two to three years and the technical domains you want to master.
  • List your primary language, other languages you can use, and the project types you prefer, plus your salary expectations and notice period.

Deliverable: A written and recorded English introduction, a Spanish version, a career-goals answer and a one-page stack and preference sheet for the recruiter call.

Practice prompt ↗Practice prompt ↗
02OOP and language mechanics
  • Write a short Java or C# example that shows encapsulation, inheritance, polymorphism and abstraction in one small domain, such as payments or accounts.
  • Write an abstract class and an interface for the same problem, and decide in one paragraph which you would choose and why.
  • Explain access modifiers and how references, the stack and the heap work for an object in Java or .NET, and where garbage collection fits in.
  • Practise binary representation (two's complement) and write small bitwise exercises: check a bit, count set bits, swap with XOR.

Deliverable: One code example covering the four OOP principles, an abstract-versus-interface decision note, a written explanation of references and memory, and a worked set of bitwise exercises.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
03SQL and relational persistence
  • Build a small schema with primary and foreign keys in PostgreSQL or MySQL and write inner, left and full outer join queries over it, noting which rows each one keeps.
  • Write one query that uses GROUP BY, HAVING and a nested subquery, then rewrite it with a CTE or a join.
  • Run EXPLAIN before and after adding an index, and write down what changed, how a B-tree index is structured and what it costs on writes.
  • Write out ACID and each isolation level with the anomaly it prevents (dirty read, non-repeatable read, phantom).

Deliverable: A schema with working join and aggregate queries, a before-and-after EXPLAIN comparison, and a one-page ACID and isolation-level sheet.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
04Timed assessment simulation
  • Run a timed session on CodinGame-style or HackerRank-style practice in your primary language, reading all constraints before coding.
  • Include one mixed set: a logic or algorithm problem, a few OOP multiple-choice items and one SQL query, all under a clock.
  • Review every miss: write the cause (misread constraint, edge case, syntax, SQL logic) and the fix.

Deliverable: A scored timed session log with a cause and fix written for each miss, and a list of the three weakest topics to revisit.

Practice prompt ↗Practice prompt ↗
05Architecture, REST and microservices
  • Write one example each for Singleton, Factory, Dependency Injection and Observer in your language, and note where each helps and where it causes problems.
  • Design a small REST API for one resource: URIs, methods, status codes, how state is kept out of the server, and how clients retry safely.
  • Write a monolith versus microservices comparison for modernising a legacy application, covering service boundaries, an API gateway, shared configuration and messaging.
  • Describe how you handle logging, authentication and error handling across services, and how you keep data consistent between services with a message broker.

Deliverable: Four pattern examples, a one-resource REST API spec, a monolith-to-microservices trade-off page and a note on cross-cutting concerns and consistency.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Project stories for the technical validation interview
  • Prepare a diagram of your most complex project and a narrative covering your role, the stack, the data model and two architectural decisions with the alternatives you rejected.
  • Write the production bug or performance bottleneck story with the diagnostic steps in order: symptom, hypothesis, measurement, fix, prevention.
  • Write a short answer on how you choose libraries, frameworks and tools for a new feature, and a story about quickly learning an unfamiliar technology.
  • Write your position on balancing refactoring against a delivery deadline, with a real example, then answer the debugging and outage practice questions aloud.

Deliverable: A project diagram with narrative, a production incident write-up, a tool-selection answer, a learning-fast story and a refactoring-versus-deadline answer, plus spoken attempts at the two practice questions.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Client stage and full rehearsal
  • Write your answer to communicating a technical trade-off to a non-technical manager, in English and Spanish.
  • Write your changing-scope story using this order: restate, size, offer options, confirm in writing, outcome.
  • Prepare questions for the client about project setup, team structure, domain and hybrid or remote work.
  • Do a full spoken rehearsal in sequence, from the English introduction through the OOP and SQL answers to the project walkthrough, and log what fails.

Deliverable: A bilingual trade-off explanation, a written scope-change story, a list of client questions and a rehearsal log with the weakest answers marked for a final pass.

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

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

Candidates report that behavioural and background questions cover project history, a production bug, learning an unfamiliar technology quickly, balancing quality against deadlines, explaining technical trade-offs to non-technical people, handling changing client requirements and career goals, with an English introduction at the recruiter stage. Prepare four or five stories that you can reuse across these prompts, each with your own decision, what you measured and the result, and practise telling them in English as well as Spanish.

How do you handle changing scope or ambiguous project requirements requested directly by client management?

medium
Communication & Multilingual Competency

How do you handle changing scope or ambiguous project requirements requested directly by client management?

Approach
  1. Choose a story from real client or stakeholder work where the requirement was vague or changed after you had started, and where you personally decided how to respond. A story where you simply carried out the change shows nothing.
  2. Show the sequence. First I restate the requirement in writing and list what is unclear; I turn each vague phrase into something testable, such as a number, an example input or an acceptance criterion; I confirm those with the person who owns the decision before I build further.
  3. For a change of scope, size it before you answer: what it costs, which delivered work it touches, and what would move. Then offer options (add it and move the date, swap it for something already planned, or defer it) instead of a flat yes or no, and record the agreement through the project's change process.
  4. Say how you protected the work already done, for example small increments, tests around the code the change touches, and a short demo so the client sees the effect early. Close with the outcome and one thing you would do differently.
  5. Avoid two mistakes: silently absorbing the change until the deadline slipped, and blaming the client. Example phrasing in your own voice: "I wrote back the three options with the effort for each, and the client chose the second."
Follow-up
  • What did you do when the client changed their mind again after you had built the first version?
  • How did you decide which requests to push back on and which to accept?
  • What would you do if the client contact and your own tech lead gave you conflicting direction?

Narrate an outage you owned from page to postmortem

hard
incident responseblast radiuspostmortems

Pick an incident you personally drove, ideally one where writes were affected rather than reads. In six to eight minutes: state the symptom as it first appeared on a dashboard, the blast radius you established before you knew the cause, the mitigation you applied and when, the mechanism you eventually proved, and the follow-up that would prevent a repeat. Bring numbers: error rate, tenants affected, minutes to mitigate, minutes to resolve. If you cannot name what you measured, choose a different incident.

Approach
  1. Open on the signal rather than the cause: which metric at which percentile moved, on which service, at what time, so the listener follows the same evidence you had rather than a conclusion you already reached.
  2. Separate mitigation from diagnosis out loud. State what you did to stop the bleeding (flag off, shed traffic, drain a lease, roll back a deploy) and say plainly that you did it before the mechanism was known, because those are two jobs with different deadlines.
  3. Establish blast radius in countable terms: how many tenants, how many writes, and crucially whether the effect was loss or only delay. An append-only revision table or a pending outbox row means the change survived and the projection was merely behind, which is a repair rather than a data-loss incident.
  4. Prove the mechanism instead of asserting it. Name the trace span that grew, the plan that flipped to a sequential scan, the lease that expired, plus one alternative you ruled out and the signal that stayed flat while you ruled it out.
Follow-up
  • What would you do differently in the first five minutes, given the same dashboard and no more information?
  • Which follow-up action did you deliberately not take, and why was dropping it the right call?

Reverse your own decision and price the reversal

medium
reversibilitymeasurementmigrations

Describe a technical decision you made and later reversed. Pick one that cost something: a service you split and merged back, a cache you added and removed, an index you created that pushed the planner onto a worse plan, a projection you rebuilt from scratch. State what you believed when you decided, the measurement that changed your mind, how long the wrong version ran in production, and what the reversal cost in migrations, dual writes, and a deprecation window for callers you did not own.

Approach
  1. State the original rationale without irony, in the version you would still defend given what was known then. If it is not defensible, the story is about carelessness rather than judgement, and a different example serves you better.
  2. Give the measurement that moved with a before and after: the p99 that did not improve, the cache hit rate that sat at 40%, the plan that flipped to a sequential scan once the table passed a size you can name.
  3. Cost the reversal in steps, not adjectives: expand-and-contract deploys, the dual-write window, the callers who had to be notified, the rows already written in the wrong shape that had to be backfilled or abandoned.
  4. Distinguish reversal from rewrite by naming what you kept. Most good reversals preserve the schema or the interface and undo one decision inside it, which is also why they were affordable.
Follow-up
  • What in that decision was irreversible, and did you know it was irreversible when you made it?
  • How did you tell the people who had already built on top of the original decision?
  • 01

    How do you handle changing scope or ambiguous project requirements requested directly by client management?

  • 02

    How do you balance code quality and refactoring against tight delivery deadlines?

  • 03

    How do you communicate complex technical decisions or trade-offs to non-technical business stakeholders?

  • 04

    Describe a challenging bug or performance bottleneck you encountered in production and detail the exact steps you took to diagnose and resolve it.

  • 05

    Tell me about an academic or professional project in which you had to master an unfamiliar technology or framework quickly.

  • 06

    What are your career development goals for the next two to three years, and what technical domains do you want to master?

PracHub preparation framework ↗
How technical is the HR screening round?

Candidates describe it as a conversation about your career history, academic training, tech stack familiarity, salary expectations and basic English, with a quick check of your programming preferences rather than live coding. Prepare an English introduction, your primary language and your expectations.

Aubay Spain Software Engineer candidate reports ↗
What format does the online technical assessment take?

Candidates report automated tests on platforms such as CodinGame or HackerRank, and custom timed quizzes, covering logic, OOP concepts, language syntax, algorithm challenges and SQL queries, with per-question time limits. Practise in your primary language and read every constraint before coding.

Aubay Spain Software Engineer candidate reports ↗
Will I have an interview with the client?

Candidates report a final interview with a client stakeholder in many consultant placements, to confirm fit for the specific project, and describe it as depending on the assignment. Prepare examples relevant to the client's sector and questions about the project setup.

Aubay Spain Software Engineer candidate reports ↗
How much English do I need?

Candidates report an English assessment alongside discussions in Spanish, starting with a short self-introduction at the recruiter stage. Practise summarising your experience and explaining architecture trade-offs in English, and moving between the two languages without losing your thread.

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

Candidates report four rounds over roughly 3-5 weeks. The total depends on whether you are hired into a business unit or matched to an active client project, and on how quickly you finish the assessment.

Aubay Spain Software Engineer candidate reports ↗
What topics should I study first?

Start with OOP and language mechanics (the four principles, abstract classes versus interfaces, access modifiers, memory), then SQL (joins, indexes, ACID, a GROUP BY / HAVING query), then design patterns, REST and microservices. Add two or three project stories. These are the families candidates report most.

Aubay Spain Software Engineer candidate reports ↗
Which programming language should I use?

Candidates list Java, C#/.NET, C, Python and TypeScript/Angular, and the project decides which one you use. Choose the language you are strongest in for the timed assessment, and state your preferences and fluencies clearly in the recruiter call.

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.