Tiktok Singapore — Backend Engineer Interview
I recently had a short glimpse of Tiktok’s interview process. It wasn’t the most pleasant experience and I will explain the process I went through in this article.
Disclaimer: This is solely my personal experience about the process and the company.
Recruiter Screening
A recruiter from Tiktok contacted me on Linkedin and scheduled a call with me to explain the role. As usual, he just did basic checks on my work and responsibilities.
The later part of the interview was handed over to a recruiter from ByteDance and the first round was scheduled without even getting confirmation from me on the date and time. I remember getting an urgent call and a WhatsApp message saying I missed my interview and the interviewer was waiting. I planned the initial technical rounds by closely coordinating with the recruiter.
Technical Round 1
This round was with a software engineer and she was based in Beijing working for Tiktok live team I believe. The interviewer was a bit low in energy and her English was a little hard to understand. She asked about my current projects for the entire first half of the interview. She dived into the business problems that the systems I built were trying to solve. She touched upon the QPS and scale of the system and challenged some parts of the design. I felt like the interviewer's questions were targeting high QPS large-scale distributed systems while mine wasn’t even there yet. On a side note, I found it a bit hard to describe my design for systems verbally and felt it would have been good if I was provided a whiteboard tool of some sort.
The latter half of the interview was a coding round. The question was exactly this one:
As I was reading through the problem statement and discussing my approach, I remembered that it's the same as this question on leetcode which I have solved a long time ago:
I decided to write the code in Java but as I was halfway through my laptop had a force shut down for a software update! what a bummer! Immediately, I informed the recruiter and told her that I might need a few minutes and see if the interviewer is ok to wait. The recruiter informed me that they can wait and I joined back after almost 10 minutes. Even though I have solved this question before using python, I had some hiccups with Java due to huge verbose code and no IDE. I didn't fully complete the coding but my approach was very clear and the interviewer pointed out that I could further optimize my approach. She gave me some hints and I had no clue what exactly the optimization she was talking about. This was the original python solution to the leetcode question.
Note: A few days later, the recruiter said that I will be having a second technical round.
Technical Round 2
This round was with a software engineer and he was also based in Beijing. From the start, it was a challenge for me to understand what he was saying and for a moment I was contemplating if it was my problem that I’m not being able to understand him or if his accent was too hard to understand. To make things worse he was also wearing a mask in a closed room!
He started by asking for an intro and followed with a barrage of questions related to the OTA business which looked a bit odd to me since I didn’t build the entire system from scratch. Some of the questions were: How is the inventory maintained? How do the rates go from hotel to customer? What happens when a customer cancels a booking? How is the refund processed? I had a basic idea of how these systems worked in my company but had no idea in depth since these are built by several other teams. Later he started to ask about the design of the systems I built. As I started explaining, it got extremely difficult since he couldn't create a mental picture of the systems involved. So I asked if there is a whiteboard tool I can use and he asked me to type these things in the chat! Bruh? Anyways, I decided to create a board on my usual goto whiteboard tool: whimiscal.com, shared my screen with him and things got much better.
The interviewer decided to add a new feature into the setup and this is where everything started going haywire. He started explaining his feature, but whatever he said was too hard to understand and I asked him a couple of times what exactly was his requirement. I tried to ask counter questions on how I perceived his requirements and asked him if it was right. Finally, I believed I got it right and started discussing with him the approach and after a few minutes, he said that was not what he wanted. It was almost 45 minutes into the interview, and I felt it won't be going anywhere this way. So I asked him one last time to give the requirements clearly in writing or explain it a bit more clearly so I can document them. Again as he kept describing it was incomprehensible to me and both of us started losing patience and the tone of the interviewer started to change as well. I let the interviewer know that I have trouble understanding him and I dropped off the call. The recruiter called me immediately and I told her the problem I faced and she right away wanted to reschedule with a different interviewer.
Due to the unpleasant experience, I asked for some time to research and see if the actual work will be impacted by language barriers and other issues like these. It was alarming to see several testimonies on youtube videos and medium articles regarding these which seems to be a hot topic. After careful consideration, I decided to drop the interview process and politely conveyed this to the recruiter. Ironically, it even took me some effort to make the recruiter understand why I was dropping out since she initially thought I was not confident about my communication skills!
Conclusion
Interviewers are more like ambassadors of the company and they should be properly trained to handle candidates who might come from different parts of the world. Tiktok made a revolution in social media and it's undoubtedly an amazing product but when it comes to choosing a place to work, I always put culture as my first priority.
In the daily routines of a software engineer, we extensively work with cross teams for design review, code review, etc., and having a problem in communication would result in lots of back and forth which eventually end up in failed deliverables. At this point, efficient collaboration through clear communication is something I highly value and not something that I can compromise over a lucrative offer.
If you liked this story, please check out my other articles here: