My TikTok (ByteDance) Frontend Software Engineer Interview Experience
January 25, 2023
This is a blog post on my interview experience with TikTok in summer 2022. The role I interviewed for was Frontend Software Engineer.
I applied this frontend software engineer position through TikTok's career website, but somehow I was contacted by a ByteDance recruiter. It's because ByteDance is TikTok's parent company. It's kinda like applying Facebook but get contacted by Meta a recruiter. I must say ByteDance's efficiency was very impressive. I submitted my resume in the morning and received an interview invitation in the afternoon in the same day.
After each round of interview, I was arranged the next round within an hour. It took only two weeks from application to finishing all interviews. ByteDance is already a company with more than 100K employees, and it's very impressive that they still maintain this kind of efficiency and speed. Because ByteDance did not specifically sign a confidentiality clause for the interview part, and most people directly share the questions they did on the Internet, I will also directly share the questions I was asked.
First Round
The interviewer was a senior frontend engineer. The interviewer asked me to do a self-introduction first. Then he started asking questions about past projects I put on the resume, and he followed up with "what is the most challenging project you have done".
After the resume question, he asked questions related to frontend. The questions included
- What Hooks have you used?
- Talk about the detail of
useEffect
. - What is the dependency array for? How does it work?
- Why does
useEffect
only execute once when the component is mounted if the dependency array is empty? - What happens if you put an object or an array in the dependency array?
- What happens if a
ref
is passed in the dependency array? - What is the difference between
useLayoutEffect
anduseEffect
? When should you which?
After the React questions, he asked basic networking questions, mainly for HTTP
- Please talk about HTTP caching.
- Between
eTag
orLast Modified
, which one is preferred? Why? - What is the response body of 304?
After network questions, he asked me JavaScript questions.
- First is on Event Loop, Microtasks, and Macrotasks, (see this article for details)
- Second is a JavaScript whiteboard question, which was to implement
.get
of lodash.
Second Round
The interviewer was a senior frontend engineer. After self-introduction, he asked questions on my resume, and asked me about my experience in writing unit tests and E2E tests in the past. Then he asked a few JavaScript questions, including
- What is the difference between a Map object in JavaScript and a general object?
- What is the current trend of JavaScript?
- What is new in React 18
This round ended with a whiteboard question, which was a LeetCode Medium string question.
Third Round
This interview is not the same as the previous two rounds. There was no self-introduction. The interviewer asked a LeetCode Medium question in the very beginning, which is basically a variation of 3Sum. After that, he asked me a few frontend questions
- What problems does React Fiber solve?
- How does HTTP work?
- What is the s in HTTPs?
Finally, there is a front-end system design question. It took about 20 minutes to discuss how to design a Typeahead front-end.
After the three technical interviews, I feel that they pretty much covered everything from JavaScript, React, Networking, algorithm and system design. So if you want to prepare for the TikTok frontend interview, you need to prepare a lot!
Fourth Round (Human Resources)
After successfully passing the three rounds of technical interviews, I finally entered the HR round. The HR first introduced the culture of ByteDance and what the team I interviewed was doing. Many people shared on the internet that you should not take this round lightly, and you must prepare well for various behavioral interview questions. The question asked by HR was mainly to see your fit with the company culture, so it will be helpful to read the company culture in advance.
I received the offer one week after the HR round.