# Software Engineer
**Role:** Software Engineer · **Level:** MG3
**Company:** [Mercari](https://scaleengineer.com/companies/mercari)
**Difficulty:** Medium to Hard
**Salary:** US$130000 - US$180000
**Experience:** 4 - 8
**Timeline:** ~14 days
Mercari's Software Engineer MG3 interview process is designed to assess a candidate's technical expertise, problem-solving abilities, and cultural fit for a mid-level engineering role. The process typically involves multiple rounds, including technical assessments, system design discussions, and behavioral interviews, to ensure a comprehensive evaluation.
Canonical: https://scaleengineer.com/interviews/mercari/mg3-software-engineer
---
## Overall evaluation

- Technical and Problem-Solving Abilities
- Experience and Growth Potential

## Questions asked

- Describe a time you had to deal with a difficult stakeholder. How did you manage the situation?
- How would you design a URL shortening service like bit.ly?
- What are the trade-offs between using a monolithic architecture versus a microservices architecture?
- Write a function to find the kth largest element in an unsorted array.
- Tell me about a project you are particularly proud of and your role in it.
- How do you approach debugging a complex issue in a production environment?
- Explain the concept of eventual consistency.
- How would you optimize the performance of a slow-running database query?
- Describe a situation where you disagreed with your team's technical direction. What did you do?
- Design a system to handle real-time analytics for a popular e-commerce platform.

## Preparation tips

### lists

- Review core computer science concepts, including data structures, algorithms, and operating systems.
- Practice coding problems, focusing on efficiency and clarity.
- Study system design principles and common architectural patterns.
- Prepare examples of past projects, highlighting your contributions and the impact.
- Understand Mercari's business, products, and engineering culture.
- Practice behavioral questions using the STAR method (Situation, Task, Action, Result).
- Prepare thoughtful questions to ask the interviewers.

### studyPlan

- {"title":"Data Structures and Algorithms","longDescription":"Weeks 1-2: Focus on Data Structures and Algorithms. Cover arrays, linked lists, trees, graphs, hash tables, sorting, searching, dynamic programming, and greedy algorithms. Practice problems on LeetCode (Easy/Medium).","shortDescription":"Weeks 1-2: DSA fundamentals and practice (LeetCode Easy/Medium)."}
- {"title":"System Design","longDescription":"Weeks 3-4: Dive into System Design. Study concepts like scalability, availability, reliability, databases (SQL vs. NoSQL), caching, load balancing, message queues, and microservices. Review common system design interview questions and case studies.","shortDescription":"Weeks 3-4: System Design principles and case studies."}
- {"title":"Behavioral and Cultural Fit","longDescription":"Week 5: Prepare for Behavioral and Situational Questions. Reflect on past experiences related to teamwork, problem-solving, leadership, and handling challenges. Use the STAR method to structure your answers. Research Mercari's values.","shortDescription":"Week 5: Behavioral questions (STAR method) and company values."}
- {"title":"Mock Interviews and Final Preparation","longDescription":"Week 6: Mock Interviews and Review. Conduct mock interviews for both technical and behavioral rounds. Identify areas for improvement and refine your answers. Review any specific technologies or languages mentioned in the job description.","shortDescription":"Week 6: Mock interviews and final review."}

## Location differences

- {"location":"Global (Remote/On-site)","differences":{"tips":["Familiarize yourself with Mercari's tech stack and common architectural patterns.","Prepare detailed examples of your contributions to complex projects.","Be ready to discuss your experience with performance optimization and scalability challenges.","Practice explaining technical concepts clearly and concisely.","Research Mercari's recent technical blog posts or open-source contributions."],"interviewFocus":["Deep understanding of distributed systems and microservices architecture.","Proficiency in cloud platforms (AWS, GCP, Azure).","Experience with large-scale data processing and analytics.","Strong problem-solving and debugging skills in a production environment.","Ability to lead technical discussions and mentor junior engineers."],"commonQuestions":["How would you design a system to handle real-time notifications for a large user base?","Describe a challenging technical problem you faced and how you solved it.","Explain the trade-offs between different database technologies for a specific use case.","How do you ensure the scalability and reliability of your code?","Tell me about a time you had to mentor a junior engineer."]}}
- {"location":"Japan (On-site)","differences":{"tips":["Brush up on fundamental data structures and algorithms.","Practice coding problems on platforms like LeetCode or HackerRank.","Be prepared to explain your thought process during coding exercises.","Understand the principles of object-oriented design.","Prepare questions to ask the interviewer about the team and projects."],"interviewFocus":["Emphasis on practical application of data structures and algorithms.","Understanding of core computer science principles.","Ability to write clean, efficient, and maintainable code.","Problem-solving approach and logical thinking.","Collaboration and teamwork skills."],"commonQuestions":["How would you design a system to handle real-time notifications for a large user base?","Describe a challenging technical problem you faced and how you solved it.","Explain the trade-offs between different database technologies for a specific use case.","How do you ensure the scalability and reliability of your code?","Tell me about a time you had to mentor a junior engineer."]}}

## Round 1: Coding and Algorithms
**Type:** Technical Interview (Coding) · **Difficulty:** Medium · **Duration:** 45 min
Coding challenge focused on data structures and algorithms.
This round focuses on your core programming skills. You will be asked to solve one or two coding problems, typically involving data structures and algorithms. The interviewer will assess your ability to write clean, efficient, and correct code, as well as your problem-solving approach and communication skills.
**Interviewers look for:** Strong grasp of fundamental data structures and algorithms.; Ability to translate a problem into a working code solution.; Clear communication of thought process.; Consideration of edge cases and constraints.
**Evaluation criteria:** Correctness of the solution.; Efficiency of the algorithm (time and space complexity).; Code quality and readability.; Ability to explain the solution and trade-offs.
**Common rejection reasons:** Inability to articulate thought process clearly.; Lack of fundamental understanding of data structures and algorithms.; Inefficient or incorrect code implementation.; Poor problem-solving approach.
## Questions

- Given an array of integers, find the contiguous subarray with the largest sum.
- Implement a function to reverse a linked list.
- Find the first non-repeating character in a string.

## Preparation tips

- Practice coding problems on platforms like LeetCode, HackerRank, or AlgoExpert.
- Focus on understanding the time and space complexity of your solutions.
- Be prepared to explain your approach and justify your choices.
- Practice coding in a collaborative editor or whiteboard environment.

## Round 2: System Design
**Type:** System Design Interview · **Difficulty:** Hard · **Duration:** 60 min
Design a scalable and reliable software system.
This round assesses your ability to design and architect software systems. You'll be presented with a high-level problem (e.g., design Twitter's feed, design a URL shortener) and expected to propose a scalable, reliable, and maintainable solution. The discussion will cover various components, trade-offs, and potential bottlenecks.
**Interviewers look for:** Experience designing complex, large-scale systems.; Knowledge of distributed systems, databases, caching, and messaging.; Ability to think critically about system components and interactions.; Clear communication of design choices and rationale.
**Evaluation criteria:** Scalability of the proposed design.; Reliability and fault tolerance.; Clarity and completeness of the design.; Understanding of trade-offs and constraints.; Ability to handle edge cases and future requirements.
**Common rejection reasons:** Inability to design a scalable and robust system.; Lack of understanding of distributed systems concepts.; Poor consideration of trade-offs and failure scenarios.; Inability to communicate design effectively.
## Questions

- Design a distributed key-value store.
- Design a rate limiter.
- Design a system to count unique visitors to a website.

## Preparation tips

- Study common system design patterns and architectural styles.
- Understand concepts like load balancing, caching, database sharding, and message queues.
- Practice designing systems for scale and availability.
- Be prepared to discuss trade-offs and justify your design decisions.
- Read engineering blogs and case studies of large-scale systems.

## Round 3: Behavioral and Cultural Fit
**Type:** Behavioral Interview · **Difficulty:** Medium · **Duration:** 45 min
Assesses behavioral competencies and cultural fit.
This round focuses on your behavioral and cultural fit. You will be asked questions about your past experiences, how you handle specific situations, and your motivations. The goal is to understand how you work within a team, your approach to challenges, and whether you align with Mercari's values.
**Interviewers look for:** Evidence of collaboration and teamwork.; Proactive problem-solving and initiative.; Adaptability and learning mindset.; Positive attitude and enthusiasm for the role and company.
**Evaluation criteria:** Alignment with Mercari's core values (e.g., Ownership, Innovation, Customer Focus).; Teamwork and collaboration skills.; Problem-solving approach in non-technical situations.; Communication and interpersonal skills.; Motivation and cultural fit.
**Common rejection reasons:** Lack of alignment with company values.; Poor communication or interpersonal skills.; Inability to provide specific examples of past behavior.; Negative attitude or lack of enthusiasm.
## Questions

- Tell me about a time you failed. What did you learn from it?
- Describe a situation where you had to work with a difficult colleague.
- How do you stay updated with new technologies?

## Preparation tips

- Review Mercari's mission, vision, and values.
- Prepare specific examples using the STAR method for common behavioral questions.
- Be ready to discuss your strengths, weaknesses, and career aspirations.
- Show enthusiasm and genuine interest in the role and company.
