Front-end interview experience

Written byKalanKalan
💡

If you have any questions or feedback, pleasefill out this form

This post is translated by ChatGPT and originally written in Mandarin, so there may be some inaccuracies or mistakes.

Introduction

Finally, I have some time to整理 my recent interview experiences. Let me summarize a few observations:

  1. Typically, companies focus on assessing familiarity with JavaScript during interviews, often revolving around algorithms or explaining the prototype chain, with little emphasis on DOM or event manipulation.
  2. CSS is rarely tested; even when it is, the questions usually pertain to basic concepts like class and ID specificity.
  3. HTML is not assessed in interviews, including topics like semantic tags, accessibility, or input types.
  4. React, Redux, and ES6 syntax have almost become essential skills for front-end development, while Angular is less commonly adopted by companies.
  5. Generally, recruiters lack professionalism, possibly because they are still inexperienced and have not yet been approached by professional headhunters.

Here are the companies I interviewed with:

  1. Accupass
  2. Codementor
  3. Linker Network Inc.
  4. Rakuten Taiwan
  5. 17 media

Background

I graduated from the National Taiwan University of Science and Technology with a degree in Information Management and currently have two years of work experience. I focus on front-end development and have been working with React and Redux for about two years. Besides regular front-end "engineering," I also enjoy implementing designs and interactions. Additionally, I practice backend knowledge in my small projects, such as AWS, Lambda, Node.js, databases, and machine learning, though my strongest expertise remains in front-end development.

Desired Work Environment

  1. I want to collaborate with a front-end team. My previous work experience involved solo front-end development, making it difficult to discuss specific front-end technologies.
  2. I prefer not to deal with too many unexpected issues, such as sudden requirement changes, canceling ongoing products, or projects that are forced upon you due to personal relationships.
  3. I look for a company with a main product and clear services.
  4. I desire a technically challenging environment where I can work with an excellent team.

Job Search Channels

  • Inside job board
  • Yourator
  • 104 Job Bank
  • F2E Jobs
  • PTT Soft_Job board

1. Accupass

Position Applied: Frontend Developer

Accupass is an event ticketing platform currently rewriting its architecture from Angular to React due to maintenance challenges with Angular, which often leads to issues where a minor change can have widespread effects.

Pre-Interview

I was invited for an interview through 104 by the PM.

During the Interview

The team is expanding. The interview primarily discussed my work experiences and a few small projects. The front-end engineer who interviewed me was Japanese XD, but he spoke Chinese fluently (the entire interview was conducted in Chinese).

We talked about the development status at Accupass, how to develop features, manage schedules, and discussed technical topics with the front-end engineer, ranging from CSS Modules and RxJS to CycleJS. He seemed very passionate about front-end technology.

Interview Outcome

I declined the offer.

The PM was very eager for me to join the Accupass team, and after declining, he called to inquire about my reasons while expressing hope for future collaboration. However, I found other positions more appealing, leading me to turn down the Accupass offer.

2. Linker Network Inc.

Position Applied: Frontend Developer

This company specializes in cloud computing platforms for IoT, AI, and machine learning, requiring front-end development support for UI. Their official website is quite basic and lacks clarity, but the technical work they do is quite advanced.

Pre-Interview

I proactively submitted my resume on 104 and was invited for an interview over the phone. This company engages in highly technical work and hosts community events offline.

During the Interview

It felt like a solidly technical company. I introduced my past work experiences and my use of React and Redux.

Later, I found out that the person who interviewed me was c9s; I thought he looked familiar. It was clear he had deep technical knowledge (though he appeared somewhat worn out).

During the interview, I was asked several optimization-related questions, such as:

  1. How to minify JS? This question required me to explain the minification process and how to eliminate unnecessary whitespace from the code. The concept was straightforward, but the implementation had some details to consider; I didn't think much at first and needed several prompts before I could articulate it.
  2. What methods can be used for front-end performance optimization? I mentioned some common approaches, but it seemed I didn't quite meet the interviewer's expectations. I mentioned base64 encoding to reduce requests, caching, Service Workers, etc.
  3. If you were to create a SPA framework, how would you approach it? My initial consideration would be the handling of routing since SPAs rely on front-end routing. I was later reminded to also consider lifecycle issues.
  4. Various JavaScript questions.
  5. The principles of the prototype chain.
  6. What happens behind the new keyword?
  7. How to implement inheritance.
  8. Who does this refer to?

In the end, someone who seemed to be a manager discussed the company's current status and future developments with me.

Interview Outcome

I haven’t heard back (it's been three weeks now); I guess I wasn't qualified QQ.

3. Rakuten Taiwan

Position Applied: Frontend Developer

I had previously interviewed with them but couldn't commit to a full-time schedule (though I wasn't sure). So I applied again. The office atmosphere was typical of a large company, requiring an employee ID to enter.

Pre-Interview

HR contacted me, sending a background check form and programming test questions. The format was similar to a resume on 104. I want to highlight their interview invitation email.

Most companies usually include their address in the email, but Rakuten highlights important landmarks, like the exit number, above XX Bank, turn right after exiting the elevator, etc. While this might seem trivial, it is incredibly helpful for interviewees, as nobody wants to be wandering around under the scorching sun looking at Google Maps and accidentally going the wrong way.

During the Interview

This interview felt more standardized than my previous experiences, requiring me to complete an IQ test and a personality test, answering basic arithmetic questions. I think I even got a few wrong XD. This extended the overall interview process.

The interview with the engineers was quite pleasant; we mainly discussed work experiences and technical understanding. Both engineers seemed very skilled. One engineer had interviewed me before and mentioned, "I have no concerns about your technical abilities," but due to military service issues, I was still rejected, which was quite touching QQ.

Later, I found out that one of them was the creator of react-bootstrap-table.

The interview focused on JavaScript topics, such as:

  1. Recursion and practical applications. For example, there was a question about reversing a string, where the interviewer asked me to implement it with recursion and explain the benefits. I racked my brain but couldn't find a suitable answer and couldn't find anything online.
  2. Closures and their practical applications.
  3. The advantages of IIFE (Immediately Invoked Function Expressions). I provided a few examples, but later one engineer shared jQuery's source code with me, explaining that using IIFE can effectively aid minification (by parameterizing the window), which was something I had never considered before.
  4. Applications of React and Redux in development scenarios. Questions included common Redux development scenarios, managing stores, and applying React lifecycle methods.
  5. (Updated) How to implement addition without using +. This question tested my understanding of bit operators. It can be done using XOR, which we learned in high school; however, I still had to draw a truth table.
  6. (Updated) Rakuten Taiwan has a memorable slogan: Simplify complex things, streamline simple things, standardize processes, and automate standardized tasks. (Not sure if this is the exact wording.)

Then, they asked more engineering-related questions, such as CI/CD and how to run the development process. Rakuten's tech stack is quite varied, including Angular, React, RoR, and GraphQL.

Interview Outcome

Due to qualifications not matching, I was essentially rejected. However, the front-end team seemed solid; both engineers had experience in other development fields and were very friendly. At the end of the interview, they even offered me a drink (though it was from the company vending machine XD) and provided me with a lot of career advice.

4. Codementor

Position Applied: Frontend Developer

Codementor offers one-on-one online mentoring services, which have expanded into various offerings such as online code reviews, debugging, and pair programming.

Pre-Interview

Given the high technical demands and the focus on engineers, I thought it would be a great place to hone my skills. I submitted my resume on 104 and received an invitation for an online interview the next day. I really appreciate online interviews; they save engineers the hassle of traveling to a company!

During the Interview

Stage One — Engineer Interview

I interviewed with the team lead, discussing past work experiences and answering some development questions. I was orally tested on my understanding of JavaScript and React.

  1. Closures.
  2. What problems does Flux vs. MVC solve? Honestly, I had never used Flux and only seen the architecture diagrams and code, so I had to rely on my understanding to answer.
  3. How does JavaScript achieve asynchronous behavior? We discussed my understanding of the call stack and event loop.

Stage Two — Co-Founder Interview

I chatted online with the co-founder. This stage involved fewer technical discussions; after my self-introduction, he seemed very interested in one of my side projects XD, asking about my motivation for starting it and why I didn't turn it into a complete service. We spent quite a while discussing this small project and also talked about how Codementor is involved in similar content platforms.

Later, he asked about Codementor's history and some aspects of team culture. This stage lasted about 30–40 minutes.

Stage Three — CEO Interview

The CEO was in California, and we also had an online interview. We mainly discussed my job responsibilities, development experience, and some personality-related questions. I guess they wanted to gauge our mutual fit! This stage also lasted around 30–40 minutes.

Both the co-founder and CEO of Codementor are engineers, making the conversation enjoyable without feeling like I was being looked down upon.

He later asked me, "Do you think you're a smart person?" I replied no, as I've come to feel more ignorant after seeing more code and algorithms.

I may never design a vast architecture like React or various sorting algorithms; I just don't see myself as smart no matter how I think about it.

Post-Interview

About five days later, I was politely declined, as they found a more senior front-end candidate. My experience with Codementor was very pleasant; both the CEO and team lead exuded a strong passion for their product. I hope to collaborate with them in the future.

5. 17 media

Position Applied: Frontend Developer

This was probably the most enjoyable company I've interviewed with so far. I saw their job posting on F2E Jobs and hesitated to apply until a friend recommended them, leading to an interview invitation.

During the Interview

The team lead scheduled the interview after working hours at 6:30 PM. I arrived at the office on time, and the team lead also showed up punctually, which I appreciated.

Some companies are uncertain when candidates will arrive, leading to rushed preparations where engineers are often notified of interviews while still working, scrambling to gather relevant materials or quickly reviewing resumes. I asked how many people had been interviewed up to that point, and he even showed me Slack messages, noting a few late arrivals. He clearly values punctuality.

Initially, HR guided me around the office. It was quite spacious, with an impressive snack cabinet and fridge, a coffee machine, coffee beans, and microwave, etc. I heard that the RD team has a separate office, but it seemed a bit crowded that day.

Next was the interview with the team lead, who introduced himself and discussed some work experiences.

As we spoke, he shared insights into the current state of the company and team. He seemed protective of the team. Then came the live coding session, simulating a real scenario where the internet wouldn't be cut off, primarily focusing on common JavaScript applications and built-in function implementations.

After I wrote the code, the team lead began discussing the technical aspects, asking why I wrote certain things and if there were better approaches. He spent a lot of time discussing, asking questions, and offering his opinions on the code, making it feel like a real code review. This portion took the longest, about 1.5 hours.

At the end, he provided a piece of messy code for me to review and debug. After discussing it together, the interview concluded.

When I left the office, it was around 9:50 PM; he was very patient and continued working alongside me. One memorable discussion we had was about the usage of \B, a regular expression that few people understand deeply, so after we discussed the original answer, I asked him about the usage of \B.

He patiently explained everything from \b, \w to \B, clearing up a long-standing doubt of mine (there aren't many clear explanations of \b available online).

He left me with several impressions:

  1. Authenticity: They don't hide the company's situation, so you don’t feel deceived once you enter. Throughout our discussion, he casually mentioned some frustrations and observations from work, indicating he has experienced quite a bit.
  2. Sincerity: They don't use strange questions to stump candidates but instead engage in discussions about code quality and how to improve specific pieces of code. This is quite rare in interviews. Additionally, when I mentioned that the office was so large I wasn't sure who to ask for help upon entering, he said he would reflect this to HR. I initially thought he was just being polite (as most companies often just listen), but to my surprise, he genuinely communicated this to HR, which deeply touched me.

Interview Outcome

I received an offer! HR called to explain the onboarding process.

Interview Reflections

Interviews can be exhausting QQ. If possible, I would prefer not to travel around and would gladly opt for online interviews, which perfectly suit a lazy engineer!

Beyond "job hunting," this interview experience introduced me to many developers. They may not be highly visible in major communities, but in terms of skill and character, they often far surpass some developers who are more active online. This isn't to say that participating in communities is a bad thing; many people contribute significantly to them. However, many individuals also contribute quietly offline, and one’s skill should not be judged solely by their activity level.

In addition to "job hunting," I learned the value of humility during these interviews. The software development field is filled with incredibly smart individuals, constantly reminding me of how much I don't know.

1. Resume Preparation

Since I regularly write on Medium and my blog, I can easily incorporate my resume into those platforms. Moreover, as my resume is hosted on GitHub, it is straightforward to update.

2. Work Experience

Work experience should not merely list company names, job titles, and years of service; it should detail specific responsibilities and contributions made in the company, such as:

  • Developed complex pages using React and Redux.
  • Optimized homepage loading performance.

This is far more informative than simply stating that one was a front-end developer.

3. Side Projects

If you have side projects outside of work, that's even better. As an engineer, there will always be problems you want to solve on your own.

This can demonstrate to interviewers the areas and technologies you are passionate about; within each project, there will be specific challenges that have troubled you for a long time or that you spent considerable time resolving.

4. Ask Questions

Interviews should be a two-way conversation rather than a rigid Q&A format. Knowing how to ask follow-up questions can enhance your understanding of the company.

I typically ask about internal company processes, focusing on these areas:

  1. Is there automation? Many companies still rely on manual SSH logins for deployment. Such development practices may indirectly reflect the company's culture, like cumbersome budget application processes and neglecting things that could be automated.
  2. How are bugs resolved? The methods used to resolve bugs can reveal how the company schedules work. For instance, how bugs are reported and who prioritizes them can indicate whether they have a systematic approach to scheduling.
  3. Are requirements frequently changing? This question can be approached from various angles—what constitutes frequent changes? When do changes occur? What qualifies as a change? This can reveal whether a company often claims to develop feature A but delivers feature B instead.

From there, I typically follow up on their responses, which usually gives me a good sense of the company's internal situation.

If you found this article helpful, please consider buying me a coffee ☕ It'll make my ordinary day shine ✨

Buy me a coffee