[Singapore] Frontend Engineer Interview Experience
January 5, 202110 min read

[Singapore] Frontend Engineer Interview Experience

This article was translated through AI, there might be inaccuracies.

Recently I interviewed for frontend positions at two companies:

  • Bytedance Singapore
  • Run the world (RTW): A Silicon Valley startup looking for fully remote frontend engineers in Taiwan

Let me share the entire process!

Motivation

Actually, I wasn't actively looking for a job. I was quite satisfied with my current company, work content, and compensation. However, I still keep an eye on the job market through LinkedIn. In mid-November 2020, I received a job invitation from a TikTok recruiter in Singapore on LinkedIn. This was one of the more interesting opportunities I'd seen in the past year. After some consideration, I decided to test the waters based on the following factors:

  1. The interview bible CTCI mentions that even if you're not looking to change jobs, it's recommended to interview annually. This helps maintain your competitiveness and understand your market value, while building connections with different companies that might lead to future opportunities.
  2. TikTok is growing extremely fast. Joining at this point might offer many development opportunities.
  3. After checking PTT and levels.fyi, I found Singapore software engineer salaries quite attractive. If they made a good offer, I'd be interested. Additionally, Singapore has more Tier 1 software engineering opportunities compared to Taiwan, offering more growth and challenges.

RTW also approached via LinkedIn hunter. My motivations were:

  1. Interest in their video event product
  2. One of my career goals was to work remotely for a foreign company from Taiwan, earning international salary while living in Taiwan. RTW's compensation seemed to offer this possibility.
  3. Since I was already preparing for Bytedance, interviewing at just one company seemed wasteful...

So I updated my resume and submitted it, and both companies' processes began.

Preparation

My frontend interview preparation generally covers four areas. However, I didn't have much time to prepare this time since it was a sudden opportunity. I didn't ask them to schedule interviews later, so I just did a quick review and went for it!

1. Algorithms

  • Familiarize yourself with basic data structures, complexity analysis, sorting, etc. You can reference this git gist
  • Practice Leetcode. Don't memorize solutions - require yourself to explain each step. For frontend, if you can solve 80-90% of Medium difficulty problems and explain them, that should be sufficient.

2. Frontend Knowledge

  • Master JavaScript. If you can thoroughly read JavaScript info, you'd be very strong.
  • Master your commonly used frameworks. Getting familiar with official documentation should be enough.
  • Understand other topics like Network, Security, Performance, Testing, etc. Each topic can go very deep, but at least have a general understanding. web.dev has lots of frontend knowledge references, especially for Performance.

3. Project Experience

Be able to explain your past project experiences using the SAR or SOAR framework from CTCI:

  • Situation: Project background and context
  • Obstacle: Difficulties and obstacles encountered
  • Action: What actions you took
  • Result: Final results and outcomes

4. Behavioral Questions

The scope here is quite broad, but some questions and directions can be prepared in advance. The rest depends on your ability to think on your feet and verbal organization skills. Regular accumulation is still very important.

  • Your strengths and weaknesses
  • Biggest achievements and failures
  • Short, medium, and long-term goals
  • All previous companies, job content, reasons for leaving
  • ...

Interview Process & Results

Bytedance: Offer Get

Bytedance's process:

  • 3 technical interview rounds
  • 1 HR interview round

Each round lasts about 45 minutes

Round 1 Technical Interview

The interviewer sounded Chinese, a frontend engineer from another team. Interview conducted in Chinese.

Interview content mainly focused on algorithms, using coderpad. Three questions total:

1. JS Concepts: Read JS code and answer what console.log outputs

I didn't get everything right. There was one part I wasn't sure about, but I communicated my uncertainty with the interviewer and made an assumption. Later verification showed my assumption was wrong...

2. Algorithm: Original question from Leetcode, Easy difficulty

After confirming requirements, I explained while coding. Had some bugs, then explained my observations while fixing them. Eventually fixed everything.

3. Algorithm: Close to a Leetcode hard problem with variations

Initially explained my approach, and after the interviewer agreed, I started explaining while coding. Hit some bugs and got stuck briefly. Completed about 80% - normal test cases passed, but some special cases weren't implemented due to time constraints. I explained what needed to be done and discussed alternative solutions.

Although no problem was solved perfectly, communication with the interviewer was smooth and their feedback was positive.

Recruiter feedback: Positive

Round 2 Technical Interview

The interviewer sounded Chinese, a frontend engineer from another team. Interview conducted in Chinese.

First half focused on technical questions related to my resume experience. For example, I have a React HOC project on GitHub, so they asked about my understanding of React lifecycle, render flow, etc.

Honestly, I didn't answer very smoothly. Several questions I wasn't certain about, but for unknown questions I at least proposed assumptions and explained what results would follow from those assumptions. Couldn't tell from the interviewer's expression if they bought my explanations.

Second half was JavaScript coding - implementing programs based on given interfaces and behaviors.

This was done by screen sharing via video, coding on codepen. Went smoothly, explaining while coding. Discussed implementation details, pros/cons of different approaches, and potential issues (memory leaks, etc.).

Recruiter feedback: Positive

Round 3 Technical Interview

The interviewer sounded Chinese, the hiring manager for the position. Interview conducted in Chinese.

This round had no coding at all, focusing entirely on past project experience and product sense.

I felt my performance wasn't particularly outstanding. My narrative logic sometimes jumped around, and I didn't have impressive project experiences to discuss in depth. But it was adequate without major mistakes.

Recruiter feedback: Positive

Round 4 HR Interview

The interviewer was a local Singapore HR who had worked at Facebook. Interview conducted in English.

This round had more behavioral questions, including salary expectations. I think I made a mistake - despite my best efforts, I couldn't resist the HR's earnest inquiries and accidentally revealed my current salary. I wonder if this led to the offer package being lower than market research suggested.

Offer Get

After 3 technical rounds with all positive feedback from the recruiter, I felt my interview performance was: Round 1 > Round 2 > Round 3. I was relatively more confident in algorithms and JS coding. Since all three rounds were positive and Bytedance Singapore was recruiting at scale, I felt an offer was likely - just a matter of how good the terms would be.

About a week later I received the offer. From LinkedIn invitation to offer took about a month. The package was somewhat below my lower expectations. I asked if they could go higher, but they said this was their fair package after careful market assessment. The ball was back in my court. After serious consideration for several days, I decided to decline initially, mainly because:

  • My current company is good with growth opportunities. No urgent need to change jobs.
  • Personal family factors - if going to Singapore, no childcare support, wife might need to be a full-time homemaker. Considering my wife's current job is also good, the incentive wasn't enough.

After replying with my decline and reasons, about a week later Bytedance indicated willingness to negotiate further. They eventually met my expectations, so I accepted.

Run the World: No Offer

RTW's process:

  • Online assignment
  • 2 technical interview rounds
  • 1 frontend manager behavioral interview
  • 1 CTO 1-on-1

Online Assignment

The assignment was to create a frontend project for video calling using a streaming service provider's API. When I received it, I actually hesitated about whether to continue the interview process, mainly because:

  • I hadn't done similar applications before, so it would take considerable time. I believe even engineers with relevant experience would need significant time for the whole project plus researching third-party service integration, APIs, and details.
  • Bytedance was already in progress, and all else being equal, Bytedance was the company I preferred. This assignment would squeeze my interview preparation time.

But thinking it was good practice and I was interested in streaming technology, I set a goal to complete the assignment on a Saturday afternoon.

The first version had low completion due to time constraints, and the code wasn't well organized. But I submitted it anyway, explaining time limitations blah blah blah...

But they said I could take my time to complete a version I was satisfied with, so I spent more time over the next few days polishing details before submitting another version.

Rounds 1 & 2 Technical Interviews

Interviewers were RTW's frontend engineer and frontend lead. Interviews conducted in Chinese.

Mainly discussed JavaScript, React, Performance, and past project experience. My performance was similar to Bytedance Round 2's technical discussion - for uncertain questions, I made assumptions and gave answers based on those.

Round 3 Technical Interview

Interviewer was RTW's frontend manager. Interview conducted in Chinese.

This round discussed project experience and behavioral questions, similar to Bytedance Round 3. I felt my experience lacked highlights, and my presentation could be improved!

Rejected

After completing the above interviews, a few days later the hunter informed me Run the World wouldn't continue with the final CTO 1-on-1. From receiving the assignment to final rejection notification took about a month.

Although I kept advancing rounds, I didn't feel likely to get an offer. In Bytedance interviews, I felt I performed better in algorithms and coding. Despite weaknesses elsewhere, at least I had strengths.

In contrast, my RTW performance was mediocre:

  • React knowledge sufficient for development, but not particularly deep
  • JS knowledge sufficient for development, but not particularly deep
  • No particularly impressive project experiences

RTW's compensation and benefits are good for Taiwan, they're recruiting through many channels, and seem to have many technical challenges. If such performance could get an offer, I'd find it strange.

Takeaways

I gained quite a lot from this interview experience. While I'd read about some of these things in articles or others' experiences, experiencing them firsthand provides deeper understanding.

Communication & Thought Process > Correct Answers

In a previous algorithm interview, although I solved the problem, I didn't communicate during implementation - just wrote code. Predictably, that interview didn't go well.

But in this round's algorithm interviews, although I didn't complete any problem perfectly, even when stuck I explained what I was stuck on, possible approaches, and when encountering bugs I communicated where I thought the problem might be and how I planned to verify my assumptions. This actually led to good results!

Accumulating Project Experience

During project experience interviews, I felt I lacked eye-catching experiences. This made me reflect that doing daily work well is actually the best preparation for the future.

If you can proactively discover areas for improvement in projects and take on challenging tasks, I believe it will have very positive impacts on both personal growth and future career development.

Finding Your Strengths

If your learning philosophy isn't to master every technical aspect deeply, then dive deeper into areas you find valuable and interesting. Try to guide resume and interview topics toward your strengths.

I think beyond technical aspects, having impressive open source projects, technical blogs, etc. can also be very distinctive. This interview experience made me believe in the importance of having highlights!

Hope sharing these experiences helps everyone!