An open API service indexing awesome lists of open source software.

https://github.com/neerazz/mamaa


https://github.com/neerazz/mamaa

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

          

# MAMAA Interview Questions (Python)

This repository contains a curated collection of Python solutions to common data structure and algorithm problems, frequently asked in technical interviews at top tech companies.

**MAMAA** stands for:

* **M**eta
* **A**pple
* **M**icrosoft
* **A**mazon
* **A**lphabet

This project is inspired by repositories like [neerazz/FAANG](https://github.com/neerazz/FAANG).

---

## πŸš€ Why This Repo?

Tech interviews are evolving, but the fundamentals remain the same. The problems here are the backbone of interviews at companies like Meta, Apple, Microsoft, Amazon, Alphabet, and more. Mastering these will prepare you for both traditional and modern interview formats.

## πŸ“š Table of Contents

1. Complexities & Big O Explained
2. Resources & Training Material
3. Data Structures & Algorithm Problems
4. Contests
5. System Design
6. OOPS Design
7. Important Links
8. How to Use This Repo
9. How to Contribute
10. When to Contribute
11. How to Set Up This Repository

## [Complexities & Big O Explained](https://www.bigocheatsheet.com/)

Understanding time and space complexity is crucial for writing efficient code and acing interviews. Here’s a high-level overview:

| Complexity | Big O | Examples |
|--------------|------------|--------------------------------------------|
| Constant | O(1) | Hash table lookup, Accessing array element |
| Logarithmic | O(log n) | Binary search, Searching in sorted array |
| Linearithmic | O(n log n) | Merge sort, Heap sort |
| Quadratic | O(n^2) | Bubble sort, Selection sort |
| Cubic | O(n^3) | Floyd-Warshall, 3-nested loops |
| Factorial | O(n!) | Traveling Salesman, permutations |

Further Reading:

- [Big O Cheat Sheet](https://www.bigocheatsheet.com/)
- [Interview Cake: Big O Notation](https://www.interviewcake.com/article/python/big-o-notation-time-and-space-complexity)

## Resources and Training Material

Explore curated resources for mastering Data Structures, Algorithms, System Design, and Object-Oriented Programming.

## Data Structures & Algorithm Problems

Explore by Topic: (TBD)

- [Array, Linked List, Stack, Heap, Tree, Queue](./Arrays)
- [Hash Table](./Hash_Tables)
- [Recursion](./Recursion_and_Backtracking)
- [Backtracking](./Recursion_and_Backtracking)
- [Divide and Conquer](./Dynamic_Programming)

## Contests

Sharpen your skills and benchmark yourself with real contest problems:

- [Leetcode Contests](https://leetcode.com/contest/)
- [Hackerrank Contests](https://www.hackerrank.com/contests)
- [Google Kickstart](https://codingcompetitions.withgoogle.com/kickstart)

## [System Design](https://github.com/neerazz/faang-system-design/blob/master/README.md)

> - [4 Week Basics SD (LLD & HSD) Roadmap](https://github.com/neerazz/faang-system-design/blob/master/4%20Weeks%20basics%20SD.md)
> - [4 Weeks System Design Roadmap](https://github.com/neerazz/faang-system-design/blob/master/4%20week%20system%20design%20plan.md)

- [Zoom](https://github.com/neerazz/faang-system-design/blob/master/Resources/architecture-diagrams/Zoom%20System%20Design.png)
- [Facebook](https://github.com/neerazz/faang-system-design/blob/master/Resources/architecture-diagrams/Facebook%20System%20Design.png)
- [Hotel Booking](https://github.com/neerazz/faang-system-design/blob/master/Resources/architecture-diagrams/Hoel%20Booking%20System.png)
- [Uber](https://github.com/neerazz/faang-system-design/blob/master/Resources/architecture-diagrams/Uber%20System%20Design.png)
- [Whatsapp](https://github.com/neerazz/faang-system-design/blob/master/Resources/architecture-diagrams/Whatsapp%20System%20design.png)
- [Netflix](https://github.com/neerazz/faang-system-design/blob/master/Resources/architecture-diagrams/Video%20Streaming%20Platform.png)

---

## OOPS Design

- [Design Library Management System](https://github.com/neerazz/faang-system-design/tree/master/oops/designs/libraryManagment)
- [Design Parking Lot](https://github.com/neerazz/faang-system-design/blob/master/oops/designs/parkinglot)
- [Design Call Center](https://github.com/neerazz/faang-system-design/blob/master/oops/designs/callCenter/CallCenter.java)
- [Design Hit Counter](https://github.com/neerazz/faang-system-design/blob/master/oops/designs/DesignHitCounter.java)
- [Design Linux Find Command](https://github.com/neerazz/faang-system-design/blob/master/oops/designs/LinuxFindFilter.java)
- [Design ATM](https://github.com/neerazz/faang-system-design/tree/master/oops/designs/atm)
- [Design Movie Ticket System](https://github.com/neerazz/faang-system-design/tree/master/oops/designs/movieTicketSystem)
- [Design Pharmacy Shop](https://github.com/neerazz/faang-system-design/tree/master/oops/designs/pharmacyshop)

> - [Design Vending Machine](https://leetcode.com/discuss/interview-question/982302/FANNG-question-OOP-please-post-your-solutions-to-this)

---

## Important Links

- [Hacking Software Engineering Interviews](https://github.com/neerazz/FAANG/blob/master/ImportantLinks.md#hacking-software-engineering-interviews)

## How to Use This Repo

1. Browse by topic or company to find relevant problems.
2. Read the code and comments for intuition and step-by-step logic.
3. Practice by re-implementing solutions and timing yourself.
4. Use the resources to fill knowledge gaps.
5. Try contest problems for real-world speed and pressure.

## How to Contribute

1. Fork the repository.
2. Do the desired changes (add/delete/modify).
3. Make a pull request.

## When to Contribute

1. If there is no solution to a problem.
2. If your solution is asymptotically faster than the one in the main branch.
3. If your algorithm is of the same time complexity but with reduced code size, comment out the original solution and make a pull request with your solution.

## How to Set Up This Repository

1. **Clone the repository:**
```bash
git clone https://github.com/neerazz/MAMAA.git
```

2. **Install dependencies:**
```bash
pip install -r requirements.txt
```

3. **Navigate to a topic folder and explore the solutions.** Each `.py` file is a self-contained solution to a problem.

4. **Run the code to test it:**
```bash
python ./Arrays/two_sum.py
```

This project is licensed under the MIT License.