ByteDance Summer Internship Front-end Interview

Now it's my turn as a 23-year-old to start looking for a real internship, but this year's campus recruitment situation is really bad. I'll give a detailed summary of this year's internship later. It was quite interesting if I sent ByteDance. Originally, I applied for the interactive department of ByteDance's TikTok, and then I just applied, and the interactive AI algorithm department said they had my resume and asked me to consider it, but I really don't know much about that area, so I still wanted to go to the interactive department. Then a recruiter contacted me through WeChat, I thought it was for the interactive department, but she said she had retrieved my resume for the infrastructure department. It was unexpected, it seemed like she intercepted me. The HR also is a 23-year-old intern. Following the principle of interns not making it difficult for other interns, I joined the infrastructure department's interview, and they even exempted me from a written exam. So, effectively, I applied to the ByteDance infrastructure department on 2022.03.01.

First Round

This was my first interview of the year, and I was a bit nervous. I couldn't express myself clearly and my thoughts were a bit muddled. Besides, I don't even pronounce English words well. Thanks to the interviewer for being understanding. The interview lasted about 57 minutes and the questions were:

  • Attributes and various functions of the position property and its application scenarios.
  • Different solutions for hiding elements and their respective characteristics.
  • Configuration properties of flex layout and its main application.
  • How to use flex to achieve a vertically centered layout.
  • Basic data types in Js.
  • How to determine Js data types, and what is the result of typeof null.
  • The use and difference between typeof and instanceof.
  • New features in ES6.
  • Practical applications of the Symbol type.
  • Characteristics of class.
  • What does the new operator do.
  • Binding of this, differences between regular functions and constructor functions.
  • Reasons for using vue.
  • Lifecycle and various features of vue.
  • How is two-way data binding implemented in vue.
  • Advantages of Proxy.
  • Disadvantages and shortcomings of uniapp.
  • Experience with front-end page performance optimization.
  • Optimization solutions for long lists.
  • Packaging optimization solutions in webpack, basic principles of tree-shaking.
  • Strong caching and conditional caching.
  • Throttling implementation, immediate and non-immediate throttling.
  • Handwritten implementation of fetch request retry based on Promise, and output caching when all attempts fail.
  • Longest substring without repeating characters.

During the feedback stage, I asked about the specific business of the department and my performance in the interview. Generally, it was okay.

Second Round

The day after the first round, I was scheduled for the second round, showing that ByteDance is efficient. The second round was tough. Whenever I was asked a question, I either didn't know the answer or wasn't familiar with the topic. What could I do? The interview lasted about 34 minutes and the questions included:

  • Compatibility handling solutions for front-end, both from the CSS and Js perspectives.
  • Handling compatibility in CSS and Js at the engineering level.
  • How PostCSS handles CSS compatibility and understanding of PostCSS plugins.
  • The purpose of Autoprefixer.
  • Using CSS to switch themes, CSS variables, CSS referencing, and top-level ClassName.
  • Configuration in webpack and specific tasks performed.
  • How webpack plugins are implemented and their specific inputs and outputs.
  • Experience with vite, its advantages, and why it's fast.
  • Understanding of Next.js and its main purpose.
  • Differences between http and https, ports, and a brief explanation of https encryption implementation.
  • Main shortcomings of https.
  • Content related to front-end testing, unit testing, DOM testing, etc.
  • Understanding of micro frontends and their ability to resolve pain points.
  • Implementation of promisify.
  • Writing a function for flattening arrays on the prototype chain, using recursion and reduce solutions.

During the feedback session, I was asked about whether my interests lie in ToB or ToD business and the interviewer kindly explained many things. Initially, I thought the interview would last about 50 minutes without issues, but to my surprise, it ended in just 30 minutes. Can't really help it when you don't know the answer to a question or aren't familiar with a topic, right? In the end, we also discussed my internship experience at Tencent, which was really helpful as I was able to somewhat participate in the conversation. Lastly, the interviewer comforted me, and I almost believed him. That was quite comforting, wasn't it? Haha.

Third Round

The same day I completed the second round, I was scheduled for the third round. The efficiency is really high, considering that I didn't perform well in the second round. They must have really liked me! This round should be with the department head, and we just chatted without asking many questions. The third round lasted about 50 minutes and the questions were:

  • What are the highlights of your skills or experiences?
  • Operating mini-programs, script plugins and their operations.
  • Basic data types in Js.
  • Methods of Array.
  • Related processes of CDN.
  • Issues related to network delays encountered while developing mini-programs.
  • What have you learned the most during the internship period?
  • How did you set up your own domain name and server?
  • What games do you usually play?
  • Do you invest in stocks? Do you understand the current situation of the Internet?
  • Recursive and iterative implementations of climbing stairs.

During the feedback stage, I asked which group I would be assigned to, the specific business I would be involved in, and their advice for me. I guess I'm quite a talkative person. It's impressive how we managed to extend the interview to 50 minutes, and the interviewer was also quite chatty. This is impressive.

HR Interview

I originally thought the interview was scheduled for Wednesday at 3:00 PM, but unexpectedly, they called me in the evening to ask if I could interview right away, which means the HR interview took place on 2022.03.14 at 6:41 PM, lasting for about 15 minutes. The questions included:

  • What did you learn during your internship at Tencent last year?
  • Familiarity with our department, especially in terms of business.
  • Why did you only intern at Tencent for two months?
  • When did you start learning front-end development?
  • How do you usually study?
  • Why do you want to go to Shanghai/Hangzhou?
  • Why not pursue backend development?
  • Why did you choose our department?
  • Are you interviewing with other departments? What is your preference?
  • Questions regarding work hours and when the offer would be issued.

This sudden interview caught me off guard. Their efficiency is really something else, leaving me a bit bewildered. Also, they mentioned they would be sending the offer soon.

Follow-Up

The efficiency is really impressive. After the interview on 2022.03.14, I received the official confirmation on 2022.03.16, through WeChat chat notification, and a few minutes later, I received the official offer. I've never seen such a quick process before, and within just half a month, I had the offer in my hands. If it weren't for recent delays due to nucleic acid testing, the progress would have been even faster.