Abhibus · Software Engineer
Updated · 2026-10-02

Abhibus Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Abhibus is a travel company. Candidates describe the Software Engineer role as work on real-time applications, with backend systems behind user-facing front-end screens. Example projects they mention are tuning a booking engine and building APIs that connect to third-party services. The responsibilities reported for the role are building new features and improving existing ones using user feedback, working with product and design teams, reviewing code, and taking part in architecture discussions.

This guide is for candidates interviewing for a Software Engineer position at Abhibus. It covers both reported rounds and all fifteen reported questions: OOP versus functional programming, REST design, a past bug, performance and scalability, version control, high latency, shortest path, multi-service features, three behavioral prompts, millions of concurrent users, SQL versus NoSQL, reversing a linked list, and sorting and merging arrays. The requirements candidates describe mention Java, SQL and NoSQL databases, REST and microservices, and roughly 3-5 years of development experience.

Candidates report two rounds over about 2-4 weeks: a Technical Discussion with technology-specific questions and practical assessments, then a Managerial Round about previous projects and the challenges in them.

Object-Oriented Programming (OOP)PaginationOOP Concepts (e.g., Encapsulation/Inheritance/Polymorphism)

33 min read

Browse Software Engineer questions

See the practice prompts

18Practice promptsAcross five skill areas

The work candidates describe is backend-heavy and service-oriented: real-time applications, booking-engine optimisation, and APIs that talk to third-party services. The requirements they list are Java and its frameworks, SQL and NoSQL databases, REST API design, microservices and agile practice, with AWS or Azure and React or Angular named as extras. That mix tells you where to spend time: be able to write Java, sketch a schema, design an endpoint, and explain what happens when one service in a chain is slow or down.

The reported questions fall into five groups. Technical and domain questions ask for OOP versus functional programming, RESTful API design, a challenging bug you fixed, how you keep applications fast and scalable, and why version control matters. Problem-solving questions cover diagnosing a high-latency service, the shortest path in a graph, and building a feature that needs data from several services. Two design questions ask about millions of concurrent users and SQL versus NoSQL. Two coding questions are reversing a linked list and sorting and merging two arrays. Three behavioral prompts cover leading a project, team conflict and adapting to change. Pagination, logical reasoning and Java also appear among the reported topics.

Most of these are spoken-answer questions, so the preparation is concrete examples rather than definitions. For each concept question, have a short Java or SQL snippet ready. For the coding questions, practise writing working code from a blank editor, because the Technical Discussion is reported to include practical assessments. For the Managerial Round, which is reported to be a discussion of previous projects and challenges, build a small dossier on two projects: the architecture, one bug, one performance problem, one disagreement and one change of plan. The same material then serves the bug question, the performance question and all three behavioral prompts.

01

Technical Discussion

reported

Candidates report this round as technology-specific questions combined with practical assessments. The reported stack is Java and its frameworks plus SQL and NoSQL databases, and the reported topics include OOP concepts, pagination, logical reasoning and Java. Approach it by pairing every concept answer with something concrete: a few lines of Java, a table or query, or a request and response for an endpoint. Practise the coding questions on a blank editor and say the complexity when you finish, because practical assessments reward code that runs.

What to demonstrate

  • Working knowledge of Java and the frameworks around it
  • Database knowledge across SQL and NoSQL, including how you would query and page through data
  • OOP concepts such as encapsulation, inheritance and polymorphism, a reported topic
  • Practical assessment output: code that compiles and handles edge cases

How to prepare

  • Write one small task in loop style, class-and-interface style and stream style in Java, then explain what OOP and functional programming each do better.
  • Sketch a REST API for one resource with URLs, methods, status codes, an error format and paginated list responses.
  • Write iterative and recursive linked-list reversal, and a two-pointer merge of sorted arrays, from a blank editor with edge-case tests.
  • Rehearse a diagnosis order for a slow service and a SQL versus NoSQL comparison tied to two named access patterns.
Abhibus Software Engineer candidate reports ↗
02

Managerial Round

reported

Candidates report this round as a discussion of previous projects and the challenges faced in them, framed as experience and cultural alignment. Because the content is your own history, the preparation is a project dossier: what you built, your part in it, what went wrong, and what you changed afterwards. Bring concrete details such as the bug's root cause, the numbers you measured, or the decision you argued for, and keep each story to a clear beginning, action and result.

What to demonstrate

  • How clearly you narrate a previous project and its challenges
  • Your own contribution and decisions inside team work
  • Experience and cultural alignment as the round is described by candidates
  • Teamwork examples such as leading, resolving a conflict and adapting to change

How to prepare

  • Write a dossier for two projects covering the problem, architecture, your role, one bug, one performance issue, one disagreement and one change of plan.
  • Outline STAR answers for leading a project, handling team conflict and adapting to a significant change, each with a measured or observable result.
  • Turn your hardest bug into a story with symptom, investigation steps, root cause, fix and prevention.
  • Prepare a few questions about the team's review, release and architecture-discussion practices to ask at the end.
Abhibus Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Defining OOP and functional programming as lists of vocabulary with no code

Prepare one small example, such as filtering and totalling a list of records, written in mutable loop style, with classes and interfaces, and with Java streams on immutable data. Compare state, side effects, testability and where polymorphism helps. Say when you would pick each, instead of declaring a winner.

02

Designing a REST API with verbs in the URLs and no thought for lists, errors or retries

Use nouns for resources, the right HTTP methods and status codes, a consistent error body and versioning. Explain how list endpoints are paginated: offset for simple pages, keyset or cursor for large or changing data. Say which operations must be idempotent so a retry cannot create a duplicate.

03

Answering the high-latency question with a fix, such as adding a cache, before measuring anything

Give an order: confirm the symptom and its scope, compare percentiles before and after any change, split time across hops with traces or logs, then check dependency calls, database queries with EXPLAIN, thread pools, garbage collection and recent deployments. Name the fix only after the evidence points to it.

04

Producing linked-list, merge or shortest-path code that fails on the first edge case

For reversal, hold the next node before you repoint, and test an empty list, one node and two nodes. For merging, append the leftover tail of whichever array remains. For shortest path, use breadth-first search only when edges are unweighted, Dijkstra for non-negative weights, and say what breaks with negative weights.

05

Telling the bug, leadership, conflict or change stories as team narratives where your own actions cannot be found

Write each story in STAR form with sentences starting with 'I'. Include the specific decision you made, what you measured, the result and what you changed afterwards, and rehearse them aloud so the two or three projects in your dossier cover all four prompts.

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

15 technical prompts0 include a worked solution

Write a function to reverse a linked list.

medium
Coding / Algorithms

Write a function to reverse a linked list.

Approach
  1. Iterative with three pointers: prev = null, curr = head; in the loop save next = curr.next, set curr.next = prev, then advance prev = curr and curr = next; return prev as the new head. O(n) time, O(1) extra space.
  2. Recursive alternative: reverse the rest, then set head.next.next = head and head.next = null. Also O(n) time, but it uses O(n) call-stack space, so a very long list can throw StackOverflowError in Java.
  3. Handle edge cases explicitly: empty list (null head), a single node, two nodes; always save next before overwriting the pointer, and return the new head rather than the old one.
  4. Test by walking the result and checking the order and that the old head's next is null, so no cycle remains.
  5. Know the common variants: reverse between positions left and right, reverse in groups of k, a doubly linked list (swap prev and next on each node), and a palindrome check that reverses the second half.
Follow-up
  • Reverse only the nodes between positions left and right in one pass.
  • Reverse the list in groups of k, leaving any remainder as it is.
  • What exactly goes wrong if you overwrite curr.next before saving it?

Solve a problem involving sorting and merging two arrays.

medium
Coding / Algorithms

Solve a problem involving sorting and merging two arrays.

Approach
  1. Clarify the input first: are both arrays already sorted, should duplicates be kept, must the merge happen in place (e.g. the first array has spare slots at the end), and what output is expected.
  2. If both are sorted, merge with two pointers in O(m+n) time. For an in-place merge into the first array, fill from the back (i = m-1, j = n-1, k = m+n-1) so no unread value is overwritten, and stop once the second array is used up.
  3. If they are unsorted, concatenate and sort in O((m+n) log(m+n)), or sort each and then merge. In Java, Arrays.sort on objects uses TimSort, which is stable; on primitives it uses dual-pivot quicksort.
  4. Edge cases: one array empty, every value of one array smaller than the other, duplicates, negative values.
  5. Know the neighbours: merging overlapping intervals (sort by start, then extend or append) in O(n log n), intersection or union of sorted arrays with two pointers, k sorted arrays with a min-heap in O(N log k), and the median of two sorted arrays by binary search in O(log(min(m,n))).
Follow-up
  • Merge k sorted arrays efficiently.
  • Find the median of two sorted arrays without merging them.
  • How would you sort and merge data too large to fit in memory?

Track a rolling failure rate per destination for circuit decisions

easy
sliding windowring buffercircuit breaker

The egress service delivers about 1,500 webhooks per second across roughly 40,000 destinations, each call bounded by a 10 second timeout. Maintain, per destination, the failure rate over the trailing 60 seconds so a caller can ask before dispatch whether the circuit should open. Attempts arrive as (destination_id, finished_at_ms, outcome). Requirement: amortised O(1) per attempt, with total memory bounded by the destination count rather than by traffic. Give the structure, its exact memory, and the rule that stops a destination with three attempts from opening a circuit.

Approach
  1. Name the exact-deque version and then reject it as the default. Holding timestamps and advancing a tail pointer past anything older than now minus 60 seconds is a correct two-pointer window at amortised O(1) per attempt, but its memory tracks in-window traffic, so one destination in a retry storm holds hundreds of thousands of entries while thousands of quiet destinations hold none.
  2. Use a ring of 60 one-second buckets per destination, each bucket a pair of counters for attempts and failures. On an attempt, advance the ring by the elapsed whole seconds, zeroing at most min(elapsed, 60) buckets, then increment the head. That is amortised O(1) with a fixed footprint per destination.
  3. State the footprint: 60 buckets times two 4-byte counters is 480 bytes of payload per destination, so 40,000 destinations is roughly 20 to 25 MB with per-entry overhead, bounded by the catalogue rather than by the rate. The cost is granularity, since the oldest bucket ages out in whole seconds, which is far tighter than the decision needs.
  4. Require a minimum sample before the circuit may open. A destination with three attempts and three failures reads as 100 percent and is not evidence; a floor of roughly 20 attempts in the window makes the ratio meaningful, and below that floor use a run of consecutive failures as the trigger instead.
Follow-up
  • The fleet is 30 instances and each sees roughly a thirtieth of a destination's traffic. Where does the rate actually live, and what does a per-instance answer get wrong?
  • A destination answers in 9.5 seconds and succeeds. It is not failing but it is consuming your per-destination concurrency. What signal should open the circuit here?

The plan follows the two reported rounds: days 2 to 6 cover the Technical Discussion topics (OOP, REST and data, coding, debugging, services and scale), and day 7 rehearses the project and behavioral discussion.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Map the loop and inventory the stack
  • Write down the two reported rounds, Technical Discussion then Managerial Round, and what each is reported to cover.
  • Rate yourself 1 to 5 on Java, SQL, NoSQL, REST design, microservices and agile, then list AWS or Azure and React or Angular as extras to skim only if time remains.
  • Choose the two projects you will build your dossier around, and note for each the problem, your role and the architecture.

Deliverable: One page with the two rounds, a rated stack list, and the two chosen projects with problem, role and architecture.

02OOP, functional programming and Java fundamentals
  • Implement one small task, such as filtering and totalling a list of records, in a mutable loop, with classes and an interface that has two implementations, and with Java streams on immutable data.
  • Write a short comparison covering state, side effects, testability and reuse, and say when composition is a better choice than inheritance.
  • Give a Java example of each of encapsulation, inheritance and polymorphism.
  • Solve three short logical-reasoning puzzles on paper, since logical reasoning appears among the reported topics.

Deliverable: Three working versions of the same task, a written OOP versus functional comparison, and three solved reasoning puzzles.

Practice prompt ↗
03REST design, pagination and SQL versus NoSQL
  • Design a REST API for one resource: URLs, methods, status codes, an error format, versioning and an idempotent create.
  • Write the same list query with offset pagination and with keyset pagination on an indexed column, and note the cost of each on a large table.
  • Compare SQL and NoSQL for two named access patterns, covering schema, joins, consistency, scaling and indexing.

Deliverable: An API sketch with the pagination contract, both paginated SQL queries, and a two-pattern SQL versus NoSQL comparison table.

Practice prompt ↗Practice prompt ↗
04Coding: linked list, merge and shortest path
  • Reverse a singly linked list iteratively and recursively in Java, then test an empty list, one node and two nodes.
  • Merge two sorted arrays with two pointers in linear time, then handle the unsorted case by sorting first and state the extra cost.
  • Solve shortest path with breadth-first search for unweighted edges and Dijkstra with a priority queue for non-negative weights, and state complexity and what changes with negative weights.

Deliverable: Three compiled and tested Java solutions, each with its complexity and an edge-case list.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
05Diagnose, debug and explain your workflow
  • Write a latency checklist: scope the symptom, compare percentiles, trace time per hop, check dependency calls, run EXPLAIN on slow queries, check thread pools and garbage collection, then review recent deployments.
  • Work through the PracHub practice debugging question about instances growing in memory, saying your hypotheses and checks aloud.
  • Write your hardest bug as a story with symptom, investigation, root cause, fix and prevention.
  • Prepare a short answer on version control covering branching, review, history for bisecting and reverting.

Deliverable: A latency checklist, a spoken walk-through of the practice debugging question, a written bug story and a short version-control answer.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Services, scale and performance
  • Sketch a feature that needs data from several services: the call flow, synchronous versus asynchronous calls, timeouts, retries with idempotency, caching and what the user sees on partial failure.
  • Outline a design for millions of concurrent users: stateless application tier behind a load balancer, caching, read replicas, queues for slow work and a partition key with its trade-off.
  • Write a half-page answer on keeping applications fast: measure first, load test, fix indexes and queries, then cache and scale out.

Deliverable: A multi-service call-flow sketch, a concurrent-user architecture diagram, and a half-page performance and scalability answer naming three concrete measures.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Managerial Round rehearsal
  • Write STAR outlines, in the first person, for leading a project, handling team conflict and adapting to a significant change, each ending in an observable result.
  • Give a spoken walk-through of each dossier project covering the problem, your role, architecture, one bug and one decision you would revisit.
  • Run a mock of the whole round with a friend or a recording, then tighten the stories that sounded vague.
  • List a few questions to ask the team about review, release and architecture-discussion practices.

Deliverable: Three STAR outlines, two project walk-throughs, a recorded or peer mock of the round and a list of questions to ask.

Practice prompt ↗Practice prompt ↗Practice prompt ↗

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

Candidates report the Managerial Round as a discussion of previous projects and the challenges in them, so behavioral preparation here is mainly project storytelling. The reported prompts cover leading a project, team conflict and adapting to change. Candidate descriptions of the requirements add communication with non-technical stakeholders, working under pressure and agile practice. Prepare stories where you made specific decisions, stated what you measured or observed, and can say what you would change. Reuse the two dossier projects across prompts rather than preparing many thin stories.

Describe a time when you had to lead a project. What challenges did you face, and how did you overcome them?

medium
Behavioral / Leadership

Describe a time when you had to lead a project. What challenges did you face, and how did you overcome them?

Approach
  1. Choose a project where you owned scope, planning or delivery, even without a lead title. Open with one sentence stating what you were accountable for, so the story is about your decisions and not the team's activity.
  2. Give the situation and goal in two sentences. Then describe the plan you set: how you broke the work into tasks, who took what, how you tracked progress, and what you set as the review standard.
  3. Name two real challenges and your response to each, for example unclear requirements settled by writing down acceptance criteria, a dependency on another service or team handled with an agreed interface and a mock, or a slipping deadline handled by cutting scope and telling stakeholders early.
  4. Close with the result in observable terms, such as what shipped, defects found afterwards, latency or time saved, and one thing you would change. The mistake that sinks this answer is an all-'we' story where nothing is traceable to you, or a hero story that ignores teammates.
Follow-up
  • How did you split the work and keep track of progress?
  • Tell me about a decision you made as lead that someone disagreed with.
  • What would you do differently if you led it again?

How do you handle conflicts within a team?

medium
Behavioral / Leadership

How do you handle conflicts within a team?

Approach
  1. Pick a real, work-level disagreement: an API design, a code review comment, an estimate or a technology choice. A personality clash with no technical content gives you nothing to show.
  2. Show how you handled it: you restated the other person's position until they agreed you had it right, found the actual point of difference, and moved the discussion from opinion to evidence such as a quick prototype, a benchmark, a comparison of trade-offs or a look at production data.
  3. Say how it ended. If the evidence settled it, say whose idea won and that it did not matter. If it stayed stuck, say you took it to the tech lead or manager with both options written down. If you lost, say you committed fully to the decision.
  4. Finish with the working relationship afterwards and one habit you kept. The answer fails if you cast yourself as right and the colleague as the problem, or if you claim you have never had a conflict.
Follow-up
  • What if the person you disagreed with was more senior than you?
  • How would you respond if you still disagreed after a manager made the call?
  • What did you change about how you work with that person or team?

Can you provide an example of a time when you had to adapt to a significant change in a project?

medium
Behavioral / Leadership

Can you provide an example of a time when you had to adapt to a significant change in a project?

Approach
  1. Pick a change that invalidated work you had already done: a requirement reversal, a scope cut, a technology swap, a new team structure or a moved deadline. A change that cost you nothing shows nothing.
  2. State what stayed fixed and what had to move. Then describe your first steps: listing finished work to keep and to discard, re-estimating, and telling the people affected what would slip, what would be dropped and what risk remained.
  3. Tie it to how you work. Candidates report agile practice as a stated requirement, so you can describe re-prioritising the backlog, shortening the feedback loop, or releasing in smaller pieces after the change.
  4. Give the outcome and the lesson, including what you lost. Avoid answers that reduce to 'I adapted quickly' with no detail, and avoid spending the story complaining about the decision that changed things.
Follow-up
  • What did you drop, and who agreed to that?
  • How did you keep the team and stakeholders informed during the change?
  • Were there early signs of the change you could have caught sooner?
  • 01

    Describe a time when you had to lead a project. What challenges did you face, and how did you overcome them?

  • 02

    How do you handle conflicts within a team?

  • 03

    Can you provide an example of a time when you had to adapt to a significant change in a project?

  • 04

    How do you handle disagreements with colleagues?

  • 05

    What does teamwork mean to you, and how do you foster it?

  • 06

    Describe your approach to solving a bug that affects multiple users.

PracHub preparation framework ↗
How many rounds are there and how long does the process take?

Candidates report two rounds, a Technical Discussion and then a Managerial Round, over roughly 2-4 weeks. The Technical Discussion is described as technology-specific questions with practical assessments, and the Managerial Round as a discussion of previous projects and challenges.

PracHub Software Engineer practice ↗
Which technologies should I revise?

The requirements candidates describe list Java and its frameworks, SQL and NoSQL databases, REST API design, microservices and agile practice. AWS or Azure and React or Angular are mentioned as extras. Reported topics also include OOP concepts, pagination and logical reasoning, so write Java by hand, rehearse paginated queries and practise a few reasoning puzzles.

PracHub Software Engineer practice ↗
What coding questions are reported?

Two coding questions are reported: reversing a linked list, and a problem involving sorting and merging two arrays. A shortest-path-in-a-graph question is also reported under problem-solving. Practise all three in Java from a blank editor, state the time and space complexity, and test empty, single-element and duplicate-heavy inputs.

PracHub Software Engineer practice ↗
How do I prepare for the Managerial Round?

Build a dossier on two projects: the problem, your role, the architecture, one bug, one performance issue, one disagreement and one change of plan. Then write first-person STAR outlines for leading a project, handling team conflict and adapting to a significant change, and rehearse them aloud until each names your own decisions and a result.

PracHub Software Engineer practice ↗
What experience level do the requirements describe?

The requirement descriptions candidates share mention roughly 3-5 years of software development experience, plus a solid grasp of development principles and agile methods. If you have less, lean on projects where you owned a decision, and be ready to explain that work in plain terms as well as technical ones.

PracHub Software Engineer practice ↗
How should I use a single week of preparation?

Follow the seven-day plan: stack inventory first, then OOP and Java, REST with pagination and SQL versus NoSQL, coding, debugging and latency diagnosis, services and scale, and finally a full rehearsal of your project stories. If time is short, keep the coding day and the story day, because those are the two areas where written code and rehearsed answers make the biggest difference.

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.