ByteDance logo

ByteDance Backend Engineer System Design Questions

33 practice questions for ByteDance Backend Engineer interviews

ByteDance backend engineer interviews typically focus on APIs, databases, system design, concurrency, caching, and data structures.

All Roles Software Engineer Backend Engineer Frontend Engineer Full Stack Engineer Mobile Engineer Data Engineer Data Scientist ML Engineer DevOps Engineer DevOps Engineer Product Manager SRE Security Engineer Engineering Manager Data Analyst UX/UI Designer QA Engineer

No verified questions yet for ByteDance.

system design Senior messaging #1

1. [OA] Job Scheduler — Design a Job Scheduler for ByteDance’s task management system

As part of ByteDance's operations, we need to design a job scheduling system that can queue and execute tasks efficiently. Implement a class that handles job scheduling with the ability to execute tasks at specified intervals.
Problem Statement: Design a class JobScheduler with the following methods:
- JobScheduler() — Initializes a job scheduler.
- void scheduleJob(string jobId, int interval, function jobFn) — Schedules a job to run every interval milliseconds.
- void cancelJob(string jobId) — Cancels the job with the given jobId.
- Example 1:
Input: JobScheduler(), scheduleJob("job1", 3000, jobFn), cancelJob("job1")
Constraints:
- 1 <= interval <= 10000
system design Senior api design #2

2. [OA] Rate Limiter — Design a Rate Limiter for ByteDance's API

ByteDance's APIs need a mechanism to limit the rate of requests to maintain service quality. Implement a rate limiter that controls the number of requests each user can make per minute.
Problem Statement: Design a class RateLimiter with the following methods:
- RateLimiter(int limitPerMinute): Constructor to set the limit on requests per user.
- bool isAllowed(string userId): Determine if a request from userId is allowed for the current minute.
- void recordRequest(string userId): Record that a request was made by userId.
- Example 1:
Input: RateLimiter(5), isAllowed("user1") => true, recordRequest("user1"), isAllowed("user1") => true, recordRequest("user1") => true (repeats until limit reached)
Constraints:
- 1 <= limitPerMinute <= 100

Related ByteDance Backend Engineer interview prep

Start practicing ByteDance questions

Sign up for free to access walkthroughs, AI-generated questions, and more.

Get Started Free