Discord logo

Discord

San Francisco, CACommunication

Interview Questions

Message Reaction System

Asked at Discord
technical
system design
frontend
backend

Implement frontend and backend for Discord message reactions.

Requirements:

interface Reaction {
  emoji: "👍" | "❤️" | "😂";
  count: number;
  hasUserReacted: boolean;
}

interface Message {
  id: string;
  content: string;
  reactions: Reaction[];
}

Frontend Requirements:
1. UI Components
- Reaction display
- Toggle functionality
- Count visualization
- User reaction status

2. State Management
- Track reactions per message
- Handle optimistic updates
- Manage concurrent reactions

Backend Requirements:
1. API Design
```typescript
POST /api/messages/:messageId/reactions
{
  emoji: string;
  action: "add" | "remove";
}

GET /api/messages/:messageId/reactions
Response: Reaction[]
  1. Database Schema
CREATE TABLE reactions (
  message_id TEXT,
  user_id TEXT,
  emoji TEXT,
  created_at TIMESTAMP,
  PRIMARY KEY (message_id, user_id, emoji)
);

System Design Considerations:

  • Eventually consistent databases
  • Concurrent reaction handling
  • Race condition prevention
  • Real-time updates
  • Security measures

Game Matchmaking System

Asked at Discord
technical
system design
algorithms
matchmaking

Design a matchmaking system for online multiplayer games.

Core Components:

interface Player {
  id: string;
  skillRating: number;
  region: string;
  gamePreferences: GamePreferences;
}

interface MatchRequest {
  player: Player;
  maxWaitTime: number;
  skillRange: number;
}

class MatchmakingSystem {
  // Core functionality
  queuePlayer(request: MatchRequest): void;
  findMatch(player: Player): Player[];
  updateSkillRating(player: Player, newRating: number): void;
}

Requirements:

  1. Skill Matching
  • ELO/MMR system
  • Skill range expansion over time
  • Balanced team composition
  1. Performance
  • Low latency matching
  • Handle high concurrent requests
  • Regional server support
  1. Additional Features
  • Party matchmaking
  • Role-based matching
  • Connection quality consideration
  • Anti-abuse measures

Implementation Strategy:

  1. Queue Management
  • Priority queue based on wait time
  • Skill range bands
  • Regional partitioning
  1. Matching Algorithm
  • Initial strict matching
  • Gradual range expansion
  • Fairness considerations
  1. System Architecture
  • Distributed queues
  • Real-time updates
  • Match quality monitoring

Share Your Experience at Discord