Ascendion · Software Engineer
Updated · 2026-10-02

Ascendion Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Candidates describe Ascendion as a digital engineering company whose engineers build software for enterprise clients: cloud-native platforms, modernisation of older applications and larger digital transformation programmes. The client domains reported range from financial services and healthcare to high-tech and enterprise software. A Software Engineer on these engagements is described as working across backend services, user interfaces and cloud services, designing microservices and both relational and non-relational data models, and writing unit and integration tests. The stacks listed for the role are Python, Java with Spring Boot, C# with .NET Core, React and Node.js, so the day-to-day language depends on the client account you are placed on.

This guide is for candidates interviewing for a Software Engineer position at Ascendion, from associate level to senior developer. It covers the six reported rounds, the reported technical questions (OOP and language fundamentals, strings and matrices, SQL and persistence, REST, Spring Boot or .NET Core, microservice messaging, React or Vue state, SPA performance) and the scenario questions about bugs, priorities, disagreements, career goals and unfamiliar codebases. It ends with a seven-day plan.

Candidates report six rounds over roughly 4-6 weeks: an online assessment, a recruiter screening call, L1 and L2 technical interviews, a client interview for client-facing roles, and a managerial and HR discussion. Some reports describe a shorter pipeline when no client round applies.

Object-Oriented Programming (OOP)DSA (Data Structures and Algorithms)SQL

47 min read

Browse Software Engineer questions

See the practice prompts

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

The reported questions fall into five groups. First, object-oriented and language fundamentals: the four pillars, overloading versus overriding, SOLID with dependency inversion, constructors, abstract classes versus interfaces, and static versus instance members. Second, practical coding: reversing a string without library helpers, counting character frequencies, finding repeated characters, matrix traversal or rotation, and palindrome checks. Third, frameworks and services: REST methods and status codes, Spring Boot or .NET Core architecture and dependency injection, synchronous versus asynchronous communication between microservices, SPA load performance, and React or Vue state management. Fourth, databases: JOIN types, slow-query diagnosis, clustered versus non-clustered indexes, Java collections and HashMap internals, and Hibernate or Entity Framework behaviour. Fifth, scenario questions about bugs, priorities, disagreements, leaving a previous employer and legacy code. Candidates describe the overall difficulty as average to moderately challenging, with the weight on fundamentals.

Candidates say the questions follow your primary stack: Java, .NET, Python or full-stack JavaScript. The requirements they describe call for one main language (Java, C#, Python, JavaScript/TypeScript or C++), solid OOP and SOLID, SQL with JOINs, familiarity with Spring Boot, .NET Core, Node.js or React, and Git. Cloud platforms, Docker, Kubernetes, Kafka, RabbitMQ and CI/CD are listed as nice-to-have. Pick one stack and go deep, then learn the equivalent names on the other side, because several reported questions say 'Java or C#' or 'Hibernate or Entity Framework'. Less common topics reported are generics, reflection, thread safety, the Saga pattern, circuit breakers, graph traversal, dynamic programming, sharding and MongoDB. Cover the basics first and treat these as extras.

Two reported questions are filed under scenario questions but are technical in substance: cleaning null values with Pandas and NumPy, and managing state across a React or Vue component tree. Prepare them as technical answers with code and trade-offs. Candidates also report example prompts such as a SQL query for the second highest salary, a diagonal sum over a matrix, securing REST APIs with OAuth 2.0 and JWT, a microservice design for high-throughput financial transactions, and custom exception handling in Java or C#. Practise these alongside the question list.

Candidates report that technical panels read the resume line by line and that engineers are placed on client engagements, so project narration and clear speech carry weight next to code. For every project you list, prepare your own role, the design and database choices, the deployment path and one optimisation. Reported live coding happens on an empty IDE or notepad, so rehearse without autocomplete and clarify inputs, outputs and edge cases before you type.

01

Online Assessment

reported

Candidates describe this stage as an initial assessment of foundational technical competence. Some tracks are reported to use third-party screening platforms or recorded video early in the pipeline, so find out from your recruiter which format you have. No question count or format beyond that is reported, so prepare for the fundamentals that recur across the loop: OOP, data structures and algorithms, SQL and, for some candidates, C#. Do timed practice in your main language on basic string and array problems, and refresh the OOP, SOLID and JOIN material before the link arrives.

What to demonstrate

  • Foundational technical competence, as the stage is described
  • Working command of basics in your primary language
  • Fluency with OOP, DSA and SQL, the topics candidates report most across the loop

How to prepare

  • Solve basic string and array problems in your main language under a timer, with no autocomplete.
  • Revise the four OOP pillars, SOLID, and the four JOIN types so short conceptual answers are automatic.
  • If your track uses a recorded or proctored platform, test camera, microphone and connection beforehand, and practise answering aloud in a clear, steady voice.
Ascendion Software Engineer candidate reports ↗
02

Recruiter Screening Call

reported

Candidates describe a conversation with a recruiter to assess role-specific alignment. Questions candidates report that fit a screening call include why you left your previous organisation and how your technical goals fit Ascendion. Use the call to state your primary stack plainly (Java, .NET, Python or full-stack JavaScript), because later questions are reported to follow it, and to learn which of the later rounds your track includes.

What to demonstrate

  • Fit between your experience and the role's stack
  • Clear spoken communication about your background
  • Motivation for moving, as the reported career-goals question suggests

How to prepare

  • Write a two-minute walk through your resume organised by technology and project, ending with the stack you want to work in.
  • Prepare a neutral, forward-looking answer to why you are leaving, and a specific reason for choosing client-facing engineering work.
  • Ask which rounds apply to your track, whether a client interview is included, and how the engagement works, since one candidate review asks for clearer communication about contractual roles.
Ascendion Software Engineer candidate reports ↗
03

L1 Technical Interview

reported

Candidates describe the first technical interview as covering core programming and framework questions. Reports mention rapid-fire conceptual questions as well as architecture discussion about frameworks, APIs and ORMs. The reported question types here include OOP and language mechanics, REST, Spring Boot or .NET Core with dependency injection, and database basics. Give short, correct definitions followed by a concrete example from your own code, and say so plainly when you do not know a detail, then reason from the principle.

What to demonstrate

  • Core programming knowledge in your primary language
  • Framework mechanics: REST, dependency injection, annotations or attributes
  • Ability to explain concepts concisely and concretely

How to prepare

  • Rehearse the OOP and SOLID answers aloud with one example each from a service-layer class you have written.
  • Be able to explain stack versus heap, garbage collection and reference types, and what static members share across instances.
  • Sketch the request flow of a Spring Boot or .NET Core Web API from controller to repository, and explain how dependency injection wires the pieces.
Ascendion Software Engineer candidate reports ↗
04

L2 Technical Interview

reported

Candidates describe the second technical interview as focused on live coding and database management. Live coding is reported to take place on an empty IDE or notepad, with strings, arrays, matrices and basic data structure implementations as typical material, and SQL covering JOINs, aggregations, subqueries, indexing and execution plans. Confirm input types, outputs and edge cases before writing, speak your reasoning while you code, then walk your solution through a small test case.

What to demonstrate

  • Working code for fundamentals such as strings, arrays and matrices
  • Edge-case handling and the clarity of your reasoning while coding
  • Database skills: query writing, indexes and slow-query reasoning

How to prepare

  • Write string reversal, palindrome and character-frequency solutions in a plain editor, then state time and space complexity for each.
  • Practise matrix rotation, diagonal sum and path-finding on grids, including non-square and one-cell inputs.
  • Write the second-highest-salary query in more than one way, a three-table JOIN with aggregation, and explain which index each query would use.
Ascendion Software Engineer candidate reports ↗
05

Client Interview

reported

Candidates describe a client interview aimed at validating project fit and communication, reported for client-facing roles and roles deployed on direct enterprise accounts, after the internal L1 and L2 rounds. Candidates describe its focus as project alignment and situational problem-solving. Expect to explain what you built, how you decided, and how you would handle an operational issue, in language a client stakeholder can follow.

What to demonstrate

  • Match between your project experience and the client's work
  • Communication with a non-internal audience
  • Situational problem-solving on technical hurdles

How to prepare

  • Write a short summary of your two strongest projects: problem, your own contribution, stack, one trade-off and one measurable result.
  • Practise explaining a technical decision (for example messaging versus direct REST calls) to someone who is not an engineer.
  • Prepare your bug-diagnosis story and your answer on getting up to speed in an unfamiliar legacy application, as both fit client engagements.
Ascendion Software Engineer candidate reports ↗
06

Managerial and HR Discussion

reported

Candidates describe the final stage as a managerial and HR discussion, where compensation and onboarding details are settled. Candidate advice for managerial and behavioural questions is to answer in STAR form with personal contributions and quantified outcomes. Expect questions drawn from the scenario list: priorities and changing requirements, disagreements, and career goals.

What to demonstrate

  • Behavioural answers that show your own contribution
  • Readiness for onboarding onto a client engagement
  • Clarity on logistics such as notice period and location

How to prepare

  • Write STAR outlines for the priorities, disagreement and bug stories, each with a number in the result.
  • Know your notice period, location constraints and expectations before the call, and have onboarding questions ready.
  • Repeat your reason for choosing this role consistently with what you told the recruiter.
Ascendion Software Engineer candidate reports ↗

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

Software Engineer

Ascendion Software Engineer interview: fair project questions followed by silence

Outcome: ghosted

After a recruiter call that pressed for immediate availability, I interviewed that same afternoon. Later, I was told to be ready for a final round in June, so I waited for the next update. What followed was a long silence. After the final-round readiness message, I did not get meaningful updates, and by late July the process still felt unresolved. The uncertainty weighed on me because it gave me…

Read full experience

PracHub editorial advice for the preparation topics above.

01

Listing technologies on the resume that you cannot defend in detail

Candidates report line-by-line scrutiny of listed projects, technologies and team roles. For each item, prepare your own role, one design or database decision, one trade-off and one thing that went wrong. Cut anything you could not discuss for several minutes.

02

Reciting OOP and SOLID definitions with no example

Attach one concrete example from a service layer to each answer: a repository interface injected into a service so tests can substitute a fake, an overridden method chosen at runtime versus an overloaded one chosen at compile time, a class split because it had two reasons to change.

03

Starting to code a string or matrix problem without pinning down the inputs

Confirm input type, expected output and edge cases first, then test with them: empty string, single character, repeated characters, palindrome with spaces or mixed case, negative numbers, a one-cell or non-square matrix. State time and space complexity when you finish.

04

Answering SQL from memorised syntax and missing the traps

For second-highest salary, handle ties, nulls and tables with fewer than two rows. Check whether a JOIN is one-to-many before aggregating. For a slow query, read the execution plan before proposing an index, and explain clustered versus non-clustered storage.

05

Behavioural answers that say 'we' throughout, or criticise a former employer

Use STAR with a clear 'I' for your own actions and a number in the result. For why you left, name a neutral reason and spend the answer on what you want next.

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

19 technical prompts0 include a worked solution

Explain the four pillars of Object-Oriented Programming (OOP) and how you apply them in real-world application

medium
Object-Oriented Programming & Core Langu

Explain the four pillars of Object-Oriented Programming (OOP) and how you apply them in real-world application design.

Approach
  1. Encapsulation: keep fields private and change state only through methods that enforce the invariant, e.g. an Account whose balance moves only through deposit() and withdraw(), and both reject negative amounts.
  2. Abstraction: callers depend on what a component does, not how it does it. A PaymentGateway interface with charge() hides whether the implementation calls one provider or another.
  3. Inheritance models an is-a relationship and reuses base behaviour. Prefer composition when the relationship is has-a or behaviour must change at runtime, because deep hierarchies make base-class changes break subclasses.
  4. Polymorphism comes in two forms. Compile-time polymorphism is overloading. Runtime polymorphism is overriding called through a base reference: a List holding Email and Sms senders replaces a switch on type.
  5. Close with one class from your own project for each pillar. A definition with no applied example reads as memorised.
Follow-up
  • When has inheritance caused you problems, and how would composition have changed the design?
  • What is the difference between encapsulation and abstraction, since both hide something?
  • Show runtime polymorphism in code with a collection of base-class references.

What is the difference between method overloading and method overriding in Java or C#? Give concrete examples.

medium
Object-Oriented Programming & Core Langu

What is the difference between method overloading and method overriding in Java or C#? Give concrete examples.

Approach
  1. Overloading means the same method name with a different parameter list (count, types or order) in one class. The compiler picks the overload at compile time from the static types of the arguments. A different return type alone does not make a valid overload.
  2. Overriding means a subclass supplies its own body for an inherited instance method with the same signature. The JVM or CLR picks the body at runtime from the object's actual type: Shape s = new Circle(); s.draw() runs Circle.draw().
  3. Java rules: non-private, non-static, non-final instance methods are virtual. @Override catches signature typos, return types may be covariant, visibility cannot narrow, and the override cannot throw broader checked exceptions.
  4. C# rules: the base method must be virtual, abstract or override, and the subclass uses override. Using new instead hides the method, so the call is resolved from the variable's static type. sealed override stops further overriding.
  5. Edge cases: static methods are hidden, not overridden. In Java, overload resolution prefers widening over boxing over varargs, so print(long) beats print(Integer) for an int argument.
Follow-up
  • If two overloads take Object and String and you pass a String through an Object-typed variable, which one runs, and why?
  • Can you override a static or private method? What happens if you try?
  • In C#, what does a caller see when a subclass uses new instead of override?

What are the SOLID principles? Explain the Dependency Inversion Principle and how it improves application test

medium
Object-Oriented Programming & Core Langu

What are the SOLID principles? Explain the Dependency Inversion Principle and how it improves application testability.

Approach
  1. Name all five, each with a one-line test. SRP: a class has one reason to change. OCP: add behaviour through new implementations instead of editing tested code. LSP: subtypes must honour the base contract (the Square/Rectangle setter problem). ISP: several small role interfaces instead of one fat one.
  2. DIP: high-level policy and low-level details both depend on an abstraction. OrderService depends on an OrderRepository interface rather than SqlOrderRepository, and gets the concrete class through its constructor.
  3. Testability: in a unit test, pass a fake or a Mockito/Moq mock of the repository. The test then needs no database, runs fast, and can force failure paths such as a timeout or a duplicate key.
  4. Keep the terms apart. DIP is the principle, dependency injection is the technique of supplying dependencies from outside, and an IoC container (Spring's ApplicationContext, .NET's IServiceCollection) automates the wiring.
  5. Trade-off: an interface for every class adds indirection for no benefit. Put abstractions at real seams such as I/O, external APIs, the clock and randomness.
Follow-up
  • Give an LSP violation you have seen in real code and how you fixed it.
  • Constructor injection or field injection: which do you use, and why?
  • How would you unit-test a method that calls System.currentTimeMillis() or DateTime.Now directly?

Explain the purpose of constructors, abstract classes, and interfaces. When would you choose an interface over

medium
Object-Oriented Programming & Core Langu

Explain the purpose of constructors, abstract classes, and interfaces. When would you choose an interface over an abstract class?

Approach
  1. A constructor puts a new object into a valid state. It has no return type, can be overloaded and chained (this(...) in Java, : this(...) in C#), and always runs the superclass or base constructor first. The compiler adds a default constructor only if you declare none.
  2. An abstract class cannot be instantiated. It can hold fields, constructors, implemented methods and abstract methods. A class extends at most one class in both Java and C#.
  3. An interface is a contract, and a class can implement many. Java 8 added default and static methods and Java 9 added private methods. C# 8 added default interface members. Interfaces still hold no per-instance state.
  4. Choose an interface when unrelated classes share a capability (Comparable, IDisposable), when a class needs several types, or when you want a seam for DI and mocking. Choose an abstract class when subclasses share state and a template-method skeleton.
  5. Common trap: abstract classes do have constructors. They run through subclass constructor chaining and initialise the shared fields.
Follow-up
  • Can an abstract class have a constructor, and when does it run?
  • If two interfaces supply the same default method, how does Java make the implementing class resolve it?
  • Why not make every base type an abstract class?

How do static methods and variables differ from instance methods and variables in terms of memory execution?

medium
Object-Oriented Programming & Core Langu

How do static methods and variables differ from instance methods and variables in terms of memory execution?

Approach
  1. Static fields belong to the class, so there is one copy per loaded class. Instance fields belong to each object and are allocated on the heap with every new call. Local variables and references live in the calling thread's stack frame.
  2. Java detail: since Java 8, class metadata lives in Metaspace (PermGen is gone), and in HotSpot the static field values sit with the class's Class object on the heap. Method bytecode is stored once per class for both static and instance methods.
  3. The real difference between the methods is dispatch and context. An instance method receives an implicit this and is dispatched virtually. A static method has no this, cannot touch instance members directly, and is bound at compile time.
  4. Lifetime: a static field lives as long as its class is loaded and acts as a GC root. A static cache or list that only grows is a classic memory leak in a long-running service.
  5. Concurrency: static mutable state is shared by every thread and request. A static counter needs AtomicInteger, Interlocked or synchronisation, while instance state confined to one request needs none.
Follow-up
  • Why can't a static method call an instance method without an object?
  • Where does a local variable declared inside a static method live?
  • How would you find and fix a memory leak caused by a static collection?

Write a program to reverse a string without using built-in library functions.

medium
Practical Coding, Algorithms & Data Stru

Write a program to reverse a string without using built-in library functions.

Approach
  1. Clarify first: return a new string or reverse in place, how to treat null or empty input, and whether the input is ASCII or arbitrary Unicode. Java and C# strings are immutable, so you work on a char array.
  2. Two pointers: i = 0 and j = n - 1, swap chars[i] and chars[j], then move both inward while i < j. That is O(n) time and O(1) extra space beyond the array copy.
  3. Avoid result = result + s[i] in a loop. Each concatenation copies the string, so the loop is O(n^2). Fill a preallocated char array from the back instead.
  4. Test null, empty, a single character, and both odd and even lengths. Reversing UTF-16 code units splits surrogate pairs such as emoji, so reverse by code point if full Unicode matters.
  5. A recursive version works, but it uses O(n) stack depth and can overflow on long input. Say so if you offer it.
Follow-up
  • Reverse the order of words in a sentence while keeping each word's letters in order.
  • How would you reverse a string that contains emoji or combining accents correctly?
  • Reverse only the vowels, or only the letters, leaving other characters in place.

Given a string, write an algorithm to count character frequencies or find repeated characters using streams or

medium
Practical Coding, Algorithms & Data Stru

Given a string, write an algorithm to count character frequencies or find repeated characters using streams or dictionary mappings.

Approach
  1. Count in one pass with a hash map from character to count: O(n) time and O(k) space for k distinct characters. For plain ASCII, an int[128] array indexed by the char is faster and simpler.
  2. For repeated characters, either keep the counts greater than 1, or find the first repeat with a set: Java's Set.add and C#'s HashSet.Add both return false when the element is already present.
  3. Order matters when output is printed. Use LinkedHashMap in Java to keep first-seen order. Python dicts keep insertion order (3.7+) and Counter does the counting. C# Dictionary enumeration order is not guaranteed.
  4. Java streams version: s.chars().mapToObj(c -> (char) c).collect(Collectors.groupingBy(Function.identity(), LinkedHashMap::new, Collectors.counting())) returns Map<Character, Long>. In C# LINQ: s.GroupBy(c => c).Where(g => g.Count() > 1).Select(g => g.Key).
  5. Ask about case sensitivity, spaces and punctuation, and Unicode before coding. Test an empty string, all-identical characters and no repeats.
Follow-up
  • Return the first non-repeating character. What changes in your solution?
  • Check whether two strings are anagrams using the same counting idea.
  • If the input were a stream too large for memory, how would you report the k most frequent characters or words?

Solve a two-dimensional matrix traversal problem (e.g., finding paths or rotating a matrix).

medium
Practical Coding, Algorithms & Data Stru

Solve a two-dimensional matrix traversal problem (e.g., finding paths or rotating a matrix).

Approach
  1. Rotate an n x n matrix 90 degrees clockwise in place: transpose (swap m[i][j] with m[j][i] for j > i), then reverse each row. That is O(n^2) time and O(1) extra space. For counter-clockwise, transpose and then reverse the row order.
  2. A non-square m x n matrix cannot be rotated in place. Allocate an n x m result and set result[j][m-1-i] = a[i][j].
  3. Path counting with right and down moves only: dp[i][j] = dp[i-1][j] + dp[i][j-1], with obstacle cells set to 0. That is O(mn) time, and one rolling row cuts space to O(n). For reachability or shortest path in four directions, run BFS with a visited grid.
  4. Spiral order keeps four boundaries (top, bottom, left, right) and shrinks one after each pass. Re-check top <= bottom and left <= right before the return passes, or a single row or column prints twice.
  5. Diagonal sum: add m[i][i] + m[i][n-1-i] and subtract the centre once when n is odd. Always test the empty matrix, a 1 x n matrix and jagged rows.
Follow-up
  • Rotate by 180 degrees, or counter-clockwise, without extra space.
  • Count the islands of 1s in a grid, and give the complexity.
  • Print the spiral order of a non-square matrix. Which boundary checks change?

Write a program to check whether a given string or number is a palindrome.

medium
Practical Coding, Algorithms & Data Stru

Write a program to check whether a given string or number is a palindrome.

Approach
  1. For a string, compare characters with two pointers moving inward from both ends and stop at the first mismatch: O(n) time, O(1) space. Building a reversed copy also works but costs O(n) memory.
  2. Clarify the rules first. Is the check case-insensitive, and are punctuation and spaces ignored as in 'A man, a plan, a canal: Panama'? If so, skip characters that fail Character.isLetterOrDigit or char.IsLetterOrDigit and compare lowercase.
  3. For a number, build the reverse arithmetically with rev = rev * 10 + x % 10. Negative numbers are not palindromes, and neither is any number ending in 0 except 0 itself.
  4. To avoid overflow, reverse only half the digits. Loop while x > rev, then return x == rev || x == rev / 10, where the second case handles odd digit counts.
  5. Edge cases: null, empty string, a single character, and even versus odd length.
Follow-up
  • Find the longest palindromic substring. What does expand-around-centre cost?
  • Can the string become a palindrome by deleting at most one character?
  • Check whether a singly linked list is a palindrome using O(1) extra space.

The plan moves through the reported rounds: resume and stack first, then OOP, live coding, databases, frameworks, behavioral stories and a full mock loop. Each day points at the reported questions it practises.

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
01Resume audit and your primary stack
  • List every technology and project on your resume, and write your role, one design decision and one trade-off for each.
  • Choose the primary stack (Java, .NET, Python or full-stack JavaScript) you will answer in, and note the equivalents on the other side, such as Hibernate and Entity Framework.
  • Write and speak your two-minute resume walk-through and your answer on why you are leaving and what you want next.

Deliverable: A resume audit sheet with project notes per technology, a spoken two-minute pitch, and a written answer on leaving your previous organisation and your goals.

Practice prompt ↗
02OOP, SOLID and core language mechanics
  • Write one small order-service example in your language that shows abstraction, encapsulation, inheritance and polymorphism.
  • Write a demo of overloading versus overriding, and say which is resolved at compile time and which at runtime.
  • Refactor a class with a hard-coded dependency to constructor injection and test it with a fake, then explain dependency inversion.
  • Write down what static members share, where objects and references live (stack and heap), and when garbage collection frees them.

Deliverable: One runnable file or repository with the four-pillar example, overload/override demo and injected-dependency test, plus spoken answers for the interface versus abstract class decision.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
03Live coding on strings and matrices
  • In a plain editor with no autocomplete, write string reversal without library helpers, palindrome checks for strings and numbers, and character-frequency and repeated-character solutions with a map and, if your language has them, streams.
  • Write matrix rotation by 90 degrees, diagonal sum, and a path-finding traversal on a grid.
  • For each solution, list edge cases, test them, and write the time and space complexity.

Deliverable: A set of solved problems, each with edge-case tests and a one-line complexity note.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
04SQL, indexes and persistence
  • Write queries over three related tables using inner, left, right and full joins, and one that inflates a sum through a one-to-many join, then fix it.
  • Write the second-highest-salary query three ways (subquery with MAX, LIMIT/OFFSET, DENSE_RANK) and compare how each handles ties.
  • Take a slow query, read its execution plan, add an index and explain clustered versus non-clustered storage.
  • Write a Pandas null-cleaning routine with the matching SQL COALESCE version, then explain how HashMap and Hibernate or Entity Framework manage entities.

Deliverable: A SQL file with annotated queries and plans, a null-cleaning script, and spoken answers on indexes, HashMap internals and ORM entity states.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
05Frameworks, REST and microservice messaging
  • Design a small REST resource with methods, status codes and error shapes, and say how you would secure it with OAuth 2.0 and JWT.
  • Draw the request flow of a Spring Boot or .NET Core Web API and explain how dependency injection and annotations or attributes wire it.
  • Compare REST calls with Kafka or MQ messaging for one order flow, and sketch a high-throughput financial-transaction service with retries and idempotency.
  • Write a decision table for React or Vue state (local, server cache, URL, global store) and a list of SPA load-time fixes.

Deliverable: One page of diagrams and tables covering REST, framework flow, sync versus async messaging, frontend state and SPA performance, each rehearsed aloud.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Behavioral stories and client readiness
  • Write STAR outlines with a number in the result for a hard bug, a mid-sprint change in priorities, a technical disagreement and onboarding onto an unfamiliar codebase.
  • Rehearse the bug story using PracHub's latency-spike practice question to practise reading metrics and naming a root cause.
  • Explain one project decision to a non-engineer in under a minute of speech and record yourself.

Deliverable: Four STAR outlines, a practised latency diagnosis, and one recorded explanation for a non-technical listener.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Full-loop mock
  • Answer a rapid-fire set aloud: OOP, SOLID, REST, indexes, HashMap, with one example each.
  • In a plain editor, solve one string problem, one matrix problem and one SQL query, explaining as you go.
  • Test camera, microphone and connection for any recorded or proctored stage, and write the questions you will ask the recruiter and the client.

Deliverable: A mock session log listing answers that were weak, the coding and SQL solutions from the session, and a final question list for the recruiter and client.

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 the scenario and managerial questions cover technical hurdles, working in Agile client teams and recovering from project setbacks. Because engineers are placed with clients, expect your stories to be tested for personal contribution, communication and how you handle shifting requirements. Use STAR, say 'I' for your own actions, and give a measurable result. Two reported questions in this group, null handling in Pandas and React or Vue state, need technical answers instead of stories.

How do you handle and clean null values in a dataset using Python (Pandas and NumPy)?

medium
Practical Coding, Algorithms & Data Stru

How do you handle and clean null values in a dataset using Python (Pandas and NumPy)?

Approach
  1. Profile before fixing: df.info(), df.isna().sum() and df.isna().mean() show which columns are affected and how badly. Look for hidden nulls such as empty strings, 'N/A', -1 or 0 used as a sentinel, and convert them with na_values in read_csv or df.replace(..., np.nan) so they are counted.
  2. Decide per column and say why. Use dropna(subset=[key columns]) when a row is useless without that field or few rows are hit. Impute when dropping would bias the data: median for skewed numerics, mode or an explicit 'Unknown' category for labels, ffill or interpolate only on data sorted by time, and groupby(...).transform('median') when the group explains the value.
  3. Keep the fact that a value was missing: add an is_missing flag column before imputing when absence may carry signal, and log how many rows each rule changed. If the data feeds a model, compute fill statistics on training rows only so test rows do not leak in.
  4. Know the library traps. NaN != NaN, so test with isna(), not ==. An integer column with nulls becomes float unless you use nullable Int64. Pandas sums and means skip NaN by default while np.mean returns nan (use np.nanmean). groupby drops NaN keys unless dropna=False. Prefer df['c'] = df['c'].fillna(x) over chained assignment or inplace.
  5. Close with the SQL side of the same problem: COUNT(col) skips nulls while COUNT(*) does not, AVG ignores nulls, a comparison with NULL is unknown, and COALESCE supplies a default. Say whether a missing value should count as zero or be excluded before you aggregate.
Follow-up
  • When does filling with the mean distort the result, and what would you use instead?
  • The file is too large to load into memory. How do you clean it?
  • How do you confirm that cleaning did not shift the distribution or wipe out an entire segment?

In React or Vue.js, how do you handle state management across complex application component trees?

medium
Frameworks, Microservices & Web Developm

In React or Vue.js, how do you handle state management across complex application component trees?

Approach
  1. Sort state by what it is before choosing a tool. Local UI state stays in the component (useState in React, ref in Vue). Server data belongs in a fetch cache with invalidation (React Query or SWR in React). URL state such as filters and page belongs in the router. Only state that many distant components truly share needs a global store.
  2. Lift state to the nearest common ancestor first. When props pass through many layers, use Context in React or provide/inject in Vue for values that change rarely, such as theme, locale or the signed-in user. Context re-renders every consumer when its value changes, so it is a poor home for fast-changing data.
  3. For shared state with frequent updates, use a store with selectors so each component subscribes to only its slice: Redux Toolkit or Zustand in React, Pinia in Vue. Use a reducer (useReducer or Redux actions) when transitions are complex, so every change is a named event you can log and test.
  4. Store the minimum and derive the rest (useMemo in React, computed in Vue). Keep entities normalised by id so one update does not need edits in several places. Name the trade-off: Redux-style stores cost boilerplate but give traceability and devtools, while lighter stores are quicker to write and easier to misuse.
  5. Cover async edge cases: responses that arrive out of order (cancel or ignore stale requests), optimistic updates with rollback on failure, and stale closures inside effects.
Follow-up
  • A theme toggle and a fast-updating shopping cart are both global. Would they use the same mechanism?
  • Typing in one input re-renders the whole page. How do you find the cause and fix it?
  • Where does fetched data live, and how does it refresh after a mutation?

Describe a challenging bug or performance issue you encountered in a recent project and how you diagnosed and

medium
Scenario-Based & Behavioral Questions

Describe a challenging bug or performance issue you encountered in a recent project and how you diagnosed and resolved it.

Approach
  1. Choose a bug you personally owned whose symptom you can state in numbers: an endpoint that rose from one latency to another, a batch job that missed its window, a memory climb that ended in restarts. Give the situation in two sentences, because the value of the story is in the diagnosis.
  2. Narrate the diagnosis in order: how you reproduced or bounded the problem with logs, metrics or traces; what you ruled out; which tool localised it (profiler, thread or heap dump, SQL execution plan, network trace); and the hypothesis you tested by changing one thing at a time.
  3. State the root cause as a mechanism, not a symptom: an N+1 query from lazy loading, a missing index forcing a full scan, an unbounded cache, a lock held across a remote call, a consumer acknowledging a message before processing it. Use the one you really hit.
  4. Report the result as before and after figures, then say what stops it recurring: a regression test, an alert, a review checklist item or a runbook note. Add what you would do earlier next time.
  5. Avoid three stories that sink this answer: a fix that was a restart or retry with no cause found, a solution a colleague found, and a result with no measurement.
Follow-up
  • How did you confirm that was the root cause rather than a change that happened at the same time?
  • What would you have done if you could not reproduce it outside production?
  • What did you change so the same class of problem is caught earlier?

How do you handle conflicting priorities or changing requirements mid-sprint?

medium
Scenario-Based & Behavioral Questions

How do you handle conflicting priorities or changing requirements mid-sprint?

Approach
  1. Open with the commitment, then the change: what the sprint had promised, what arrived, who asked, and whether it truly could not wait. Show that you first asked what problem the new request solves and by when it is needed.
  2. Size the change quickly and make the trade-off visible: say what moves out of the sprint if the new item moves in. Take that choice to the product owner or whoever owns priority. Your part is the estimate and the risks, not quietly absorbing extra work or silently dropping something.
  3. If the change comes from a client stakeholder, describe how you confirmed the requirement in writing, informed the team, updated the sprint plan or backlog, and kept testing in scope instead of trading it away.
  4. Give the outcome with specifics: what shipped, what was deferred and who agreed. Close with a process fix, such as refinement before sprint start, a small buffer or a change-request step.
  5. The answers that sink this question are 'I worked extra hours' with no prioritisation, and a flat refusal with no alternative offered.
Follow-up
  • Two stakeholders insist their item comes first and neither will give way. What do you do next?
  • Requirements change several times in one sprint. What would you change in how the team works?
  • How did you tell the person whose item was deferred?

Tell me about a time you had a technical disagreement with a team member or tech lead. How did you resolve it?

medium
Scenario-Based & Behavioral Questions

Tell me about a time you had a technical disagreement with a team member or tech lead. How did you resolve it?

Approach
  1. Pick a disagreement with real technical content: synchronous REST versus messaging between services, an ORM versus hand-written SQL, an abstract class versus an interface, adding a cache, or a rewrite versus incremental refactoring. Describe both positions fairly, including the strongest argument on the other side.
  2. Name the criteria you could both accept (latency target, failure behaviour, maintenance cost, deadline) and the evidence that moved the discussion: a spike, a benchmark, a prototype or a short written comparison.
  3. Say who owned the decision. If it went against you, show that you raised the concern once with data, then committed and helped it succeed. If it went your way, show what you conceded and how you kept the other person's concern on the list.
  4. Give the outcome and the working relationship afterwards: what shipped, what was measured and how you collaborated from then on.
  5. Avoid a story where you were simply right and the other person wrong, one where you stayed silent, and any hint of blame.
Follow-up
  • What if the benchmark had shown you were wrong?
  • The tech lead overruled you and you still believed it was a mistake. What did you do?
  • Would you handle it differently today?

Why did you leave your previous organization, and how do your technical career goals align with Ascendion?

medium
Scenario-Based & Behavioral Questions

Why did you leave your previous organization, and how do your technical career goals align with Ascendion?

Approach
  1. Answer in three beats: the factual reason you are moving, framed as a pull toward something rather than a complaint; what you built and learned in your last role; and what you want next. Keep the first beat to a sentence or two and make sure it matches your resume dates and what you told the recruiter.
  2. Do not criticise the previous employer, manager or team. Name constraints neutrally, such as a single stack, a narrow product or little client exposure, and move on to what you want.
  3. Tie your goals to what candidates describe about this role: engineers placed on client engagements, work across several client domains, a mix of backend, frontend and database work, and different stacks between projects. Pick the parts that are true for you and give one piece of evidence that you adapt quickly, such as learning a new framework to deliver a project.
  4. Keep the goals concrete: a stack to go deeper in, a type of problem, or the skill of working directly with client teams. A sentence that would fit any consulting firm adds nothing.
  5. Be ready to say plainly how you feel about moving between client projects and technologies, since that is part of how the role is described.
Follow-up
  • How would you feel about switching stack or domain when a client project ends?
  • What would make you leave this role as well?
  • Which part of your current work do you most want to keep doing here?

What steps do you take when onboarding onto an unfamiliar codebase or legacy client application?

medium
Scenario-Based & Behavioral Questions

What steps do you take when onboarding onto an unfamiliar codebase or legacy client application?

Approach
  1. Start by getting it running: clone, build, run the tests, start the app locally with seed data. Note every missing step and fix the README as you go. A build you cannot reproduce is a blocker to name early.
  2. Read from the outside in: the README, any architecture diagram, deployment configuration, then trace one real use case end to end (entry point, controller or handler, service, data access, database) and write the trace down. Map external dependencies such as queues, other services and scheduled jobs.
  3. Treat history and tests as documentation: git log and blame on the most-changed files, the issue tracker for recurring defects, and existing tests for intended behaviour. If tests are absent, write characterisation tests that pin current behaviour before editing.
  4. Learn from people with a short, prepared question list: who owns each area, what is fragile, what failed in production lately. Make a small first change or bug fix to exercise the review and deployment path.
  5. In legacy and client settings, do not rewrite what you do not yet understand. Change in small, reversible steps behind tests, record decisions, and confirm access, environments and change windows with the client contact.
Follow-up
  • There is no documentation and the original authors have left. What do you do first?
  • How do you decide what to refactor and what to leave alone?
  • How do you avoid breaking a client's production while you are still learning the system?
  • 01

    Describe a challenging bug or performance issue you encountered in a recent project and how you diagnosed and resolved it.

  • 02

    How do you handle conflicting priorities or changing requirements mid-sprint?

  • 03

    Tell me about a time you had a technical disagreement with a team member or tech lead. How did you resolve it?

  • 04

    Why did you leave your previous organization, and how do your technical career goals align with Ascendion?

  • 05

    What steps do you take when onboarding onto an unfamiliar codebase or legacy client application?

  • 06

    Walk me through one project on your resume: your exact role, the database and deployment choices, and one trade-off you made.

PracHub preparation framework ↗
How many rounds does the Ascendion Software Engineer loop have?

Candidates report six rounds: online assessment, recruiter screening call, L1 technical interview, L2 technical interview, client interview and managerial and HR discussion, over roughly 4-6 weeks. Other reports describe a shorter pipeline of three to four stages, because the client interview applies to client-facing and direct enterprise-account roles. Ask your recruiter which stages your track includes.

PracHub Software Engineer practice ↗
What do the technical rounds cover?

Reported topics are OOP and SOLID, language mechanics, string and array coding, matrix problems, SQL JOINs and indexing, REST, Spring Boot or .NET Core, microservice messaging and ORMs. L1 is described as core programming and frameworks, and L2 as live coding and database management. Candidates describe the difficulty as average to moderately challenging.

PracHub Software Engineer practice ↗
Which language and stack should I prepare in?

Candidates say questions depend on your primary stack: Java, .NET, Python or full-stack JavaScript. Choose the one you know best, use it for live coding, and learn the equivalent terms on the other side because many reported questions say 'Java or C#' or 'Hibernate or Entity Framework'. Add Python with Pandas and NumPy if it is on your resume.

PracHub Software Engineer practice ↗
How much will my resume be examined?

Candidates report that technical panels go through listed projects, technologies and roles line by line. Prepare each project with your own contribution, the design and database decisions, the deployment path and one performance or reliability result, and remove skills you cannot discuss in depth.

PracHub Software Engineer practice ↗
Do I need system design or advanced topics?

Reported example prompts include designing a microservice architecture for high-throughput financial transactions and securing REST APIs with OAuth 2.0 and JWT. Less common topics are the Saga pattern, circuit breakers, Docker, Kubernetes, sharding, MongoDB, generics, reflection, thread safety, graphs and dynamic programming. Secure the fundamentals first, then add these as extras.

PracHub Software Engineer practice ↗
What if I get a rapid-fire question I cannot answer?

Candidates report rapid-fire conceptual questions in some interviews. Say plainly what you do not know, then explain the principle you would reason from, such as how you would check the framework documentation or test the behaviour. A short, honest answer with correct fundamentals is better than a guess.

PracHub Software Engineer practice ↗
How should I prepare for the online assessment and recorded stages?

Candidates report that some tracks use third-party screening platforms or recorded video early on. Test your camera, microphone and connection beforehand, practise timed basic problems in your main language, and speak your reasoning clearly. Ask your recruiter for the exact format when you book.

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.