Cracking ByteDance's Software Engineer Interview: Tackling Coin Change & System Design

bytedance | Software Engineer | Interview Experience

Interview Date: Not specified
Result: Position filled
Difficulty: Not specified

Interview Process

The interview consisted of two rounds. The first round was a 40-minute deep dive into the candidate’s internship and project experience, interspersed with questions on network counting, operating systems, Redis, and MySQL. A system design question was posed, asking how to design a short link system and how to perform a hot migration from MySQL to a heterogeneous database using synchronous double write and gray release strategies. The final 10 minutes were spent on a coding question related to LeetCode 322, Coin Change, focusing on traversal order.

The second round lasted about 20 minutes and began with a discussion of the candidate’s internship experience. The first question required finding the number of n-bit positive integers that do not contain consecutive '6’s. The second question involved analyzing a log file with the format [uid, login_time, logout_time] to output all local maxima. The solution involved using a differential array and converting times to Unix timestamps.

Technical Questions

  1. Coin Change (Dynamic Programming)
  2. Counting Non-Consecutive Digits (Dynamic Programming)
  3. Log File Analysis (Data Structures)

Tips & Insights

The candidate noted that although they did not succeed, the interview was conducted in Chinese and was a positive experience overall. They recognized that they struggled with the logging question and expressed a desire to improve their approach to event-driven scan line techniques for future interviews.