Skip to content

Coding Interview Prep: LeetCode, system design, algorithms, data structures, FAANG questions, and technical interview resources.

License

Notifications You must be signed in to change notification settings

umitkacar/awesome-interview

Repository files navigation

🚀 Awesome FAANG Interview Resources

Your Ultimate Guide to Landing Your Dream Tech Job in 2025 🎯

GitHub stars Last Updated PRs Welcome License

Typing SVG

📊 Repository Stats

📚 Resources 🎥 YouTube Channels 📖 Books 🌐 Platforms 🤖 AI/ML Section
150+ 15+ 20+ 25+ ✅ NEW

📑 Table of Contents


🎯 FAANG Interview Essentials

Start your journey with these battle-tested resources

🔥 Essential Interview Prep Paths

Resource Description Difficulty 🌟 Rating
NeetCode 150 🏆 Most popular for 2024-2025! Curated list with video explanations ⭐⭐⭐ ⭐⭐⭐⭐⭐
LeetCode Grind 75 Structured study plan, time-optimized ⭐⭐⭐ ⭐⭐⭐⭐⭐
Blind 75 Classic must-do problems ⭐⭐⭐ ⭐⭐⭐⭐⭐
Tech Interview Handbook Complete interview guide ⭐⭐ ⭐⭐⭐⭐⭐
System Design Primer 200K+ stars on GitHub! ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐

🎬 Top Video Courses (2024-2025)

🎓 NeetCode 150 Course on freeCodeCamp [38+ hours]
   └─ All 150 problems explained with optimal solutions

📚 Data Structures and Algorithms in Python [12+ hours]
   └─ Complete beginner to advanced coverage

🚀 Google Engineer's Full Tutorial [10+ hours]
   └─ Real-world problems from a Googler

📺 Top YouTube Channels 2025

Learn from the best! These channels have helped thousands land FAANG offers 🎓

💻 Coding Interview Channels


NeetCode
👤 360K+ subs
🏢 Google Engineer
⭐ Best LeetCode explanations

Clement Mihailescu
👤 500K+ subs
🏢 Ex-Google/Facebook
⭐ AlgoExpert Founder

Back To Back SWE
👤 250K+ subs
💡 Clear explanations
⭐ Complex topics simplified

TakeUForward
👤 600K+ subs
📚 Striver's A2Z DSA
⭐ Complete roadmap

🎯 More Awesome Channels

🏗️ System Design & Career Channels

Channel Focus Area Subscribers Must Watch
ByteByteGo System Design 500K+ Alex Xu's channel 🔥
tryExponent Mock Interviews 300K+ Real interview practice
System Design Interview Architecture 200K+ Design patterns
TechLead Career Advice 1M+ Ex-Google/Facebook

💾 Data Structures & Algorithms

Master the fundamentals that 90% of interviews test 📊

🎯 Essential Resources


Big O Cheat Sheet
⏱️ Time & Space complexity reference

VisuAlgo
👀 See algorithms in action!

NeetCode Roadmap
🗺️ Structured learning path

📚 Top DSA Courses

+ AlgoExpert         → 160+ curated problems with video explanations ($99)
+ AlgoMonster        → Pattern-based learning, very structured
+ Udemy Bootcamp     → Complete Python DSA course
+ CodeBasics         → Free Python DSA course

🎓 Object Oriented Programming

Essential for system design and coding interviews 🏛️

Resource Type Level Link
🐍 Real Python OOP Tutorial Path ⭐⭐ Visit
📺 Corey Schafer Video Series ⭐⭐ Watch
🎨 Design Patterns Interactive Guide ⭐⭐⭐ Learn

📚 Must-Read Books 2024-2025

Invest in these proven resources 💎

🆕 New Releases (2024-2025)


Beyond Cracking the Coding Interview
📝 Gayle McDowell
⭐⭐⭐⭐⭐
Get Book

Coding Interview Patterns
📝 Alex Xu & Shaun
⭐⭐⭐⭐⭐
Get Book

Generative AI System Design
📝 Alex Xu
⭐⭐⭐⭐⭐
Get Book

📖 Coding Interview Classics

📕 Cracking the Coding Interview (6th Edition) ⭐⭐⭐⭐⭐
   ├─ 189 programming problems
   ├─ Still #1 for FAANG interviews
   └─ Solutions in multiple languages

📘 Elements of Programming Interviews in Python ⭐⭐⭐⭐⭐
   ├─ 250+ challenging problems
   ├─ Perfect for senior positions
   └─ Deep algorithmic thinking

📙 Grokking Algorithms ⭐⭐⭐⭐
   ├─ Illustrated guide
   ├─ Great for beginners
   └─ Easy to understand
Title Author Focus Amazon
Cracking the Coding Interview Gayle Laakmann McDowell 189 problems 🛒 Buy
Elements of Programming Interviews Aziz, Lee, Prakash 250+ problems 🛒 Buy
Grokking Algorithms Aditya Bhargava Illustrated guide 🛒 Buy

🏗️ System Design Books

🔥 Most Recommended for 2025

Book Author Level Rating
📕 System Design Interview Vol. 1 Alex Xu ⭐⭐⭐ ⭐⭐⭐⭐⭐ Get it
📕 System Design Interview Vol. 2 Alex Xu ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Get it
📘 Acing the System Design Interview Zhiyong Tan ⭐⭐⭐ ⭐⭐⭐⭐ Get it
📙 Designing Data-Intensive Applications Martin Kleppmann ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Get it

💼 Behavioral & Career

🤖 AI/ML Interview Books

Book Focus Link
📕 Hands-on Machine Learning (3rd Ed) Practical ML with Scikit-Learn & TensorFlow Amazon
📘 Machine Learning Interviews Free comprehensive guide GitHub
📙 Deep Learning Interviews 400+ questions and answers Amazon

💻 Online Coding Platforms

Practice makes perfect 🎯

🏆 Problem Solving Platforms


LeetCode
⭐ #1 Platform
📊 3000+ problems

NeetCode
🎥 Video solutions
🔥 Most popular 2025

HackerRank
🏅 Certifications
💼 Job matching

CodeForces
🏆 Competitive
⚡ Contest rated

CodeChef
🌍 Global contests
📈 Rating system

🎓 Interview Prep Platforms

💎 Premium Platforms (Worth the Investment)
Platform Price/Year Focus Best For Rating
DesignGurus.io $122 Pattern-based learning Visual learners ⭐⭐⭐⭐⭐
AlgoExpert $99 160+ curated problems Structured prep ⭐⭐⭐⭐⭐
AlgoMonster $99 Pattern recognition Fast track ⭐⭐⭐⭐⭐
Educative.io $199 Interactive courses Hands-on learning ⭐⭐⭐⭐
InterviewBit FREE Complete prep Budget option ⭐⭐⭐⭐

🎯 Mock Interview Platforms

Practice with real people!

Platform Type Price Features
🎭 Pramp (Exponent) Peer-to-peer FREE (5/month) AI grading, transcripts
💼 Interviewing.io Anonymous Paid Real engineers from FAANG
🎪 TechMockInterview 1-on-1 Paid Personalized feedback

📊 Assessment Platforms

  • 📝 TestDome - Skills assessment & certifications
  • 💻 DevSkiller - Technical screening for companies
  • 🤖 Workera.ai - AI skills assessment
  • 📊 DataCamp - Data science focused

🤖 AI & Machine Learning Interviews

Critical for 2025! ML roles are exploding 🚀

🧠 ML Interview Resources

📚 Free Resources

💎 Premium Courses

🎯 Key Topics to Master for 2025

ml_interview_topics = {
    "Foundation": [
        "Supervised & Unsupervised Learning",
        "Model Evaluation & Metrics",
        "Feature Engineering",
        "Bias-Variance Tradeoff"
    ],
    "Deep Learning": [
        "Neural Networks Architecture",
        "CNNs for Computer Vision",
        "RNNs & LSTMs for Sequences",
        "Training & Optimization"
    ],
    "2025 Critical": [
        "🔥 Transformers Architecture",
        "🔥 Large Language Models (LLMs)",
        "🔥 Prompt Engineering",
        "🔥 RAG (Retrieval-Augmented Generation)",
        "🔥 Fine-tuning & Transfer Learning"
    ],
    "Production ML": [
        "MLOps & Model Deployment",
        "A/B Testing",
        "Model Monitoring",
        "Scalability Considerations"
    ]
}

⚠️ 2025 Alert: 80% of ML interviews now include questions about LLMs and Transformers!


🏗️ System Design Resources

The most challenging part of FAANG interviews 💪

📚 Essential Resources


System Design Primer
📖 Most comprehensive
🆓 Completely free

ByteByteGo
📝 Alex Xu's platform
💰 Paid but worth it

Grokking SD
🎯 Pattern-based
💡 Visual learning

SD Interview
✍️ Practice problems
🎪 Mock interviews

📺 Video Resources

Channel Subscribers Best For Link
🎥 ByteByteGo 500K+ System design concepts Watch
🎓 Gaurav Sen 500K+ In-depth explanations Watch
🏗️ System Design Interview 200K+ Architecture patterns Watch
💡 Tech Dummies 300K+ Simplified concepts Watch

🎯 Practice Platforms

🎪 Where to practice system design interviews

🎁 Additional Resources

Everything else you need to succeed

🐙 GitHub Repositories

Repository Stars Description
Awesome Interview Questions 60K+ ⭐ Questions for all languages
Tech Interview Handbook 100K+ ⭐ Complete handbook
Coding Interview University 280K+ ⭐ Multi-month study plan
System Design Resources 15K+ ⭐ Curated SD resources

💰 Salary Negotiation


Levels.fyi
📊 Real salary data
🏢 All major tech companies

TeamBlind
💬 Anonymous community
🔍 Real employee insights

Negotiation Guide
📖 Comprehensive guide
💡 Proven strategies

📄 Resume & LinkedIn


📈 Learning Path Recommendation

graph TD
    A[Start Here] --> B{Your Level?}
    B -->|Beginner| C[NeetCode Roadmap]
    B -->|Intermediate| D[LeetCode Grind 75]
    B -->|Advanced| E[Blind 75 + System Design]

    C --> F[Practice 50 Easy Problems]
    D --> G[Practice Medium Problems]
    E --> H[Mock Interviews]

    F --> I[Move to Grind 75]
    G --> J[System Design Study]
    H --> K[Apply to FAANG!]

    I --> J
    J --> H

    style A fill:#ff6b6b
    style K fill:#51cf66
    style B fill:#ffd43b
Loading

🗓️ Suggested Study Schedule

Week Focus Area Resources Hours/Day
1-2 DSA Basics NeetCode Roadmap, VisuAlgo 2-3h
3-6 Problem Solving Grind 75 (Easy → Medium) 3-4h
7-10 Advanced Problems Blind 75, NeetCode 150 4-5h
11-12 System Design ByteByteGo, System Design Primer 2-3h
13-14 Mock Interviews Pramp, Interviewing.io 2-3h
15-16 Behavioral Prep Tech Interview Handbook 1-2h

👨‍💻 For Developers - Contributing to This Project

Want to improve this project? Here's everything you need!

PRs Welcome Python 3.11+ Hatch

🚀 Quick Start for Developers

This project uses modern Python tooling for production-grade quality. Here's how to get started:

📋 Prerequisites

  • Python 3.11+ - Required for modern type hints
  • Git - For version control
  • Hatch - Modern Python project manager

⚡ Setup in 3 Steps

# 1. Clone the repository
git clone https://github.com/umitkacar/awesome-faang-interview.git
cd awesome-faang-interview

# 2. Install Hatch (if not already installed)
pip install hatch

# 3. Install pre-commit hooks
pre-commit install

That's it! Hatch will automatically manage environments and dependencies.


🛠️ Development Commands

All commands use Hatch for consistency and simplicity:

Command Description Time
hatch run test Run all tests ~3s
hatch run test-cov Run tests with coverage report ~4s
hatch run test-parallel Run tests in parallel (faster) ~3s
hatch run lint Check code quality with Ruff ~0.05s
hatch run format Format code with Black ~0.2s
hatch run type-check Type check with MyPy ~0.8s
hatch run security Security scan with Bandit ~1s
hatch run all Run everything ~8s

🎯 Recommended Workflow

# Before making changes
hatch run all  # Ensure everything passes

# Make your changes...

# Verify your changes
hatch run all  # All checks must pass

# Commit (pre-commit hooks run automatically)
git add .
git commit -m "feat: your amazing feature"

🧪 Testing

We maintain 93.50% code coverage with comprehensive tests.

Running Tests

# Quick test (sequential)
hatch run test

# With coverage report
hatch run test-cov

# Parallel execution (3x faster!)
hatch run test-parallel

# View coverage report
open htmlcov/index.html  # macOS
xdg-open htmlcov/index.html  # Linux

Test Structure

tests/
├── conftest.py           # Shared fixtures
├── test_cli.py          # CLI command tests (33 tests)
└── test_core.py         # Core logic tests

Writing Tests

# Example test
def test_resource_validation() -> None:
    """Test URL validation in Resource model."""
    with pytest.raises(ValidationError):
        Resource(
            name="Invalid",
            url="not-a-url",  # Should fail
            category="test"
        )

📊 Quality Standards

This project maintains zero-error production quality:

✅ Tests:     33/33 PASSED (100%)
✅ Coverage:  93.50% with branch coverage
✅ MyPy:      0 errors across 9 files
✅ Ruff:      All checks passed
✅ Black:     Code formatted
✅ Bandit:    No security issues
✅ Speed:     3x faster with parallel testing

Quality Tools

Tool Purpose Configuration
Ruff Linting (10-100x faster than alternatives) pyproject.toml:114-156
Black Code formatting (100 char line) pyproject.toml:158-161
MyPy Type checking (strict mode) pyproject.toml:163-174
Bandit Security scanning pyproject.toml:194-198
pytest Testing framework pyproject.toml:200-210

🔍 Pre-commit Hooks

Pre-commit hooks run automatically on git commit to ensure quality:

✅ Black   - Auto-format code
✅ Ruff    - Auto-fix linting issues
✅ MyPy    - Check types
✅ Bandit  - Security scan
✅ pytest  - Run fast tests

Manual Hook Execution

# Run all hooks on all files
pre-commit run --all-files

# Run specific hook
pre-commit run black --all-files
pre-commit run mypy --all-files

# Skip hooks (emergency only!)
git commit --no-verify

📁 Project Structure

awesome-faang-interview/
├── src/
│   └── faang_interview/
│       ├── __init__.py
│       ├── cli.py           # CLI commands (Typer)
│       └── core.py          # Core logic (Pydantic models)
├── tests/
│   ├── conftest.py
│   ├── test_cli.py
│   └── test_core.py
├── .pre-commit-config.yaml  # Pre-commit hooks
├── pyproject.toml           # All configuration
├── README.md                # This file
├── CHANGELOG.md             # Version history
├── LESSONS_LEARNED.md       # Technical documentation
└── LICENSE                  # MIT License

🎨 Code Style Guidelines

Type Hints

# ✅ Good - Full type hints
def filter_resources(
    resources: list[Resource],
    category: str | None = None,
) -> list[Resource]:
    """Filter resources by category."""
    ...

# ❌ Bad - No type hints
def filter_resources(resources, category=None):
    ...

Docstrings

# ✅ Good - Comprehensive docstring
def process_data(data: dict[str, Any]) -> str:
    """Process data and extract name.

    Args:
        data: Dictionary containing resource data

    Returns:
        Extracted name as string

    Raises:
        KeyError: If 'name' key is missing
    """
    return str(data["name"])

Error Handling

# ✅ Good - Descriptive error messages
if not url.startswith(("http://", "https://")):
    msg = f"Invalid URL format: {url}. Must start with http:// or https://"
    raise ValueError(msg)

# ❌ Bad - Generic error
if not url.startswith(("http://", "https://")):
    raise ValueError("Invalid URL")

🐛 Debugging

Enable Verbose Output

# Verbose pytest output
hatch run test -vv

# Show print statements
hatch run test -s

# Run specific test
hatch run test tests/test_cli.py::test_list_command -vv

Type Checking Issues

# Check specific file
mypy src/faang_interview/cli.py

# Show error codes
mypy src/ --show-error-codes

# Ignore specific errors (use sparingly!)
mypy src/ --disable-error-code=attr-defined

📚 Additional Documentation


🤝 Contributing Resources

Found a great resource? Have suggestions?

Simply:

  1. 🍴 Fork this repository
  2. ✏️ Add your resource to README.md
  3. ✅ Run hatch run all to ensure quality
  4. 📬 Submit a pull request

For code contributions:

  1. Create a feature branch (git checkout -b feature/amazing-feature)
  2. Make your changes
  3. Ensure all tests pass (hatch run all)
  4. Commit your changes (git commit -m 'feat: add amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

💡 Pro Tips

Speed up development:

# Use parallel testing by default
alias test="hatch run test-parallel"

# Quick format + lint
hatch run format && hatch run lint

# Watch mode for tests (install pytest-watch)
pip install pytest-watch
ptw -- -n auto

IDE Integration:

  • VS Code: Install Python, Pylance, Ruff extensions
  • PyCharm: Configure Hatch as project interpreter
  • Vim/Neovim: Use ALE or coc-pyright


⭐ Show Your Support

If this helped you, give it a star! It helps others discover these resources 🌟

GitHub stars GitHub forks


📫 Connect & Stay Updated


Last Updated: January 2025 📅

License: MIT 📜


Motivation

Made with ❤️ for aspiring FAANG engineers