Pair Programming interviews at TransferWise

Engineering

Our technical interviewing process starts with a relatively short Pair Programming session where we’ll aim to see if there’s a mutual fit before we proceed to the main interviewing round.

What is a Pair Programming interview

The goal of a Pair Programming interview is to understand your technical skills more in-depth. We do this with a coding task that takes about 30-45 minutes.

To carry out the Pair Programming interview, we’ll use an interactive coding platform on HackerRank where the idea is for you to collaborate with your interviewer to solve a technical task.

How we evaluate Pair Programming interviews:

  • Collaboration and communication: How you work together with us to solve the problem and communicate and rationalise your choices. We want to understand how you approach the problem and why you approach it this way, along with how you design your solution and incorporate feedback and suggestions into it
  • Architecture: How you approach architecture of your code – why you make certain decisions over others and how you look at trade-offs when building your code
  • Problem solving: How you approach a non-trivial problem within a set time
  • Code quality: We’ll also want to get an understanding of the clarity, testability and readability of your code

What to expect from a Pair Programming interview

What Pair Programming interview is about:

✔️ Questions on algorithms, data structures, space/time complexity, concurrency

What Pair Programming interviews are not about:

✖️ System design – this will be the focus of another interview

✖️ Riddles, trick questions or logic puzzles

✖️ General non-coding questions about things like your past experience, projects and so on

 

Our Pair Programming interviews consist of questions on coding and architecture/design:

Coding

During a coding interview, we’ll assess whether you can write code that’s correct, readable and well thought-through. We’re mostly interested to learn how you think so please provide a narrative as you go through the code. 

We don’t care what programming language you use, so feel free to use the one you’re most comfortable with.

Example questions would be to sort 2 lists of intervals or design and optimise a bit of code for a system you can be expected to work with at TransferWise.

Architecture/design

It’s more likely that you’ll encounter this type of question as you progress through the interview process. However, depending on your experience and the role you’ve applied for, you might come across these questions during your Pair Programming interview.

Usually we ask a question about distributed systems design focusing on the architecture of your solution and how you’d implement it. Think about scenarios like designing a chat app to rival WhatsApp or implementing an auto-complete feature of Google search.

These questions are usually done on a (possibly virtual) whiteboard and you’ll be expected to draw boxes and arrows and go deeper on pros and cons of your solution.

Note: There’s often no set right or wrong answer to these exercises, we want to understand your thinking. Many exercises will also require you to compromise some areas to meet other requirements.

How to prepare for a Pair Programming interview

We recommend reviewing the computer science fundamentals (data structures, algorithms, time/space complexity, concurrency, etc). 

The best possible way to succeed is to practice. There are many websites that contain a lot of useful information and questions you can practice solving such as leetcode.com, topcoder.com, coderbyte.com, hackerrank.com and many more.

Tips – during your interview

  • It’s crucial to understand the problem you have to solve. If the question is unclear or has been left intentionally open – always feel free to ask clarifying questions.
  • We want to understand your thought process so please explain what you are doing and why.
  • While solving a question, it’s good to think about different algorithms and algorithmic techniques (sorting, divide- and-conquer, dynamic programming/memorisation, recursion, etc).
  • It’s important to know data structures and the complexity of their operations, especially the ones used most often (Array, Stack/Queue, HashSet/HashMap/Hash table/Dictionary, Tree/Binary Tree, Heap, Graph, Bloom Filter, etc).
  • One additional tip we can give is that sometimes modifying the problem or thinking about it in smaller pieces may be helpful.
  • Finally, your interviewer isn’t there to just assess you, they’re also there to help. Don’t hesitate to ask questions and keep the interview as a discussion.

Good luck in your interview!