ByteDance Software Engineer Interview Experience [Offer]

If you’re currently interviewing or thinking of interviewing with ByteDance, this articles for you. I hope it can shed some light on the interview process as well as gives you some key things to watch out for!

Profile [for some context]

  • ~1 Year of working experience
  • Bachelors in Information Systems
  • Interviewed in the past 2 months

“Do they interview you in Chinese?”

Let’s get the elephant out of the room. I know this might sound a little silly, but its a real concern to some. I have heard of stories of interviewers who spoke in Chinese for Chinese candidates, but in my experience — all my interviews were conducted in English and I didn’t use Chinese at all. So no. At least for me, everything was in English. That being said, all my interviewers were Chinese nationals based in Beijing — but don’t worry too much about it. If you’re like me and can barely speak Chinese, don’t feel obliged and just reply in English.

1: Interview structure — 3 Technical, 1 HR [1hr each]

Technical Round breakdown

  • 2–3 min Introduction
  • 15–20 min technical questions
  • 25–30min coding question
  • ~5min Q&A

Interviewers

I believe this follows quite closely to how other Tech companies usually interview. But in case this is your first

Round 1: Interviewer was not from the team I was interviewing for

  • Technical questions
  • Coding question

Round 2: Interviewer was part of the team I was interviewing for

  • Technical questions
  • Coding question

Round 3: Interviewer was the Team Lead for the team I was interviewing for

  • Questions surrounding projects I’ve worked on before
  • My role, tools used, problems faced
  • Coding question (less likely for senior candidates)

As you may have noticed, the first 2 rounds were similar, with technical questions surrounding technologies/languages listed in my resume followed by a coding question. The 3rd round on the other hand focused more on the existing role I played in my team, as well as my overall understanding of the project I was involved in (to get a sense of whether I understood how my project fit into the big picture).

Remember — use round 2 & 3 as an opportunity to ask questions about the team you’ll be joining as well as the type of work you’ll be doing as the new hire! It’s important you get a good understanding because you won’t want to be in a position where you aren’t interested the work.

If you managed to get past all 3 technical rounds, congrats! you’re probably 90% there. The HR round is centered around your motivations/aspirations. This is mainly an opportunity to ask more about the company/ concerns you might have.

2: Preparation

#1 Nailing your Fundamentals

Yare Yare Daze

If you’re a fresh grad or someone with little working experience like myself, you’ll be tested heavily on your fundamentals. When you interview with ByteDance, you’re not being assessed based on your experience per se, but rather your understanding of the fundamental concepts with technologies/tools you’ve worked with before (or more accurately the ones you’ve listed in your resume).

For example, if you have had some experience with Kubernetes and have included that in your resume, you best prepare yourself for theory questions surrounding architecture, services… Be prepared to do some virtual whiteboarding and explain each component involved.

Why are these questions asked? My guess is that it’s probably the only way to test whether you’ve taken the interest in developing a deeper understanding of the technologies you’ve worked with instead of just having a practical working relationship with it (which to be honest, is a problem many engineers do face).

This is VERY IMPORTANT, so please take note —

✍️ Develop✍️ Deeper ✍️ Understanding ✍️ of ✍️ languages/tools ✍️ mentioned ✍️ in resume.

Here are a handful (not all) questions I was asked to give you a rough idea on what some technical questions might look like -

Java

  • What is the difference between StringBuffer and StringBuilder?
  • Can you override a constructor?
  • What is the difference between overloading and overriding?

Kubernetes

  • Can you share with me the Kubernetes architecture? Components involved and their uses (whiteboard)
  • What is the responsibility of the kubelet/ kube proxy?
  • What are Services? Follow up: When do we use each service
  • What is Service discovery? How does Kubernetes approach this?

Kafka

  • Tell me what you know about Kafka (whiteboard) — Questions like these can be quite vague, so it’s best to give a broad overview before diving into the details and inner workings of each component.
  • Can multiple consumers within the same consumer group consume from the same partition?
  • How do partitions get assigned?

You get the point. Having a good grasp on fundamentals is very important especially for candidates with very little work experience.

#2 The Coding Question

wtf indeed

Ah yes, the section which most people dread the most. This section of the interview usually comes after the Technical questions. So depending on how fast you get through the first part, you might have more/less time for the programming question (no pressure). There were rounds where I had 20 mins and others where I have close to 40 minutes for this part of the interview, it really depends… so yeah.

All there really is to say is — be prepared. Although I can’t share the exact questions I’ve been asked, here are some of the concepts covered —

  • Recursion
  • Strings (subsequences/manipulation)
  • Dynamic Programming
  • Arrays

And any combination of them. So take the time to prepare for them. If you’re working with a recruiter, they might share a question bank that they have collected from other candidates who have interviewed!

Closing words —

  • Remember to talk through the process as you build your solution
  • Don’t be afraid to ask for time to think about it in silence. I know it might seem a little awkward to just sit there silently, but at least for me, I usually need some silent time to think. So if you’re like me, ask!
  • Spend a bit of time talking about the efficiency of your solution and how it could potentially be improved (memory/time) — a recruiter shared that this was something interviewers looked out for. So remember this!

So there you have it. A simple write up of my experience throughout this process. If you thought it was helpful or enjoyed the memes, I would appreciate if you left a tasty clap cause that helps the algo ;) Feel free to ask any questions! Will ignore questions surrounding compensation for obvious reasons.

Misc Questions—

  1. How long do they take to get back? It might vary quite a bit. From my experience, they have always got back within a couple of days max. So everything moved along quite quickly. If they take more than a couple of days, don’t be afraid to follow up!
  2. Difficulty of Coding questions — Again, it varies, but I would say on average, it’s a medium on LeetCode
  3. Did you apply through a recruiter? Yes
  4. Resources I used to prepare (specific to me of course)

5. Not a question but a reminder!! If you do get an offer, remember to negotiate!! Especially if you currently holding on to existing offers from other top companies. I’d say sources online provide a good benchmark!

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store