Ayesa · Software Engineer
Updated · 2026-10-02

Ayesa Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Candidates describe Ayesa as an engineering consultancy that also delivers technology solutions. Software engineers there build and maintain business software and digital systems for clients in public administration, energy, transport and commercial sectors; reported examples include large public-administration systems, utilities management platforms and custom enterprise applications. The work is organised by project: engineers join teams with project managers, systems analysts, architects and client stakeholders, write application logic, set up database tables, build API endpoints, fix defects found in testing or production, and take part in code reviews, documentation and status updates. Some engagements involve modernizing legacy applications or integrating them with other systems.

This guide is for candidates applying to Ayesa as a Software Engineer, including recent graduates who will lean on a university project. It covers the three reported rounds, the backend, SQL and API topics candidates report, the project walk-through questions, and the behavioral questions about unfamiliar stacks, reporting to a project manager, prioritisation and tight client schedules.

Candidates report three rounds over roughly three to five weeks: an HR screening, a technical interview that may include a short practical exercise, and a final discussion with a senior engineering manager about staffing and contract details.

Technical interviewing (Q&A)Coding challenges / pruebas de programaciónExperiencia en proyectos (explicar trabajos)

36 min read

Browse Software Engineer questions

See the practice prompts

18Practice promptsAcross five skill areas

The reported questions are about practical engineering rather than puzzles. They fall into three groups: framework and database knowledge (data access layers in .NET or similar technologies, table design, ORM versus direct SQL, REST versus SOAP, error handling and logging across tiers), questions about your own past project (scope, stack choice, hardest problem, late requirement changes, the SDLC you followed), and behavioral questions about new stacks, reporting to a project manager, prioritising tickets and working with client technical teams. Preparation therefore means having working answers on a small set of backend and database topics, plus two or three projects you can describe down to the schema and endpoint level.

The requirements candidates describe list object-oriented languages such as C# on .NET or Java, SQL databases such as SQL Server, PostgreSQL or Oracle, and familiarity with REST APIs. Topics reported as less common include legacy system integration, VBA automation scripts, asynchronous messaging queues, Azure or AWS deployment, Docker, Git branching strategies and CI/CD pipelines. Treat the first list as the core of your preparation and the second as breadth to be able to mention honestly if you have touched it.

Candidates also report being asked to explain their specific contribution to database schemas or API endpoints, so vague team-level answers are a risk. For each project, prepare the tables you designed and why, one endpoint you wrote and how it validated input and handled failure, one bug you diagnosed, and what changed when requirements moved. Because the final conversation is reported to cover staffing alignment and contract details, also prepare questions about the project domain, stack, team structure and first deliverables.

01

Initial Screening

reported

Candidates report that the first call is with Human Resources and covers your professional background, your degree studies and your general availability. It is the stage where your CV has to be told as a short, accurate story. Prepare a chronological walk-through in which each project has its stack, your own contribution and the outcome, because the same material is reused in the technical rounds. If you are a recent graduate, decide which university project carries your technical story.

What to demonstrate

  • Professional background and degree studies as you present them
  • General availability for open project positions
  • A clear, concise account of your own CV

How to prepare

  • Write a chronological CV walk-through with stack, your specific contribution and outcome for each project, and say it aloud until it is short and clear.
  • Have your availability and location constraints ready, and pick the two projects you want the technical interview to start from.
  • Prepare a short reason for wanting consultancy-style project work, in your own words and tied to your experience.
Ayesa Software Engineer candidate reports ↗
02

Technical Interview

reported

Candidates report that this interview is led by a project lead, technical manager or department head, and that it can include a brief practical exercise or a discussion tied to a stack such as .NET or database querying. The reported questions in this area cover data access layers in .NET or similar technologies, table design for query performance and integrity, ORM versus direct SQL, REST versus SOAP, and your past projects. Approach it by answering from real projects: name the layer, table or endpoint, the decision you made and its trade-off.

What to demonstrate

  • Hands-on knowledge of the stack under discussion, for example .NET and SQL
  • Ability to work through a short practical task or query if one is set
  • How clearly you explain your own project decisions to a technical lead

How to prepare

  • Rehearse the ORM versus direct SQL answer, including the N+1 problem and when you would hand-write a query.
  • Be able to sketch a normalized schema with keys, constraints and indexes on a whiteboard or shared editor, and explain how you would speed up a slow reporting query.
  • Prepare the REST versus SOAP comparison, covering JSON versus XML, contracts, security and when each fits.
  • Practise a small SQL or C# or Java exercise from PracHub's practice set so a short live task is not a surprise.
Ayesa Software Engineer candidate reports ↗
03

Final Discussion

reported

Candidates report a final discussion with a senior engineering manager that checks how you fit the project staffing need and settles contract details. Nothing reported suggests a new technical test, so prepare for a conversation about the project domain, your readiness to start and your preferences. Expect your earlier answers to be revisited in summary, so keep your stories consistent across the rounds.

What to demonstrate

  • Fit between your skills and the specific project position being staffed
  • Your readiness and expectations for starting on a client project
  • Consistency with what you said in the earlier rounds

How to prepare

  • Prepare questions about the project domain, technology stack, team structure and first deliverables.
  • Re-read your own project stories and the stack you named in the technical interview so you can summarise them in a minute each.
  • Be ready to talk plainly about start date, location and working arrangements.
Ayesa Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Describing a project as 'we built it' without saying which tables, endpoints or modules were yours

For each project, write down the schema you designed or changed, one endpoint you wrote end to end, one bug you fixed and one decision you made. Candidates report being pressed on their specific role in schemas and APIs, so use 'I' for your own work and say who did the rest.

02

Saying 'I use an ORM' or 'I write SQL' without explaining when each is right

Prepare both sides: an ORM for CRUD and mapping, direct SQL or stored queries for reporting and bulk operations, the N+1 problem and how eager loading or a joined query fixes it, and how you check the generated SQL. Add one real case from your own work.

03

Designing tables with no constraints or indexes, or indexing everything

Explain keys and normalization first, then add foreign keys, unique and check constraints for integrity, then indexes chosen from the actual queries (filter and join columns). Say how you would read an execution plan for a slow report before changing anything.

04

Treating REST versus SOAP as a definitions question

Compare them on concrete points: JSON versus XML payloads, contract-first WSDL versus resource-oriented endpoints, built-in standards for security and transactions in SOAP, simplicity and caching in REST, and which one you would pick for integrating with an older client system.

05

Giving behavioral answers that say you are flexible and adaptable but never show a case

Pick one story each for a new stack or legacy codebase, a late requirement change, a status report to a project manager, and a tight client schedule. Each states the situation briefly, your action, the trade-off you made and the result.

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

13 technical prompts0 include a worked solution

Collapse a redelivered event batch into per-aggregate high-water marks

easy
hashingat-least-onceaggregation

You drain a batch of up to 5,000,000 events, each (aggregate_id BIGINT, aggregate_version INT, event_type, payload). The log guarantees order within one aggregate only; the batch merges 64 partitions, and a relay failover has redelivered a range, so an older version for an aggregate can appear after a newer one. Given a map of last_applied_version per aggregate, produce the events worth applying, at most one per (aggregate_id, version), plus the count discarded. Target O(n) time. State the memory for 2,000,000 distinct aggregates and what you do when it does not fit.

Approach
  1. One pass, one hash map from aggregate_id to the highest version kept, and a discard counter. An event whose version is at or below last_applied_version for its aggregate is dropped without further work, which is the whole reason the event carries its version rather than a delta. O(n) expected time, O(d) space in distinct aggregates.
  2. Keep the maximum, never the last occurrence. The redelivered range means the final appearance of an aggregate in the batch can be an older version than one seen earlier in the same batch, so last-wins applies stale state over newer state and the projection regresses with no error anywhere.
  3. Cost the memory instead of calling it large: an 8-byte key plus a 4-byte version is 12 bytes of payload, and an open-addressed table held at a 0.7 load factor costs roughly 17 bytes per entry before per-slot metadata, so 2,000,000 aggregates is tens of megabytes in a native layout and several times that in a runtime that boxes both key and value.
  4. If the distinct set exceeds memory, partition on hash(aggregate_id) mod P and reduce each partition independently. Every event for one aggregate hashes to the same partition, so the per-partition result is exact and the merge is concatenation rather than a second reduction.
Follow-up
  • The payload is a patch rather than a snapshot, so applying only the highest version loses the intermediate changes. What changes in your reduction?
  • How do you detect that version 7 arrived while version 6 was never delivered, and what should the consumer do about the gap?

Archive a resource graph without breaking live references or recursing

medium
graph traversaltopological ordertenant isolation

Resources reference other resources within a tenant; for the largest tenant the reference table holds up to 2,000,000 nodes and 8,000,000 edges. Archiving a resource must archive everything reachable from it that nothing outside the set still references, refuse when a live external referrer exists, and terminate when references form cycles, which they legitimately do. Produce the archive order and the refusal list, targeting O(V+E). Say what stops the traversal crossing a tenant boundary, and why recursion is the wrong control structure at this size.

Approach
  1. Load the subgraph with the tenant predicate on both endpoints of the edge, not only on the side you started from. Scoping the left table alone is the classic cross-tenant leak: one mis-entered edge then pulls another tenant's resources into the traversal and, worse, into the archive.
  2. Traverse iteratively with an explicit stack. A 2,000,000-node graph can hold a chain deep enough to exhaust a native stack in the low tens of thousands of frames, and that failure is a process crash rather than an error you can return.
  3. Treat cycles as data rather than corruption: compute strongly connected components with Tarjan in O(V+E) using its own explicit stack, then condense. The condensation is a DAG, so a topological order over it gives the archive order, and every member of a component archives in one transaction because no order within a cycle is valid.
  4. Decide refusals with reverse edges. A candidate is archivable only if every in-edge originates inside the candidate set, so build the transpose or count in-degrees restricted to the visited set, and emit each blocked resource with the id of the external referrer, which is the only part of the answer an operator can act on.
Follow-up
  • The graph is read in one query and the archive writes a minute later. What can change in between, and how do you make the write safe?
  • The candidate set is 400,000 resources. Is that one transaction, and if not, what does a half-finished archive look like to a reader?

Identify the heaviest tenants in a five-minute window under memory pressure

medium
top-kheavy hittersstreaming

The edge service handles about 3,000 requests per second across roughly 50,000 tenants, peaking near 9,000. Expose the 50 heaviest tenants by request count over the trailing five minutes so limits can be tightened before one tenant's backfill starves the fleet. You may not retain five minutes of raw records. Give the exact solution and its memory, then the bounded-memory approximation with its error stated as a formula, and say which you would ship and at what tenant cardinality that choice changes.

Approach
  1. Do the exact version first, because it is affordable at this cardinality: a ring of 300 one-second counters per tenant, advanced lazily, is 1,200 bytes of counters per tenant and roughly 60 to 90 MB for 50,000 tenants with overhead. Carry a running total and subtract the bucket you overwrite so a window read is O(1) rather than 300 adds.
  2. Extract the top 50 with a size-k min-heap over the tenant sums: O(d log k) for d tenants, against O(d log d) to sort them all. Maintaining the heap continuously instead of on query requires a tenant-to-heap-index map, because incrementing a count already inside the heap means sifting from a known position, and without that map you rebuild the heap on every request.
  3. State the approximation precisely rather than gesturing at sketches. Misra-Gries with m counters retains every item whose true count exceeds N/(m+1), and each retained count underestimates the truth by at most N/(m+1). With m = 1,000 and N = 900,000 requests in the window the error is roughly 900 requests, which is fine for spotting a tenant sending 50,000 and useless for ranking two tenants 200 apart.
  4. Say what breaks when the window slides: Misra-Gries and Space-Saving are insert-only and cannot be decremented as records age out. The workable construction is one summary per sub-window, say ten seconds, with 30 summaries merged at query time, and the merged error is the sum of the per-summary errors, so the bound degrades linearly in the number of sub-windows.
Follow-up
  • The heaviest tenant is heavy because of one export job rather than user traffic. Should the limiter treat those as the same tenant?
  • Two tenants sit tied at the boundary of the top 50. Does your answer flap, and does the flapping matter?

The plan follows the three reported rounds and the three question groups candidates report: backend and database fundamentals, project walk-throughs and client-facing behavioral answers. Practice questions from PracHub's set are attached to the days where they fit.

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 write your CV walk-through
  • Write the three reported rounds (Initial Screening, Technical Interview, Final Discussion) on one page and mark the one you are least ready for.
  • Write a chronological CV script giving stack, your contribution and outcome for each project, then say it aloud until it is short and clear.
  • List the stack terms from your CV (for example .NET, Java, SQL Server, PostgreSQL, Oracle, REST) and rate your confidence in each.

Deliverable: A one-page loop map, a spoken CV script, and a rated stack list that sets the order of days 2 to 4.

02Backend layers and data access
  • Write out the layers of a backend you have built (controller, service, data access, database) and how dependency injection wired them, including the frameworks you used and why.
  • Write a one-page comparison of an ORM and direct SQL for your stack, with an example of the N+1 problem and its fix.
  • Practise the two answers aloud and time them.

Deliverable: A layer diagram from a real project, a one-page ORM versus SQL note with an N+1 example, and two spoken answers.

Practice prompt ↗Practice prompt ↗
03Table design and SQL
  • Design a schema for a small enterprise case (for example orders with customers and line items) with keys, constraints and indexes chosen from the queries it must serve.
  • Take a slow reporting query, read its execution plan, and write down two ways to speed it up.
  • Solve the concurrent-edit update problem and the mid-deploy stalled-queries problem from PracHub's practice set.

Deliverable: A schema with an index rationale, an annotated query plan with two fixes, and solutions to the two practice problems.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
04APIs, errors, logging and validation
  • Write a comparison table of REST and SOAP covering payload format, contracts, security, error reporting and a typical use for each.
  • Outline the error handling, validation and logging design of an API you have built, tier by tier, including a correlation id.
  • Do one small coding exercise from PracHub's practice set as warm-up for a short practical task.

Deliverable: A REST versus SOAP table, a tier-by-tier error and logging outline, and one solved practice exercise.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
05Project walk-throughs
  • For your two strongest projects, write scope, stack choice with the alternatives you rejected, your own contribution and the outcome.
  • Pick the hardest technical problem from each project and write the diagnosis, the fix and what you would do differently.
  • Write how requirements changed late in one project and what you did to the plan, plus a short description of the development lifecycle you followed.

Deliverable: Two project briefs with a hardest-problem story, a late-change story and a lifecycle description, each spoken in under two minutes.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Behavioral stories for project and client work
  • Write one story each for joining an unfamiliar stack or legacy codebase, and for reporting progress or an issue to a project manager.
  • Write one story about prioritising several tickets or milestones, and one about a tight schedule with a client's technical team.
  • Say each aloud, then cut it to the situation, your action, the trade-off and the result.

Deliverable: Four spoken stories with a clear result each, and a list of the follow-up questions you expect.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Full run-through and questions for the team
  • Run a mock of all three stages in order: CV walk-through, a technical conversation with one small SQL or code task, and a final discussion about fit.
  • Write five questions to ask about the project domain, stack, team structure and first deliverables.
  • Review any answer that rambled and rewrite its first two sentences.

Deliverable: A recorded mock run, a list of five questions for the team, and rewritten openers for your weakest answers.

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

Candidates report that the behavioral questions concern joining project teams quickly: working in an unfamiliar stack or legacy codebase, reporting progress or problems to a project manager, prioritising tickets, handling late requirement changes and tight schedules with client technical teams. Prepare real stories with your own actions, the trade-off you made and the result, rather than general statements about being adaptable.

How do you handle error handling, logging, and input validation across multi-tier software applications?

medium
Core Technical & Framework Knowledge

How do you handle error handling, logging, and input validation across multi-tier software applications?

Approach
  1. Organise the answer by tier: presentation or API layer, service layer, data access, database. Say which concern lives where. Validate shape, types and ranges at the boundary and reject early with a clear 400 response and field-level messages; enforce business rules in the service layer; and keep NOT NULL, UNIQUE, foreign key and CHECK constraints in the database, because other writers and scripts bypass the application.
  2. Handle errors where you can act on them (retry, compensate, translate) and let the rest reach one central handler. In .NET that is exception-handling middleware or a filter returning a consistent error body with a correlation id, never a stack trace. Separate expected business failures (4xx) from unexpected faults (5xx, logged with the exception). Preserve the inner exception, never leave an empty catch, and roll back the transaction.
  3. For logging, use structured entries carrying a correlation id created at the entry point and passed to every tier and downstream call. Use levels deliberately: information for business events, warning for recoverable problems, error for faults. Log an exception once, at the boundary, instead of at every layer, and keep passwords, tokens and personal data out of logs.
  4. Tie it to a real project: name the logging library and validation mechanism you used, and describe one incident you traced through the logs from user report to root cause.
Follow-up
  • A user says their order failed yesterday. How do you trace it across the web, service and database tiers?
  • Where do you validate when your service receives XML or JSON from another system rather than from your own UI?
  • How do you avoid logging sensitive data while keeping logs useful for debugging?

How do you adapt when assigned to a new project that uses a technology stack or legacy codebase you have not w

medium
Behavioral & Client Readiness

How do you adapt when assigned to a new project that uses a technology stack or legacy codebase you have not worked with before?

Approach
  1. Open with one concrete case: an inherited codebase or unfamiliar stack, what was at stake, and your first week. Do not answer with 'I learn fast'; show the method.
  2. Describe the method: get it running locally, read the README and any tests, trace one request end to end (entry point, service logic, data access, database), and list the build, deploy and branching conventions. Where tests are missing, write characterization tests around the module before changing it.
  3. Say how you used people: try first, then ask the previous owner or a senior colleague targeted questions with what you already found. Keep notes or a short onboarding document as you go so the next person benefits.
  4. Show the result with a small first change that was reviewed and shipped safely, and name what you did not change yet because the risk was unclear. The mistake that sinks this answer is claiming you rewrote the legacy code to make it understandable.
Follow-up
  • What do you do when the legacy code has no tests and no documentation, and the deadline is fixed?
  • Which technology on this role's list is weakest for you, and how would you close the gap in the first month?

Describe a situation where you had to present technical progress or report an issue to a project manager or te

medium
Behavioral & Client Readiness

Describe a situation where you had to present technical progress or report an issue to a project manager or team lead.

Approach
  1. Choose a real moment: a milestone at risk, a defect found late, or a blocked dependency. Make clear who you told, when, and what you asked of them.
  2. Structure the message the way a project manager can use it: status in one sentence, impact on scope, date or cost, what you have already done, the options with their trade-offs, and the decision you need. Translate technical causes into delivery impact and leave out jargon the manager cannot act on.
  3. Show timing and honesty: you raised the issue as soon as you knew, with evidence (logs, a failing test, an estimate range) rather than a guess, and you agreed when the next update would come.
  4. State the outcome and the habit it created, such as a short weekly status note or a risk list. The mistake that sinks this answer is describing a status meeting where you only read out tasks, or bad news that you delayed until it was unavoidable.
Follow-up
  • How do you give an estimate when you do not yet know the cause of the problem?
  • What if the manager decides on an option you think is technically worse?
  • How would you report the same issue to a client's technical team instead of your own manager?

How do you prioritize your daily task queue when managing multiple open tickets or project milestones?

medium
Behavioral & Client Readiness

How do you prioritize your daily task queue when managing multiple open tickets or project milestones?

Approach
  1. Give a working method, then one example. A reasonable order is: production defects and anything blocking other people first, then work attached to the nearest milestone, then the rest, with ticket size and dependencies as tie-breakers.
  2. Make the queue visible: a board or ticket list with explicit priorities, a start-of-day check for new defects and review requests, and focused blocks for coding rather than reacting to every message. Break large tickets into pieces that can finish independently.
  3. Explain conflict handling: when two milestones clash, you do not decide silently; you show the project manager the trade-off (what slips if you do A first) and let them choose, then record it on the tickets.
  4. Close with a specific week where this mattered and what you dropped or deferred. The mistake that sinks this answer is claiming you do everything at once, or ordering purely by who asked loudest.
Follow-up
  • A senior colleague and your project manager give you conflicting top priorities. What do you do?
  • How do you handle a ticket whose estimate turns out to be double what you said?

Are you comfortable working under tight project delivery schedules and collaborating closely with external cli

medium
Behavioral & Client Readiness

Are you comfortable working under tight project delivery schedules and collaborating closely with external client technical teams?

Approach
  1. Answer yes only with evidence: describe one project where the date was fixed and the team worked closely with a client's technical staff, and say what you personally did. Avoid slogans about thriving under pressure.
  2. Show how you protected quality under time pressure: agree scope with the project manager and cut or defer features rather than skipping tests on the critical path, keep releases small, use code review and automated build checks where they exist.
  3. Show how you worked with an external technical team: agree interfaces and data formats in writing early (for example an API contract or sample payloads), hold short regular syncs, keep a shared list of open questions and owners, and raise blockers on the client side to your project manager quickly.
  4. Be honest about limits: say where you would flag that a schedule was unrealistic and what evidence you would bring. The mistake that sinks this answer is promising to meet any date with no mention of scope, risk or communication.
Follow-up
  • Tell me about a time a client's team was late with something you depended on.
  • When would you tell a project manager that a delivery date is not achievable, and how?
  • How do you keep documentation and handover notes current when the schedule is tight?
  • 01

    How do you adapt when assigned to a new project that uses a technology stack or legacy codebase you have not worked with before?

  • 02

    Describe a situation where you had to present technical progress or report an issue to a project manager or team lead.

  • 03

    How do you prioritize your daily task queue when managing multiple open tickets or project milestones?

  • 04

    Are you comfortable working under tight project delivery schedules and collaborating closely with external client technical teams?

  • 05

    How did you handle project deadlines when technical requirements changed late in the development cycle?

  • 06

    Describe a time a requirement was ambiguous and how you clarified it with a project manager.

PracHub preparation framework ↗
How technical is the Ayesa Software Engineer interview?

Candidates describe it as practical. The reported questions cover data access in .NET or similar technologies, table design, ORM versus direct SQL, REST versus SOAP, error handling and logging, and your own projects, rather than algorithm puzzles. Prepare to answer from real work, and practise a small SQL or code exercise in case a short practical task is set.

Ayesa Software Engineer candidate reports ↗
How many rounds are there and how long does the process take?

Candidates report three rounds: Initial Screening, Technical Interview and Final Discussion, over roughly three to five weeks. Some candidates describe it moving faster when a position needs to be staffed quickly, so keep your availability clear and be ready to schedule promptly.

Ayesa Software Engineer candidate reports ↗
Do I need to know .NET?

Candidates report that specific positions may target .NET (C#) or Java depending on the client project's stack, with SQL Server, PostgreSQL or Oracle for databases. Check the job posting for the stack of the position, go deep on that stack, and be ready to explain how your experience in another object-oriented language carries over.

Ayesa Software Engineer candidate reports ↗
Are interviews online or on site?

Candidates report that early interviews and technical discussions are mostly held over video, with office visits possible depending on location and the department lead. Test your connection, camera and any shared editor beforehand, and keep a schema or code example ready to share.

Ayesa Software Engineer candidate reports ↗
What should I do if I have only a university project to talk about?

Use it fully. Candidates report being asked about final university projects as well as professional ones. Prepare scope, stack choices and rejected alternatives, the tables and endpoints you personally built, the hardest bug, and how requirements or plans changed, and be exact about which parts were yours.

Ayesa Software Engineer candidate reports ↗
What should I ask at the end?

Ask about the project domain, technology stack, team structure and the first deliverables for the role. These questions fit the final discussion, which candidates report centres on staffing alignment and contract details, and they show you have thought about the actual project.

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.