# Software Engineer
**Role:** Software Engineer · **Level:** Junior Software Engineer
**Company:** [Revolut](https://scaleengineer.com/companies/revolut)
**Difficulty:** Medium
**Salary:** US$50000 - US$65000
**Experience:** 0 - 2
**Timeline:** ~7 days
This interview process is designed to assess the skills and potential of junior software engineers at Revolut. It focuses on fundamental programming concepts, problem-solving abilities, and cultural fit.
Canonical: https://scaleengineer.com/interviews/revolut/junior-software-engineer-software-engineer
---
## Overall evaluation

- Technical Skills
- Communication and Behavioral

## Questions asked

- Write a function to reverse a string.
- Given an array of integers, find the two numbers that add up to a specific target.
- Explain the difference between a list and a set.
- What is recursion? Provide an example.
- Describe a time you faced a technical challenge and how you overcame it.
- Why are you interested in working at Revolut?
- How do you handle constructive criticism?
- What are your strengths and weaknesses as a software engineer?

## Preparation tips

### lists

- Review fundamental data structures (arrays, linked lists, trees, graphs, hash maps) and algorithms (sorting, searching, recursion, dynamic programming).
- Practice coding problems on platforms like LeetCode, HackerRank, or Codewars, focusing on easy and medium difficulty levels.
- Understand basic object-oriented programming (OOP) concepts.
- Brush up on your chosen programming language's syntax and standard library.
- Prepare to discuss your resume, projects, and any internships or academic work.
- Research Revolut's products, values, and recent news.
- Think about common behavioral questions and prepare STAR method (Situation, Task, Action, Result) answers.
- Be ready to explain your thought process clearly during coding challenges.

### studyPlan

- {"title":"Data Structures Fundamentals","longDescription":"Weeks 1-2: Focus on core data structures like arrays, linked lists, stacks, queues, and trees. Practice implementing them and solving problems involving their use. Understand time and space complexity (Big O notation).","shortDescription":"Weeks 1-2: Data Structures (Arrays, Linked Lists, Stacks, Queues, Trees) & Complexity Analysis."}
- {"title":"Algorithmic Thinking","longDescription":"Weeks 3-4: Dive into algorithms such as sorting (bubble, merge, quick), searching (binary search), recursion, and basic graph traversal (BFS, DFS). Practice applying these algorithms to solve problems.","shortDescription":"Weeks 3-4: Algorithms (Sorting, Searching, Recursion, Graph Traversal) & Problem Solving."}
- {"title":"Object-Oriented Programming","longDescription":"Week 5: Solidify your understanding of Object-Oriented Programming (OOP) principles (encapsulation, inheritance, polymorphism, abstraction). Review common design patterns if time permits. Practice coding challenges that require OOP design.","shortDescription":"Week 5: OOP Concepts & Design Patterns."}
- {"title":"Behavioral Preparation & Company Fit","longDescription":"Week 6: Focus on behavioral questions. Prepare examples using the STAR method for common scenarios like teamwork, problem-solving, handling failure, and learning new things. Research Revolut's culture and values.","shortDescription":"Week 6: Behavioral Questions (STAR Method) & Company Research."}
- {"title":"Practice and Refinement","longDescription":"Week 7: Mock interviews and final review. Practice coding problems under timed conditions. Refine your explanations and ensure you can articulate your thought process effectively. Review any weak areas identified during practice.","shortDescription":"Week 7: Mock Interviews & Final Review."}

## Location differences

- {"location":"London","differences":{"tips":["Be prepared to discuss your academic projects in detail.","Showcase your passion for technology and software development.","Emphasize your willingness to learn and adapt."],"interviewFocus":["Understanding of core data structures and algorithms.","Ability to write clean, readable, and efficient code.","Problem-solving approach and logical thinking.","Enthusiasm for learning and growth."],"commonQuestions":["Tell me about a challenging project you worked on during your studies.","How do you approach learning a new programming language or technology?","Describe a time you had to debug a complex piece of code. What was your process?"]}}
- {"location":"Berlin","differences":{"tips":["Highlight any personal coding projects or contributions to open source.","Be ready to articulate your thought process clearly.","Demonstrate a positive attitude and eagerness to contribute."],"interviewFocus":["Foundational knowledge in computer science principles.","Basic understanding of software development lifecycle.","Teamwork and communication skills.","Proactiveness in seeking solutions."],"commonQuestions":["What are your favorite programming languages and why?","How do you stay updated with the latest trends in software engineering?","Describe a situation where you had to collaborate with a team to solve a problem."]}}

## Round 1: HR Screening Call
**Type:** HR Screening · **Difficulty:** Easy · **Duration:** 45 min
Initial screening call with HR to assess basic fit and motivation.
This initial screening call is conducted by an HR representative to assess your general fit for the role and Revolut. They will ask about your background, motivation for applying, and understanding of the company. It's also an opportunity for you to ask initial questions about the role and the company culture.
**Interviewers look for:** Ability to write syntactically correct code.; Logical approach to problem-solving.; Clear explanation of steps.; Basic knowledge of common data structures.
**Evaluation criteria:** Basic coding proficiency; Understanding of fundamental data structures; Problem-solving approach; Communication of thought process
**Common rejection reasons:** Inability to solve basic coding problems.; Poor understanding of fundamental data structures and algorithms.; Inability to explain thought process.; Lack of enthusiasm or curiosity.
## Questions

- Tell me about yourself and your background.
- Why are you interested in this Junior Software Engineer role at Revolut?
- What do you know about Revolut?
- What are your salary expectations?

## Preparation tips

- Be prepared to talk about your resume and why you are interested in this specific role at Revolut.
- Research Revolut's mission, values, and recent achievements.
- Practice answering common behavioral questions.
- Have a few questions ready to ask the interviewer about the role or company.

## Round 2: Technical Coding Interview
**Type:** Technical Interview (Data Structures & Algorithms) · **Difficulty:** Medium · **Duration:** 60 min
Coding challenge focused on data structures and algorithms.
This is a technical interview focused on data structures and algorithms. You will be asked to solve one or two coding problems, typically on a shared online editor. The interviewer will assess your ability to write clean, efficient code and explain your thought process. Expect questions related to arrays, strings, linked lists, trees, and basic algorithms.
**Interviewers look for:** Correctness and efficiency of the code.; Understanding of time and space complexity.; Ability to break down problems.; Clear communication of logic and approach.; Attention to detail in code.
**Evaluation criteria:** Coding proficiency; Algorithmic thinking; Data structure knowledge; Problem-solving skills; Code quality and readability; Ability to articulate thought process
**Common rejection reasons:** Failure to solve coding challenges.; Incorrect or inefficient algorithms.; Poorly written or unreadable code.; Inability to explain the solution or trade-offs.; Lack of understanding of basic data structures.
## Questions

- Given an array of integers, return indices of the two numbers such that they add up to a specific target.
- Implement a function to check if a binary tree is a Binary Search Tree (BST).
- Write a function to find the kth smallest element in an unsorted array.
- Reverse a linked list.

## Preparation tips

- Practice coding problems on platforms like LeetCode (focus on Easy/Medium).
- Be comfortable explaining your approach before coding.
- Write clean, well-commented code.
- Discuss time and space complexity of your solutions.
- Think about edge cases and test your code mentally.

## Round 3: System Design Basics Interview
**Type:** Technical Interview (System Design Basics) · **Difficulty:** Medium · **Duration:** 45 min
Assesses understanding of software design and architecture principles.
This round focuses on your understanding of software design and architecture, even at a junior level. You might be asked to design a simple system or discuss trade-offs in a given scenario. The goal is to assess your ability to think about how software components interact and how to build scalable and maintainable systems.
**Interviewers look for:** Ability to design simple systems.; Understanding of basic components (APIs, databases, caching).; Consideration of trade-offs between different approaches.; Clear and structured thinking.; Willingness to learn and adapt design based on feedback.
**Evaluation criteria:** Understanding of software design principles; Problem-solving approach for larger systems; Ability to discuss trade-offs; Communication of technical concepts; Scalability and reliability considerations
**Common rejection reasons:** Lack of understanding of basic system design principles.; Inability to discuss trade-offs.; Poor communication of ideas.; Not considering scalability or reliability.; Difficulty in adapting to feedback.
## Questions

- Design a URL shortening service like bit.ly.
- How would you design a simple rate limiter?
- Discuss the trade-offs between SQL and NoSQL databases.

## Preparation tips

- Understand basic system design concepts like APIs, databases, caching, load balancing.
- Think about how common applications work (e.g., URL shortener, Twitter feed).
- Practice discussing trade-offs between different design choices.
- Focus on clarity and structure in your explanations.

## Round 4: Hiring Manager Interview
**Type:** Behavioral and Manager Interview · **Difficulty:** Medium · **Duration:** 45 min
Focuses on behavioral competencies, teamwork, and cultural fit with the hiring manager.
This interview is with the hiring manager for the team you would be joining. It focuses on your behavioral competencies, teamwork abilities, and overall fit with the team and Revolut's culture. You'll discuss past experiences using the STAR method and explore your career goals and how they align with the opportunities at Revolut.
**Interviewers look for:** Alignment with Revolut's values (e.g., customer focus, innovation, ownership).; Ability to work effectively in a team.; Proactive and problem-solving mindset.; Genuine interest in the role and company.; Positive attitude and professionalism.
**Evaluation criteria:** Cultural fit with Revolut's values; Teamwork and collaboration skills; Problem-solving approach in real-world scenarios; Motivation and career aspirations; Communication and interpersonal skills
**Common rejection reasons:** Poor cultural fit.; Lack of enthusiasm or passion.; Inability to articulate past experiences effectively.; Negative attitude towards previous employers or colleagues.; Poor communication or interpersonal skills.
## Questions

- Tell me about a time you had to work with a difficult team member. How did you handle it?
- Describe a project you are particularly proud of and your role in it.
- How do you prioritize your work when you have multiple tasks?
- Where do you see yourself in 3-5 years?
- What motivates you in a work environment?

## Preparation tips

- Prepare specific examples using the STAR method for common behavioral questions.
- Understand Revolut's core values and how your experiences align with them.
- Be ready to discuss your career aspirations and why this role is a good fit.
- Show enthusiasm and genuine interest in the team's work.
