Astrotalk · Software Engineer
Updated · 2026-10-02

Astrotalk Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Astrotalk is a platform that puts users in touch with astrological services in real time. Candidates describe the Software Engineer role as backend-leaning: live interactions between users, scheduling, and requests that pull a lot of data. The backend languages named are Node.js, Java and Python, alongside SQL databases. Cloud infrastructure on AWS or GCP and NextAuth-style authentication appear as nice-to-have items, and the role description mentions working with product and operations teams.

This guide is for candidates interviewing for a Software Engineer position at Astrotalk. It covers the algorithm, dynamic programming, backtracking and puzzle questions that candidates report, the SQL, DBMS and schema-design topics behind the system design discussion, and the behavioral questions about past projects, motivation, debugging and changing requirements. No fixed round order has been reported, so the guide is organised by question type and ends with a plan that works whatever order your recruiter gives you.

Candidates describe a multi-stage process that moves from an HR screening through several technical sessions to a managerial conversation. The number of rounds varies, and some candidates report slow replies between stages. No official round order is reported, so confirm the sequence with your recruiter.

Data Structures & Algorithms (DSA)Dynamic Programming (DP)Problem Solving / Algorithmic Reasoning

28 min read

Browse Software Engineer questions

See the practice prompts

13Practice promptsAcross five skill areas

The reported technical questions cluster around data structures and algorithms. The 25 horses puzzle is a reasoning problem with a numeric answer you have to justify. The leaderboard and the high-traffic ranking question are about picking a structure that stays fast as scores change and readers pile up. The longest increasing subsequence question is a dynamic programming staple, and the backtracking question is about pruning a search. Graph traversals and tree manipulation are also listed as areas to be ready for, so keep a few of those in rotation.

The second strand is data. The requirements candidates describe list SQL and DBMS knowledge as a must-have, and database schema design is the one system design topic named explicitly. Reported design components include user management, real-time queues and notification systems. Prepare to say why a table is shaped the way it is: which key identifies a row, which index serves the hot query, and what happens to latency when a table grows. Candidates also say that experience with performance tuning and query optimization is worth bringing up, so have one tuning story with your own before-and-after measurements.

The third strand is your own history. Reported behavioral questions ask for your most challenging project, why you want to change roles, how you debug a critical production issue and a time you pivoted your technical strategy. These are answered from your real work, so choose the stories early and rehearse them with specifics: what you owned, what you measured, what you changed. Practising them out loud matters as much as the coding practice, because they reward concrete detail and a clear structure.

01

Preparation focus

editorial

Candidates describe a progression that starts with an HR screening and ends with a managerial assessment, with several technical sessions in between and a round count that varies. Puzzles, dynamic programming, backtracking, SQL and database schema design are the reported technical topics, and candidates mention sharing a screen and writing code without an IDE. Since the order is not reported, ask your recruiter which stages you will face and whether each one involves code. Then cover every reported topic rather than betting on one.

What to demonstrate

  • Fluency in the reported algorithm topics: dynamic programming, backtracking, graph traversals and tree manipulation
  • Ability to justify the time and space complexity of the solution you write
  • SQL and DBMS knowledge, including how you design a database schema
  • A clear account of your past projects and your reasons for changing roles

How to prepare

  • Write solutions to the reported coding questions (leaderboard, longest increasing subsequence, backtracking with pruning) in a plain editor with no autocomplete, then state their complexity aloud
  • Work out the 25 horses puzzle on paper until you can explain why your race count is both enough and the minimum
  • Sketch a schema for a service with users and scheduled live sessions, and justify every key and index you add
  • Prepare four stories: a challenging project, a reason for moving, a production incident and a change of technical direction
PracHub preparation framework ↗

PracHub editorial advice for the preparation topics above.

01

Giving the horses puzzle answer as a bare number with no argument

Group the horses, say what each race eliminates, and be able to defend why fewer races cannot work. State your assumptions first, for example that races give only an order and no times, and that no two horses tie. A candidate who reasons aloud can recover from a slip; a candidate who recites an answer cannot.

02

Building the leaderboard with a list that is re-sorted on every score update

Name the operations first: update a score, read the top k, read a user's rank. Then choose a structure that serves them, and say what each costs. Be ready to discuss the high-traffic ranking variant, where read volume and update volume pull the design in different directions, and the choice between a balanced tree and a heap.

03

Writing longest increasing subsequence or the backtracking solution without a stated complexity or edge cases

Say the recurrence or the pruning rule before the code, then give the time and space cost. Test an empty array, a strictly decreasing array and duplicate values. Know the faster approach beyond the quadratic dynamic programming version, in case you are asked to improve it.

04

Treating schema design as a list of tables with no reasoning

For every table say what identifies a row, which queries are hot and which index serves them. Describe what changes as data grows. Candidates report that the reasons behind database and latency choices matter, so practise saying why, not only what.

05

Answering the behavioral questions with 'we' stories and no measurable result

Write down your own contribution for each story and one number you can defend. Prepare the challenging-project, reason-for-moving, production-debugging and pivot questions in advance so you do not improvise them. Never criticise your current employer when you explain why you want to move.

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

10 technical prompts0 include a worked solution

Given 25 horses, find the minimum number of races to get the top 3 winners if only 5 horses can race at once.

medium
Data Structures and Algorithms

Given 25 horses, find the minimum number of races to get the top 3 winners if only 5 horses can race at once.

Approach
  1. State the assumptions first: each horse runs at a fixed speed every time, there are no ties, and a race only tells you finishing order, not times. The answer depends on all three.
  2. Races 1-5: split the 25 horses into five groups of five and race each group. Every horse has now run, and you know the order inside each group.
  3. Race 6: race the five group winners. Label the groups A to E by how their winners finished. A1 is the fastest horse overall. All of D and E drop out, because at least three horses beat each of them. C2 and below drop out (A1, B1 and C1 beat them), as do B3 and below, and A4 and A5.
  4. Race 7: only A2, A3, B1, B2 and C1 can still be 2nd or 3rd overall, which is exactly five horses. Race them, and the top two finishers are 2nd and 3rd. The total is 7 races.
  5. Back up the minimum: any schedule needs at least 5 races just so every horse runs once. Draw the elimination table (who has beaten whom) so you can show why each removed horse can no longer finish in the top three.
Follow-up
  • Why can't six races be enough?
  • How many races would you need to find the top 5, or to find only the fastest horse?
  • How would you generalize this to n horses with k lanes per race?

Implement a Leaderboard system with its core functionality.

medium
Data Structures and Algorithms

Implement a Leaderboard system with its core functionality.

Approach
  1. Pin down the API before coding. A typical set is addScore(playerId, delta), top(k) returning the k best players or their score sum, reset(playerId), and possibly getRank(playerId). Also settle how ties are ordered: by score, then by earliest timestamp or by id.
  2. Core design: a hash map from player to current score, plus an ordered structure keyed by (score descending, tie-breaker). That can be a balanced BST or sorted map (TreeMap/TreeSet in Java, SortedList in Python) or a skip list. An update removes the old key and inserts the new one in O(log n). top(k) walks the first k entries in O(k) after an O(log n) seek.
  3. Simpler option: keep only the hash map and answer top(k) with a min-heap of size k, which costs O(n log k) per query and O(1) per update. Pick this when updates far outnumber reads. Pick the ordered structure when reads of the top dominate.
  4. getRank needs an order-statistic tree (each node stores its subtree size) to stay O(log n). If scores are bounded integers, a Fenwick tree indexed by score that counts players at each score answers 'how many players score above me' in O(log S).
  5. Edge cases: addScore for a player who doesn't exist yet, k larger than the number of players, reset for an unknown player, negative deltas, and several players tied on the boundary score of the top k.
Follow-up
  • How would you return the rank of any player, not just the top k, in O(log n)?
  • What changes if the leaderboard must reset daily or weekly?
  • How would you make addScore safe when many threads call it at the same time?

Solve the Longest Increasing Subsequence (LIS) problem using dynamic programming.

medium
Data Structures and Algorithms

Solve the Longest Increasing Subsequence (LIS) problem using dynamic programming.

Approach
  1. Define the variant first: strictly increasing or non-decreasing, and whether you return the length or the subsequence itself. Say up front that the answer for an empty array is 0.
  2. O(n^2) DP: dp[i] is the length of the longest increasing subsequence that ends at index i. Set dp[i] = 1 + max(dp[j]) over all j < i with a[j] < a[i], or 1 if no such j exists. The answer is max(dp), not dp[n-1]. Space is O(n).
  3. O(n log n) patience method: tails[len] holds the smallest possible tail of an increasing subsequence of length len+1. For each x, binary-search the first tail >= x (lower_bound, Python bisect_left) and overwrite it, or append x if every tail is smaller. The answer is len(tails). For the non-decreasing variant, search for the first tail > x (upper_bound / bisect_right) instead.
  4. Point out that tails is generally not a valid subsequence. To rebuild one, store the index of the element at each tails position plus a parent pointer to the previous position's index at insert time, then walk back from the last tail.
  5. Test with [10,9,2,5,3,7,101,18] (answer 4), an all-equal array (1 if strict, n if non-decreasing), a strictly decreasing array (1) and a single element.
Follow-up
  • How would you count the number of distinct longest increasing subsequences?
  • How does this solve Russian doll envelopes, and why do you sort by width ascending and height descending?
  • Can you print the actual subsequence from the O(n log n) version?

Optimize a solution using backtracking to handle search constraints.

medium
Data Structures and Algorithms

Optimize a solution using backtracking to handle search constraints.

Approach
  1. Ask for the concrete problem first (N-Queens, Sudoku, combination sum, word search, subsets with constraints), then write the choose / explore / unchoose template: add a candidate to the partial state, recurse, then undo it so the state is restored for the next branch.
  2. Make constraint checks O(1) so they don't scan the board. For N-Queens, keep sets or bitmasks for used columns, r-c diagonals and r+c anti-diagonals. For Sudoku, keep a 9-bit mask per row, column and box.
  3. Prune as early as possible. Sort the candidates and break once the running sum passes the target in combination sum. Skip duplicate values at the same depth (i > start and a[i] == a[i-1]) so the output has no duplicate combinations. Fill the most-constrained cell first in Sudoku, choosing the cell with the fewest legal digits.
  4. Be honest about complexity: the worst case stays exponential (subsets O(n * 2^n), permutations O(n * n!), N-Queens bounded by O(n!)). Pruning cuts the typical search, not the worst-case bound. If the same subproblem comes up on different paths, add memoization, which turns it into DP.
  5. Edge cases: no valid solution, so return empty and still terminate. The difference between returning the first solution early and collecting all of them. Recursion depth for large inputs.
Follow-up
  • When would you replace backtracking with dynamic programming for this problem?
  • How would you count solutions instead of listing them, and does that change what you can prune?
  • How would you write this iteratively with an explicit stack?

Explain the choice of data structure when building a high-traffic ranking system.

medium
Data Structures and Algorithms

Explain the choice of data structure when building a high-traffic ranking system.

Approach
  1. Name the operations and their load first: frequent score updates, top-k reads, and 'what is my rank' reads, plus a rough player count and update rate. The data structure follows from that mix.
  2. In memory, a sorted set (skip list or balanced BST plus a hash map from member to score) gives O(log n) updates and rank lookups and O(log n + k) top-k reads. Redis sorted sets are built this way: ZINCRBY and ZREVRANK are O(log N), and ZREVRANGE is O(log N + M).
  3. Contrast it with a relational table. ORDER BY score DESC LIMIT k is cheap with an index on score. But a player's rank needs COUNT(*) WHERE score > mine, which scans part of the index every time. That is why you serve rank from the sorted structure and keep the database as the durable source the cache is rebuilt from.
  4. Scale-out: shard by player and keep a top-k in each shard. The global top k is a merge of the shard top-k lists, because any global top-k player must be in their own shard's top k. An exact global rank needs a count from every shard. For long-tail players, an approximate rank from score-bucket counts is usually acceptable.
  5. Hot-path trade-offs: batch or coalesce increments for very active players, decide how ties are broken (timestamp or id in the sort key), and plan how a periodic reset works (a new key per period instead of deleting entries).
Follow-up
  • How do you rebuild the in-memory ranking if the cache node is lost?
  • How would you show a player their rank and the players just above and below them?
  • When is an approximate rank acceptable, and how would you compute it?

The plan follows the reported topics in order of how much practice each needs: puzzles and dynamic programming first, then ranking and backtracking, SQL and schema design, system components, and the behavioral set, ending with a full mock. PracHub's own practice questions are linked where they cover the same skills.

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
01Pin down the format and list the topic gaps
  • Ask the recruiter which stages you will face, whether each one involves code, and whether you will share your screen without an IDE.
  • Write a checklist of the reported topics: puzzles, dynamic programming, backtracking, graph traversals, tree manipulation, SQL and schema design.
  • Mark each topic as solid, rusty or untouched, and put the rusty and untouched ones at the front of days 2 to 5.

Deliverable: The recruiter's answer on format and a one-page topic checklist with each item rated.

02Puzzle reasoning and dynamic programming
  • Solve the 25 horses puzzle on paper, then explain aloud why your race count is enough and why it cannot be lower.
  • Write the longest increasing subsequence solution with a dynamic programming table, state its complexity, and test it on an empty, a strictly decreasing and a duplicate-heavy input.
  • Rewrite it with the faster approach you know and compare the two costs.

Deliverable: A written puzzle argument, plus two tested LIS solutions with their complexities.

Practice prompt ↗Practice prompt ↗
03Backtracking and the ranking structure
  • Write a backtracking solution to a constrained search problem, add a pruning rule, and say how much the pruning saves.
  • Implement a leaderboard with add or update score, top k and rank of a user, and state the cost of each operation.
  • Write half a page on which structure you would pick for a high-traffic ranking system, and what changes if updates dominate or reads dominate.

Deliverable: A pruned backtracking solution, a working leaderboard with operation costs and a half-page data structure comparison.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
04SQL, DBMS and schema design
  • Sketch a schema for users and scheduled live sessions, and write the key, the index and the reason for each table.
  • Work the SQL practice questions on detecting a concurrent edit and on joins that fan out a page.
  • Write the two or three queries your schema must serve fastest and explain how an index changes their cost.

Deliverable: A schema sketch with justified keys and indexes, plus solved practice queries.

Practice prompt ↗Practice prompt ↗
05System design components
  • Outline user management, a real-time queue and a notification service, naming the data each one stores and where latency could build up.
  • Work the practice design questions on cursor pagination and on a failure taxonomy for write endpoints.
  • Pick one component and describe how it behaves when load grows tenfold.

Deliverable: Three component outlines and one tenfold-load analysis.

Practice prompt ↗Practice prompt ↗
06Behavioral stories and debugging
  • Write STAR outlines for the challenging project, the reason for changing roles and the pivot, each with one number and a statement of what you personally owned.
  • Rehearse the production debugging answer as an ordered sequence: what changed, what the monitoring shows, how you narrow down the cause, how you fix and verify it.
  • Record yourself answering all four and cut anything that does not carry evidence.

Deliverable: Four written story outlines and one recorded run-through.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Full dry run
  • Run a timed mock with one puzzle, one coding question written without an IDE and one behavioral question, talking through assumptions throughout.
  • Fix the weakest answer from the mock and redo it.
  • Write the two questions you will ask the team, such as how they handle technical debt or balance speed and quality.

Deliverable: A completed mock, one improved answer and two questions to ask.

Practice prompt ↗Practice prompt ↗Practice prompt ↗

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

Behavioral conversations are reported to cover your past project work and your reasons for moving, and the debugging question tends to be answered from experience too. Each answer should show a decision you made, the evidence behind it and the result. For this role, favour stories about backend, database or performance work.

Walk me through your most challenging project at your previous company.

medium
Behavioral and Project Experience

Walk me through your most challenging project at your previous company.

Approach
  1. Choose a project where you owned a decision and its outcome, ideally backend or data work, because the role is described as backend and database heavy. Open with a two-sentence setup: what the system did, who depended on it and why the project was hard.
  2. Spend most of your time on the reasoning. Name the two or three options you weighed, the constraint that ruled out the obvious one and why you picked your design. Be explicit about which parts you wrote or decided and which a teammate did.
  3. Give measurable evidence: latency before and after, error rate, query time, load handled. Say how you measured it, because a number with no method is easy to doubt.
  4. Include one real setback, such as a failed approach, a missed estimate or a production issue you caused, and what you changed afterwards. Close with the lasting result and what you would do differently.
Follow-up
  • What was the hardest technical decision on that project, and what did you reject?
  • How did you know your change, and not something else, caused the improvement?
  • If you ran the project again with the same team, what would you change first?

Why are you looking to change your current role?

medium
Behavioral and Project Experience

Why are you looking to change your current role?

Approach
  1. Give a forward-looking answer in two parts: what you have gained in your current role, then the specific work you want more of. Connect it to what is reported for this role: backend optimization, database work and systems that run under live, high-traffic load.
  2. Never run down your current employer, manager or team. Phrase the reason as a gap between the scope you have now and the scope you want, with a concrete example such as 'I have tuned queries on a modest dataset and want to do that where concurrency is the main constraint'.
  3. Back the motivation with action: a side project, an on-call rotation you volunteered for, a load test you ran. It shows the interest existed before this interview.
  4. Tie it to this role in particular by referring to the product, a real-time service with scheduling and live interactions, and say what part of its backend you would like to work on. Finish on what you can contribute in the first months.
Follow-up
  • What would make you leave the next role, too?
  • Did you try to get that kind of work in your current job first, and what happened?
  • What do you know about our product, and how would you improve its backend performance?

Describe a time you had to pivot your technical strategy due to changing requirements.

medium
Behavioral and Project Experience

Describe a time you had to pivot your technical strategy due to changing requirements.

Approach
  1. Use STAR but weight it toward Action. Situation: the original plan and the technical strategy built on it. Task: the requirement change and what it invalidated. Then the decision, which is the heart of the answer.
  2. Show how you decided what to keep and what to throw away. Describe the sunk cost, such as a schema, a service boundary or a half-built queue, and the reason you abandoned or reused it, with the alternatives you compared by cost, risk and schedule.
  3. Cover communication: who you told, how you reset the plan with product or operations colleagues, and how you protected work already shipped. A pivot you made silently, or alone, is a weak story.
  4. Finish with a measured outcome and the lesson. Avoid a story where you simply complied, and avoid blaming the people who changed the requirements; say what you would now do to make the system easier to change.
Follow-up
  • How much work did you throw away, and how did you justify that?
  • Could you have anticipated the change, and what do you do now to keep designs flexible?
  • How did you get the rest of the team to accept the new direction?
  • 01

    Walk me through your most challenging project at your previous company.

  • 02

    Why are you looking to change your current role?

  • 03

    How do you approach debugging a critical production issue?

  • 04

    Describe a time you had to pivot your technical strategy due to changing requirements.

  • 05

    Tell me about a time you tuned a slow query or endpoint and how you proved it was faster.

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

Candidates describe anything from a few weeks to about a month, depending on how many rounds you are given. Some report long gaps with no news between stages. Ask your recruiter for the sequence at the start and send a polite follow-up if a gap runs long.

Astrotalk Software Engineer candidate reports ↗
How should I prepare for the puzzle questions?

The reported example is the 25 horses puzzle, so practise working a puzzle on paper and explaining why your answer is both sufficient and minimal. State your assumptions, break the problem into groups, and say what each step eliminates. Mathematical logic problems of that kind reward the habit of thinking out loud.

Astrotalk Software Engineer candidate reports ↗
Which languages and frameworks should I know?

The role description candidates see lists Node.js, Java and Python as example backend languages and names SQL and DBMS as must-haves. Candidates also mention Node.js and React coming up if they appear in the initial screening. AWS or GCP and NextAuth are nice-to-have, so read about them but put fundamentals first.

Astrotalk Software Engineer candidate reports ↗
What helps me stand out?

Candidates report that performance tuning and database query optimization experience helps. Prepare one concrete story with a before-and-after measurement from your own work. In design discussions, justify each choice against the constraints of the problem rather than listing generic components.

Astrotalk Software Engineer candidate reports ↗
Will I have to write code without an IDE?

Candidates say to expect sharing your screen and writing code without IDE help. Practise in a plain editor, without autocomplete, running your own test cases by hand, and say the complexity of your solution aloud when you finish.

PracHub Software Engineer practice ↗
Which topics are worth the most practice time?

Reported topics are DSA, dynamic programming, general problem solving, SQL and system design. A sensible split is puzzles and dynamic programming first, then the ranking and backtracking questions, then schema design, and finally your behavioral stories. The plan on this page follows that order.

Astrotalk Software Engineer candidate reports ↗
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.