Comprehensive study notes for operating systems interviews at FAANG companies
A clean, readable documentation website built with Next.js 14, featuring comprehensive operating systems study materials organized into 20 progressive topics from OS philosophy to FAANG-level filter questions.
- π 20 Comprehensive Topics: From OS philosophy to FAANG filter questions
- π Full-Text Search: Search across all content instantly
- π Dark/Light Mode: Toggle between themes
- π± Mobile Responsive: Optimized for all devices
- π¨ Clean UI: Documentation-style layout with sidebar navigation
- π Auto-Generated TOC: Table of contents with active section highlighting
- β‘ Fast Performance: Static site generation for optimal speed
- π SEO Optimized: Sitemap, robots.txt, and meta tags included
- π‘ Syntax Highlighting: Beautiful code blocks with syntax highlighting
- π Cross-Linking: Easy navigation between related topics
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/RaghavOG/operating-system-notes.git
cd operating-system-notes
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 in your browser.
operating-system/
βββ app/ # Next.js App Router
β βββ docs/ # Documentation routes
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
β βββ sitemap.ts # Sitemap generation
β βββ robots.ts # Robots.txt generation
βββ components/ # React components
β βββ Sidebar.tsx # Navigation sidebar
β βββ MDXContent.tsx # Markdown renderer
β βββ SearchBar.tsx # Search functionality
β βββ ...
βββ content/ # Markdown content files
β βββ topic-01-os-philosophy-design/
β βββ topic-02-kernel-architecture/
β βββ ...
βββ lib/ # Utility functions
β βββ docs.ts # Content loading utilities
βββ scripts/ # Build scripts
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- react-markdown - Markdown rendering
- Vercel Analytics - Analytics integration
- next-themes - Theme management
The content is organized into 20 progressive topics:
- OS Philosophy & Design - Core concepts and design principles
- Kernel Architecture - Monolithic, microkernel, hybrid, exokernel
- User Mode vs Kernel Mode - Privilege levels and security
- System Calls & Context Transition - System call mechanisms
- Process Management - Processes, fork, exec, zombies
- Threads - Thread models and concurrency
- CPU Scheduling - Scheduling algorithms and CFS
- Concurrency Fundamentals - Race conditions and atomicity
- Synchronization Primitives - Mutex, semaphore, locks
- Deadlocks - Detection, prevention, and recovery
- Memory Management - Paging, segmentation, allocation
- Virtual Memory - Demand paging and page replacement
- Caching & Memory Hierarchy - Cache coherence and locality
- File Systems - File abstraction and directory structures
- Disk & IO Systems - Disk scheduling and IO techniques
- Security & Protection - Access control and privilege escalation
- Virtualization & Containers - VMs, containers, namespaces
- Modern OS Scenarios - Real-world interview scenarios
- Comparison Questions - Classic OS comparison questions
- FAANG Filter Questions - Advanced philosophical questions
Create a .env.local file:
NEXT_PUBLIC_SITE_URL=https://your-domain.comEdit app/globals.css to customize colors and styling.
- Add markdown files to
/contentdirectory - Follow the existing structure (topic folders)
- Files are automatically discovered and routed
The easiest way to deploy is using Vercel:
- Push your code to GitHub
- Import the repository in Vercel
- Vercel will auto-detect Next.js and deploy
- Set environment variables in Vercel dashboard:
NEXT_PUBLIC_SITE_URL(optional, defaults to vercel.app URL)
The site will be live at https://your-project.vercel.app
If you prefer using GitHub Actions for deployment:
-
Add the following secrets to your GitHub repository (Settings β Secrets β Actions):
VERCEL_TOKEN: Get from https://vercel.com/account/tokensVERCEL_ORG_ID: Get from Vercel dashboard β Settings β GeneralVERCEL_PROJECT_ID: Get from Vercel dashboard β Project Settings β General
-
Push to
mainormasterbranch to trigger automatic deployment
See .github/workflows/README.md for more details.
# Install dependencies
npm ci
# Run type checking
npm run type-check
# Run linter
npm run lint
# Build for production
npm run build
# Start production server
npm startCreate a .env.local file for local development:
NEXT_PUBLIC_SITE_URL=http://localhost:3000For production, set these in your hosting platform's environment variable settings.
- All documentation content is in the
/contentdirectory - Each markdown file supports frontmatter for metadata
- URLs are automatically generated from file paths
Example URL structure:
/docs/topic-01-os-philosophy-design/01-os-philosophy-overview/docs/topic-20-faang-filter-questions/01-philosophical-questions
- Node.js 20+ (use
.nvmrcfor version management) - npm or yarn
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run lint:fix- Fix ESLint errorsnpm run type-check- Run TypeScript type checkingnpm run format- Format code with Prettiernpm run format:check- Check code formatting
This project uses:
- ESLint for linting
- TypeScript for type safety
- Prettier for code formatting
- Husky (optional) for git hooks
Contributions are welcome! Please read our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run
npm run lintandnpm run type-check - Commit your changes (
git commit -m 'feat: Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Be respectful and inclusive
- Provide constructive feedback
- Follow the project's coding standards
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for operating systems interview preparation
- Inspired by the need for comprehensive, well-organized study materials
- Thanks to all contributors who help improve this resource
- GitHub: @RaghavOG
- Repository: operating-system-notes
Happy Learning! π