# Software Engineer II
**Role:** Software Engineer · **Level:** L2
**Company:** [Remitly](https://scaleengineer.com/companies/remitly)
**Difficulty:** Medium
**Salary:** US$110000 - US$140000
**Experience:** 2 - 5
**Timeline:** ~7 days
The Software Engineer II (L2) interview at Remitly is designed to assess a candidate's technical proficiency, problem-solving abilities, and cultural fit within the company. It typically involves multiple rounds focusing on data structures, algorithms, system design, and behavioral aspects.
Canonical: https://scaleengineer.com/interviews/remitly/l2-software-engineer
---
## Overall evaluation

- Technical Skills
- Communication
- Behavioral and Cultural Fit

## Questions asked

- Given an array of integers, find the contiguous subarray with the largest sum.
- Design a system to handle real-time notifications for a messaging app.
- Explain the concept of eventual consistency.
- Tell me about a time you had to deal with ambiguity in a project.
- How would you optimize a slow database query?
- Describe the difference between TCP and UDP.
- What are the principles of object-oriented programming?
- How do you approach debugging a complex issue?
- Tell me about a project you are particularly proud of.
- How do you stay updated with new technologies?

## Preparation tips

### lists

- Review fundamental data structures (arrays, linked lists, trees, graphs, hash maps) and algorithms (sorting, searching, dynamic programming, graph traversal).
- Practice coding problems on platforms like LeetCode, HackerRank, or Coderbyte, focusing on medium-difficulty problems.
- Study system design concepts, including scalability, availability, consistency, and common design patterns (e.g., load balancing, caching, database sharding).
- Prepare for behavioral questions by using the STAR method (Situation, Task, Action, Result) to structure your answers.
- Research Remitly's mission, values, and recent news to understand the company's direction and culture.
- Prepare thoughtful questions to ask the interviewer about the role, team, and company.

### studyPlan

- {"title":"Data Structures and Algorithms Fundamentals","longDescription":"Weeks 1-2: Focus on core data structures (arrays, linked lists, stacks, queues, trees, hash tables) and their common operations. Practice implementing them and solving problems involving their efficient use. Cover basic algorithms like sorting (quicksort, mergesort) and searching (binary search).","shortDescription":"Weeks 1-2: Data Structures & Basic Algorithms. Practice implementations and problem-solving."}
- {"title":"Advanced Algorithms and System Design Introduction","longDescription":"Weeks 3-4: Dive deeper into algorithms, including dynamic programming, graph algorithms (BFS, DFS, Dijkstra's), and string manipulation. Work on medium-difficulty problems on platforms like LeetCode. Start exploring system design concepts like API design, database choices, and caching strategies.","shortDescription":"Weeks 3-4: Advanced Algorithms & Intro to System Design. Tackle medium LeetCode problems and learn system design basics."}
- {"title":"System Design and Behavioral Preparation","longDescription":"Weeks 5-6: Focus heavily on system design. Study common patterns for building scalable and reliable systems. Practice designing systems like Twitter feeds, URL shorteners, or chat applications. Simultaneously, prepare for behavioral questions by reflecting on past experiences and structuring answers using the STAR method.","shortDescription":"Weeks 5-6: System Design Deep Dive & Behavioral Prep. Practice designing systems and prepare STAR answers."}
- {"title":"Final Preparation and Mock Interviews","longDescription":"Week 7: Mock interviews with peers or mentors. Review any weak areas identified. Finalize questions to ask the interviewer. Ensure you are comfortable discussing your resume and past projects in detail.","shortDescription":"Week 7: Mock Interviews & Final Review. Practice and refine answers."}

## Location differences

- {"location":"Seattle","differences":{"tips":["Be prepared to discuss your contributions to open-source projects if applicable.","Familiarize yourself with common distributed system patterns.","Practice explaining your thought process clearly and concisely."],"interviewFocus":["Strong emphasis on practical application of data structures and algorithms.","System design questions are often more focused on scalability and distributed systems.","Behavioral questions delve into collaboration and impact."],"commonQuestions":["How would you design a URL shortener?","Explain the difference between a process and a thread.","Describe a challenging technical problem you solved.","How do you handle concurrency issues?","Tell me about a time you disagreed with a teammate."]}}
- {"location":"Remote","differences":{"tips":["Highlight experience with cloud platforms (AWS, Azure, GCP).","Be ready to discuss your approach to testing and debugging.","Showcase your ability to adapt to different development methodologies."],"interviewFocus":["Focus on practical coding skills and clean code principles.","System design questions may lean towards microservices architecture.","Behavioral questions assess leadership potential and teamwork."],"commonQuestions":["Design an API for a social media feed.","What are the trade-offs between SQL and NoSQL databases?","Describe a time you had to mentor a junior engineer.","How do you ensure code quality?","What are your thoughts on agile methodologies?"]}}

## Round 1: Technical Coding Round 1
**Type:** Data Structures and Algorithms Interview · **Difficulty:** Medium · **Duration:** 45 min
Coding challenge focused on data structures and algorithms.
This round focuses on your core data structures and algorithms knowledge. You will be presented with one or two coding problems and expected to write code on a shared editor. The interviewer will assess your ability to understand the problem, devise an efficient solution, implement it correctly, and explain your reasoning.
**Interviewers look for:** Ability to break down a problem.; Knowledge of common data structures and algorithms.; Clean and efficient coding.; Communication of thought process.
**Evaluation criteria:** Correctness of the solution.; Efficiency of the solution (time and space complexity).; Code quality and readability.; Problem-solving approach.
**Common rejection reasons:** Inability to articulate thought process clearly.; Lack of understanding of fundamental data structures and algorithms.; Poor coding practices (e.g., unreadable code, no error handling).
## Questions

- Given a binary tree, find its inorder traversal.
- Implement a function to find the kth smallest element in an unsorted array.

## Preparation tips

- Practice coding on a whiteboard or shared editor.
- Think out loud and explain your approach before coding.
- Consider edge cases and test your code mentally.
- Discuss time and space complexity of your solution.

## Round 2: System Design Round
**Type:** System Design Interview · **Difficulty:** Hard · **Duration:** 60 min
Design a scalable system and discuss trade-offs.
This round assesses your ability to design scalable and reliable software systems. You'll be given an open-ended problem (e.g., design a URL shortener, a social media feed) and expected to discuss various aspects of the design, including data models, APIs, scalability, and potential bottlenecks.
**Interviewers look for:** Ability to design complex systems.; Knowledge of databases, caching, load balancing.; Understanding of trade-offs in design decisions.; Ability to handle scale and availability.
**Evaluation criteria:** System design principles.; Scalability and performance considerations.; Trade-off analysis.; Understanding of distributed systems.; Clarity of design choices.
**Common rejection reasons:** Inability to design a scalable and robust system.; Lack of understanding of distributed systems concepts.; Poor trade-off analysis.; Not considering failure scenarios.
## Questions

- Design a system like Twitter's news feed.
- How would you design a rate limiter?

## Preparation tips

- Study common system design patterns.
- Practice designing various systems.
- Be prepared to justify your design choices and discuss trade-offs.
- Consider different components like databases, caches, load balancers, and message queues.

## Round 3: Behavioral and Managerial Round
**Type:** Behavioral Interview · **Difficulty:** Medium · **Duration:** 45 min
Assess behavioral competencies and cultural fit.
This round focuses on your past experiences, how you handle various work situations, and your alignment with Remitly's culture and values. Expect questions about teamwork, problem-solving, leadership, and handling challenges. Use the STAR method to provide structured and impactful answers.
**Interviewers look for:** Evidence of past successes and learning.; Alignment with Remitly's values.; Teamwork and collaboration skills.; Self-awareness and growth mindset.
**Evaluation criteria:** Behavioral competencies (e.g., ownership, collaboration, customer focus).; Past experiences and impact.; Cultural fit.; Motivation and career goals.
**Common rejection reasons:** Lack of clear communication.; Inability to provide specific examples.; Poor alignment with company values.; Negative attitude or lack of enthusiasm.
## Questions

- Tell me about a time you failed and what you learned from it.
- Describe a situation where you had to influence a decision.
- How do you prioritize your work when faced with multiple deadlines?

## Preparation tips

- Prepare specific examples using the STAR method for common behavioral questions.
- Reflect on your strengths, weaknesses, and career aspirations.
- Understand Remitly's core values and how your experiences align with them.
- Be enthusiastic and genuine in your responses.
