Baidu Intern Frontend Interview

This interview is for the frontend internship position in the Industry Innovation Business Department of the ACG Baidu Intelligent Cloud Division. Back then, it was Haize, a senior colleague, who was looking for people in the group, so I sent in my resume to see if I could intern during the winter break.

First Round

The first round was scheduled for 15:00 on 2020.11.10. The interviewer, a young lady, was quite pretty, haha. But I was still nervous, I mean, it had been so long since I last interacted with an interviewer. The interview lasted for about 50 minutes. The interviewer's computer ran out of battery, and I had to send her the last curried programming question I had solved. Man, I was so nervous that my typing went all wonky. However, I think I did alright. Despite being a bit nervous and stumbling over my words, I managed to answer most of the questions. Once I was done with the first round, Haize told me that the second round would be scheduled in a few days. These are the questions I could recall from the interview. There might be some that I can't remember, but I have basically covered them in my blog. However, the explanations in my blog are quite lengthy, so you may want to take a look at it. Additionally, make sure to frequently read my blog because I tend to forget what I have written before.

  • Implement a three-column layout using flex, position, and float, and share the code on the screen.
  • The difference between fixed and absolute in positioning.
  • Basic data types in JavaScript.
  • The role of the Symbol data type in JavaScript.
  • Differences between let, const, and var in ES6.
  • The purpose of the Promise object and the role of async and await.
  • Ways to implement inheritance in ES5 and ES6 in JavaScript, and write the code.
  • Understanding of the scope, prototype chain, and closures in JavaScript.
  • Methods to determine data types in JavaScript and their differences.
  • Characteristics of the HTTP2.0 protocol.
  • The purpose of options in HTTP requests, simple requests and complex requests, and cross-origin issues.
  • Browser caching mechanisms, the request headers used to control them, the values of the Cache-Control property, and the distinction between strong caching and conditional caching.
  • The principles of XSS and CSRF attacks and how to avoid them.
  • Understanding of the MVVM pattern.
  • The lifecycle of Vue and when they are triggered.
  • The purpose of the key attribute in Vue loops. I probably shouldn't have mentioned the diff algorithm because I didn't thoroughly study it, and I ended up digging a hole for myself.
  • The diff algorithm in Vue: breadth-first search or depth-first search.
  • Methods for parent-child component communication in Vue.
  • How data two-way binding is achieved in Vue and the differences between 2.0 and 3.0.
  • How Vue-Router implements routing and the differences between Hash mode and History mode.
  • Programming: Write a program to flatten an array, remove duplicate elements, and obtain a non-repeating ascending array.
  • Programming: Implement plus(1)(2)(3)(4) to equal 8.

Missed Opportunity

The second round was scheduled for 2020-11-16, but it turned out that there was actually no second round. They call it the "second round", but in reality, there wasn't one. Let's just call it a "vermicelli" round. Initially, there was supposed to be a second round, but they changed their minds. Then Haize told me that they were looking for someone who could receive an offer, to be more precise, someone who could receive a formal offer upon graduation next year. Well, I'm a first-year postgraduate, so I'm clearly not qualified. It seems like they are actually looking for autumn recruitment, but they don't want someone like me for an internship. So, my self-esteem took a hit, haha.

When the first round ended, they told me to wait for a second round, and then this happened - I was taken aback.

Also, I casually asked about the number of frontend resumes received as compared to backend, and Haize mentioned that in terms of future promotion, front-end roles might not have a significant advantage. However, after spending so much time learning frontend development, switching to backend might not be suitable for me. Who knows, maybe I'll end up doing C++ in the end.

It's really tough to get into a Big Tech company. Back when I applied for an internship at Alibaba, I didn't make it through. Now, Baidu has turned me down for an internship too. I'm really having a hard time.