Kalan's Blog

Kalan 頭像照片,在淡水拍攝,淺藍背景

四零二曜日電子報上線啦!訂閱訂起來

Software Engineer / Taiwanese / Life in Fukuoka
This blog supports RSS feed (all content), you can click RSS icon or setup through third-party service. If there are special styles such as code syntax in the technical article, it is still recommended to browse to the original website for the best experience.

Current Theme light

我會把一些不成文的筆記或是最近的生活雜感放在短筆記,如果有興趣的話可以來看看唷!

Please notice that currenly most of posts are translated by AI automatically and might contain lots of confusion. I'll gradually translate the post ASAP

Front-end interview experience

Introduction

Finally, I have some time to organize my recent interview experiences. Let me summarize some things I observed:

  1. Companies usually focus on assessing familiarity with JavaScript during interviews, mostly regarding algorithms or explaining prototype chains. They rarely ask about DOM manipulation or event handling.
  2. CSS is rarely assessed, and if it is, it's usually basic questions about class and ID specificity.
  3. HTML is not usually covered in interviews, such as semantic tags, accessibility, or input type usage.
  4. React, Redux, and ES6 syntax have become essential skills for front-end development, while Angular is less commonly used by companies.
  5. Most recruiters lack expertise, possibly because they are not experienced enough or haven't been approached by professional recruiters.

Below are the companies I interviewed with:

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

Background

I graduated from a national university with a major in Management Information Systems and currently have two years of work experience. I mainly focus on front-end development, with around two years of experience in React and Redux. Besides general front-end engineering, I also enjoy implementing and interacting with UI designs. I have also practiced backend knowledge in my personal projects, such as AWS, Lambda, Node.js, databases, and machine learning. However, my strongest expertise lies in front-end development.

Desired Work Environment

  1. Collaboration with a front-end team. In my previous job, I was the only front-end developer, making it challenging to discuss specific front-end technologies.
  2. Avoidance of too many unexpected situations, such as sudden requirement changes, cancellation of ongoing projects, or being forced to work on projects due to personal relationships.
  3. A primary product and clear services.
  4. High technical standards and the opportunity to work with an excellent team.

Job Search Channels

  • Inside job boards
  • Yourator
  • 104 Human Resources Bank
  • F2E Jobs
  • PTT Soft_Job board

1. Accupass Event Ticketing

Position Applied: Frontend Developer

Accupass is an event ticketing website that is currently migrating its architecture from Angular to React. The reason for this change is that Angular was difficult to maintain and often led to cascading issues.

Before the Interview

I was invited for an interview on 104 by the project manager.

During the Interview

The team was expanding. The interview mainly focused on discussing my work experience and some minor projects. The front-end engineer who interviewed me that day was from Japan, but he spoke Chinese fluently throughout the entire interview.

We discussed the development status of Accupass, how to develop features, and project management. We also talked about various front-end technologies, including CSS Modules and RxJS, and even touched on CycleJS. The engineer seemed passionate about front-end technologies.

Interview Result

I politely declined the offer.

The project manager was very interested in having me join the Accupass team. After declining, they called me to inquire about the reason and mentioned the possibility of working together in the future. However, I found other positions more appealing, so I rejected Accupass' offer.

2. Linker Network Inc.

Position Applied: Frontend Developer

Linker Network Inc. is a cloud computing platform specializing in IoT, AI, and machine learning. As these platforms require UI support, they needed assistance from front-end developers. The company's website looks quite simple, but the work they do is highly technical.

Before the Interview

I proactively submitted my resume on 104 and received a phone call invitation. This company's technology level is quite deep, and they also organize some offline community events.

During the Interview

I felt that this was a company with solid technical expertise. I introduced myself and talked about my past work experience, including React and Redux.

Later, I realized that the person who interviewed me was c9s, and I wondered why he looked so familiar. He seemed like a knowledgeable person, with a deep understanding of technology (although he appeared a bit tired).

During the interview, he asked some optimization-related questions, such as:

  1. How to minify JavaScript? This question aimed to explain the process of JavaScript minification and how to remove unnecessary whitespace from the code. The idea behind it was simple, but there were some details to consider during implementation. I didn't think much about it at the time and needed several prompts before I could write the answer.
  2. How to optimize front-end performance? I mentioned some common approaches, but it didn't seem to align with the interviewer's expectations. For example, I mentioned reducing requests by using base64 encoding, caching, and ServiceWorkers.
  3. How would you create an SPA framework? If I were to create one, the first thing to consider would be the router implementation since SPAs rely on front-end routing. Later, I was reminded to consider lifecycle management as well.
  4. Some JavaScript questions.
  5. Understanding prototype chains.
  6. What happens behind the scenes when using new?
  7. How to implement inheritance.
  8. Understanding the this keyword.

Finally, I had a conversation with a person who seemed to be a manager, discussing the company's current situation and future development plans.

Interview Result

No response yet (it has been three weeks), probably because I wasn't experienced enough.

3. Rakuten Market

Position Applied: Frontend Developer

I had previously attended an interview with Rakuten Market but couldn't provide full-time availability (not sure if that was the reason). So, I applied again. The office atmosphere was similar to that of a typical large company, requiring an employee ID to enter.

Before the Interview

HR contacted me and sent a personal information form and a programming test. The format was similar to a resume on 104. I'd like to mention their interview invitation email specifically.

Usually, companies include the address in the email. However, Rakuten Market highlighted some important landmarks, such as the exit number, above a certain bank, or turn right after exiting the elevator. Although this is a minor detail, it is useful for interviewees. After all, no one wants to walk in the wrong direction under the scorching sun while checking Google Maps.

During the Interview

This interview seemed more standardized compared to previous ones. I had to complete intelligence and personality tests, which included some basic arithmetic questions. I think I got a few of them wrong. This extended the overall interview duration.

The conversation with the engineers went smoothly. We mainly discussed my work experience and technical knowledge. Both engineers seemed highly skilled. One of them had previously interviewed me and said, "I have no major concerns about your technical abilities." However, due to military service restrictions, I was still rejected. This touched me deeply.

Later, I discovered that one of the engineers was the creator of react-bootstrap-table.

The interview mainly focused on JavaScript topics, such as:

  1. Recursion and practical applications. For example, there was a question about reversing a string using recursion, and I was asked about the benefits. I couldn't think of a solution at the time, and I couldn't find an answer online either.
  2. Closures and practical development applications.
  3. Benefits of Immediately Invoked Function Expressions (IIFE). I gave a few examples, but later, one engineer shared jQuery's source code with me, explaining how using an IIFE could help with minification (by parameterizing the window object). This was something I had never considered before.
  4. Applications of React and Redux in development scenarios. Questions about common Redux development scenarios, store management, and the application of React's lifecycle.
  5. (Updated) How to perform addition without using the + operator. This question tested understanding of bit operators. It can be achieved using XOR, which was taught in high school, but I still had to draw a truth table.
  6. (Updated) Rakuten Market has a slogan that left a deep impression on me: "Simplify complex things, process simple things, standardize processes, and automate standardized things." (Not sure if the original wording is exactly like this.)

Afterward, I was asked some engineering-related questions, such as CI/CD and development workflow. Rakuten Market has a wide range of technologies, including Angular, React, RoR, and GraphQL.

Interview Result

Most likely rejected due to not meeting the qualifications. However, the front-end team seemed very solid. Both engineers had experience in areas beyond front-end development, and they were friendly. At the end of the interview, they even offered me a drink (from the company's vending machine, though) and provided me with career advice.

4. Codementor

Position Applied: Frontend Developer

Codementor provides one-on-one online mentorship services. They have expanded their services to include code review, debugging, pair programming, and more.

Before the Interview

Due to their high technical standards and the fact that they interact with engineers, I thought it would be a good place to improve my skills. I submitted my resume on 104 and received an online interview invitation from HR. I quite like online interviews; they save engineers from the hassle of traveling to the company's office.

During the Interview

First Stage - Engineer Interview

I had an interview with the team lead, discussing my work experience and asking some development-related questions. They orally assessed my understanding of JavaScript and React.

  1. Closures
  2. What problems do Flux and MVC solve? Honestly, I haven't had practical experience with Flux, only seen its architecture diagrams and code. So, I had to rely on my understanding to answer.
  3. How does JavaScript achieve asynchronicity? We discussed my understanding of the call stack and event loop.

Second Stage - Interview with Co-founder

I had an online chat with the co-founder. This stage focused less on technical aspects. After introducing myself, he seemed quite interested in one of my side projects. He asked about my motivation for starting it and why I didn't turn it into a complete service. We spent a long time discussing this project and also talked about how Code Mentor provides similar content platform services.

Later, he asked about the history of Code Mentor and some questions related to team culture. The whole session lasted about 30-40 minutes.

Third Stage - Interview with CEO

The CEO was in California, and we had an online interview. We mainly discussed my work responsibilities, development experience, and some questions about personal traits. This stage aimed to assess how well we matched each other! The session lasted about 30-40 minutes.

Since Code Mentor's co-founder and CEO both had engineering backgrounds, the conversation was enjoyable, and I didn't feel like they were looking down on me.

He asked me a question: "Do you consider yourself a smart person?" I answered no, as the more code and algorithms I see, the more I realize how ignorant I am.

I may never be able to design a framework as extensive as React or develop various sorting algorithms. No matter how I think about it, I don't consider myself very intelligent.

He gave me a few impressions:

  1. Authenticity: They didn't conceal the company's situation, ensuring that I wouldn't feel deceived after joining. During the conversation, he unintentionally mentioned some frustrations and regrets related to work, indicating that he had experienced many ups and downs.
  2. Sincerity: They didn't ask strange interview questions and discussed code quality and how to improve the code together. This is quite rare during interviews. When I mentioned that I didn't know who to contact when I entered the office due to its size, he said he would inform HR. I thought he was just saying it (as most companies do), but he actually followed up with HR, which touched me deeply.

Interview Result

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

Interview Experience

Interviews can be exhausting. If possible, I prefer to conduct all interviews online—perfect for lazy engineers!

In addition to finding a job, this interview process introduced me to many developers. They may not often appear in major communities, but in terms of skills and expertise, they are far more knowledgeable than some developers who inflate themselves online. This is not to say that participating in communities is a bad thing; many people contribute a lot to communities. However, there are also many people who quietly contribute offline, and we shouldn't judge someone's skills solely based on their online presence.

In addition to finding a job, this interview experience taught me humility. There are many intelligent people in the software development field, constantly reminding me of how ignorant I am.

1. Resume Preparation

Since I usually write on Medium and my personal blog, I could include my resume there as well. As it was hosted on GitHub, it was easy to update.

2. Work Experience

Work experience should not just include company names, job titles, and years of service. It should detail the specific tasks and accomplishments, such as:

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

This provides more information than simply stating "Frontend Developer."

3. Side Projects

Having side projects is a plus. As an engineer, you will always have problems you want to solve.

Let the interviewer know your interests and technical skills. Each project will have specific challenges that have troubled you for a long time or required significant effort to solve.

4. Ask Questions

An interview should be a two-way communication, not just a standard question-and-answer session. Knowing how to ask questions and being able to gain a deeper understanding of the company is crucial.

Usually, I ask questions about the company's internal processes, focusing on these aspects:

  1. Is there automation? Many companies still rely on manual SSH deployments. This development approach may indirectly reflect the company's culture, such as complex budget approval processes or ignoring automation possibilities.
  2. How are bugs handled? The bug resolution process can reveal how the company schedules tasks. For example, how are bugs reported and who decides their priority? The answers can indicate whether the company has established procedures for task scheduling.
  3. How often do requirements change? By asking about changing requirements, you can gain insights from various perspectives. What is considered frequent changes? When do changes usually occur? How do they handle changes? Answers to these questions can reveal whether the company tends to switch from what was agreed upon during development.

From these questions, you can continue the conversation based on the interviewer's responses, gaining a better understanding of the company's internal culture.

Conclusion

These interviews were quite tiring. If possible, I prefer online interviews to avoid traveling everywhere. It's perfect for a lazy engineer!

In addition to finding a job, these interviews introduced me to various developers. They may not be active in major communities, but in terms of skills and knowledge, they are far more experienced than some developers who are active online. I don't mean to say that community participation is a bad thing; many people contribute a lot to communities. However, there are also many people who quietly contribute offline, and we shouldn't judge someone's skills solely based on their online presence.

In addition to finding a job, these interviews taught me the importance of humility. In the field of software development, there are many intelligent people who constantly remind me of how ignorant I am.

Prev

Talking about several APIs in ramda

Next

React16 Highlights

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

Buy me a coffee