cswork / libraryOpen practice workspace

Interview guides · Sojern

Sojern Software Engineer Interview Guide

Sojern Software Engineer interview guide: reported rounds, questions and how candidates describe the process.

The 60-second brief

As a Software Engineer at Sojern, you will be at the core of a high-performance engineering team that powers the travel industry's leading marketing platform. Sojern processes billions of real-time travel intent signals from global search and booking data to help brands reach travelers across multi-channel campaigns. In this role, you will build, scale, and optimize the backend services, real-time bidding systems, and data pipelines that make these complex advertising decisions in milliseconds. The engineering team deals with massive scale and high-throughput infrastructure. Your work will directly impact the platform's reliability, latency, and ability to process complex data streams.

This guide is scoped to a Software Engineer candidate at Sojern.

Focus areas

  • Python
  • SQL
  • System Design

The Sojern interview process

Sojern candidates report 4 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.

Recruiter Screen

Initial conversation to discuss your background and align expectations.

What to demonstrate

  • Initial conversation to discuss your background and align expectations
  • Depth in Python

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.

Hiring Manager Interview

Discussion with the hiring manager to explore your technical experience in depth.

What to demonstrate

  • Discussion with the hiring manager to explore your technical experience in depth
  • Depth in Python

How to prepare

  • Prepare two projects you led end to end, each with the decision you owned and what it cost.
  • Have three questions about the team's roadmap and how success is measured in the first six months.

Take-Home Assessment

A practical coding challenge in Python to demonstrate your hands-on skills.

What to demonstrate

  • A practical coding challenge in Python to demonstrate your hands-on skills
  • Depth in Python

How to prepare

  • Answer aloud and timed: Write a query to find the second-highest booking value from a table of transaction records.
  • Answer aloud and timed: How would you join a travel search intent table with a conversions table to calculate the conversion rate per destination?

Multi-Round Panel Interview

Structured panel interview covering SQL, Python live coding, System Design, and Behavioral evaluations.

What to demonstrate

  • Structured panel interview covering SQL, Python live coding, System Design, and Behavioral evaluations
  • Depth in Python

How to prepare

  • Answer aloud and timed: Write a query utilizing aggregate functions and GROUP BY to find the top five travel destinations by search volume in the last 30 days.
  • Answer aloud and timed: Explain the difference between an INNER JOIN, LEFT JOIN, and OUTER JOIN, and provide a scenario where a LEFT JOIN is necessary for reporting.

Where candidates lose points

Structure your resume stories

Interviewers place a high value on your past experience. Prepare 3-4 detailed stories about your previous projects, emphasizing the technical trade-offs you made, the scale of the data you handled, and the business impact of your work.

Watch the clock during the panel

The onsite rounds are tightly scheduled at 45 minutes each. Keep your answers focused and monitor the time, especially during the coding and SQL rounds, to ensure you complete the core requirements of each question.

Show interest in the travel industry

Demonstrating an understanding of travel search patterns, booking funnels, or ad tech concepts can significantly set you apart from other candidates during conversations with hiring managers and directors.

Communicate your thought process

Whether you are writing Python code or designing a database schema, talk through your reasoning. Interviewers are interested in how you arrive at a solution and how you handle feedback or hints when you get stuck.

Questions & practice

How do you find a missing number between two arrays where one contains $n$ unique elements and the other conta

Medium · Coding & Algorithms

How do you find a missing number between two arrays where one contains $n$ unique elements and the other contains $n-1$ of those same elements?

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Write a function to reverse a string or check if a string is a palindrome, optimizing for space complexity.

Medium · Coding & Algorithms

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Given an array of integers, return the indices of the two numbers that add up to a specific target.

Medium · Coding & Algorithms

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Write a query to find the second-highest booking value from a table of transaction records.

Medium · SQL & Data Manipulation

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

How would you join a travel search intent table with a conversions table to calculate the conversion rate per

Medium · SQL & Data Manipulation

How would you join a travel search intent table with a conversions table to calculate the conversion rate per destination?

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Write a query utilizing aggregate functions and GROUP BY to find the top five travel destinations by search

Medium · SQL & Data Manipulation

Write a query utilizing aggregate functions and GROUP BY to find the top five travel destinations by search volume in the last 30 days.

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Explain the difference between an INNER JOIN, LEFT JOIN, and OUTER JOIN, and provide a scenario where a

Medium · SQL & Data Manipulation

Explain the difference between an INNER JOIN, LEFT JOIN, and OUTER JOIN, and provide a scenario where a LEFT JOIN is necessary for reporting.

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Implement a basic rate limiter or helper function to parse and clean incoming travel search query strings.

Medium · Coding & Algorithms

Approach

  1. Say who the caller is and what they do when the call fails halfway.
  2. Define the identity of a request so a retry cannot double-apply it.
  3. Separate accepted, pending, failed and confirmed; they are different facts.
  4. Design the error taxonomy before the success shape; callers branch on it.

Follow-up

  • What happens if the caller retries after a timeout?
  • How does a client discover it is on an old version of this contract?

How would you design a schema to store and query high-volume travel search data?

Medium · System & Data Design

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Design a real-time tracking system that counts the number of ad impressions served per campaign.

Medium · System & Data Design

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Explain how you would design a backend API to support a travel booking dashboard used by external clients.

Medium · System & Data Design

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Describe a situation where you had to debug a critical production issue under tight time pressure.

Medium · Behavioral & Experience

Approach

  1. Establish what changed and when, before forming any theory.
  2. Pick a bisection that eliminates candidates whichever way it turns out.
  3. Check the instrumentation before believing the symptom.
  4. Separate the trigger from the cause; the deploy is rarely the bug.

Follow-up

  • What would you look at first, and what would it rule out?
  • How would you tell a cause from a coincidence here?

Suggested practice checklist

Built from the rounds and topics Sojern candidates report.

Day 1 — Map the Sojern loop

  • Write out the reported sequence: Recruiter Screen, Hiring Manager Interview, Take-Home Assessment, Multi-Round Panel Interview.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

Deliverable: A one-page map of the 4 reported rounds, with the weakest marked.

Day 2 — Work Python

  • Spend the session on Python, which Sojern candidates report being tested on.
  • Write one worked example in Python and time yourself on it.

Deliverable: One timed worked example in Python.

Day 3 — Work SQL

  • Spend the session on SQL, which Sojern candidates report being tested on.
  • Write one worked example in SQL and time yourself on it.

Deliverable: One timed worked example in SQL.

Day 4 — Work System Design

  • Spend the session on System Design, which Sojern candidates report being tested on.
  • Write one worked example in System Design and time yourself on it.

Deliverable: One timed worked example in System Design.

Day 5 — Answer out loud: Coding & Algorithms

  • Answer aloud, timed: How do you find a missing number between two arrays where one contains $n$ unique elements and the other contains $n-1$ of those same elements?
  • Answer aloud, timed: Write a function to reverse a string or check if a string is a palindrome, optimizing for space complexity.

Deliverable: Spoken answers to 2 reported Coding & Algorithms question(s), under time.

Day 6 — Answer out loud: SQL & Data Manipulation

  • Answer aloud, timed: Write a query to find the second-highest booking value from a table of transaction records.
  • Answer aloud, timed: How would you join a travel search intent table with a conversions table to calculate the conversion rate per destination?

Deliverable: Spoken answers to 2 reported SQL & Data Manipulation question(s), under time.

Day 7 — Answer out loud: System & Data Design

  • Answer aloud, timed: How would you design a schema to store and query high-volume travel search data?
  • Answer aloud, timed: Design a real-time tracking system that counts the number of ad impressions served per campaign.

Deliverable: Spoken answers to 2 reported System & Data Design question(s), under time.

Behavioural preparation

Behavioural rounds judge the decision you made and what it cost.

How do you handle data consistency and latency when syncing search data across multiple geographical regions?

Medium · System & Data Design

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Walk me through a challenging technical project on your resume, explaining the trade-offs you made during the

Medium · Behavioral & Experience

Walk me through a challenging technical project on your resume, explaining the trade-offs you made during the design phase.

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Describe a time when you had a disagreement with a team member or product manager. How did you resolve it?

Medium · Behavioral & Experience

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Why do you want to work at Sojern, and what interests you about the travel technology industry?

Medium · Behavioral & Experience

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?