This article first appeared in my blog, welcome to follow ~
This year’s spring recruitment (summer internship) batch has passed most of the time, I believe many students have already got their favorite offer ~ I was planning to write about this experience in summer vacation, but today I just have free time to record it, hoping to give a little inspiration and advice to students who are looking for front-end internship or work in the future. (Since my sister is studying in Beijing, I only want to apply for the internship opportunity in Beijing, which is the main premise of this article).
I myself am a second graduate student of Beijing University of Posts and Telecommunications, majoring in front end. I don’t have much interview experience. From January to now, I have only met with 3 companies in total: Toutiao, Tencent · wechat and Ant Financial · Alipay. Fortunately, I got offers from all of them. In fact, I think internal promotion is of great help to me. Without internal promotion, I think it would be difficult for me to get an offer. So the first rule of thumb: can find internal push as far as possible through internal push to obtain interview qualifications. Seniors who help you push in will generally help you check (or even modify) your resume, and some can be directly pushed to the leader, which is equivalent to saving the steps of HR to screen the resume, so if you can find internal push, try to go internal push rather than simply go online.
headlines
In January, an upperclassman from Toutiao contacted me via email and was very interested in my PicGo. Asked me for a very rudimentary resume, pushed me in.
However, after the interview email came, I learned that the position offered to me was iOS R&D engineer. Their group is a mobile terminal group, they need to recruit front-end, but there may be no front-end quota, so they used the iOS position to promote me. And then I got confused and went to the interview. To be honest, it was my first interview, and all the students around me had not started to look for internships, so I was not well prepared in only a few days.
I’ve been on the front page three times, all on video. One of the interviews was back-to-back (as soon as the interview was over, the interviewer came to see me). Due to the special nature of this group, the interviewers who came to interview me were not front-end writers, so they asked more questions about network and computer. In hindsight (after meeting wechat and Ant in March), I felt that I had failed to answer the headlines in January.
But one thing I feel like I did right is write down the questions right after the interview. The three companies have different priorities.
The headline on one side
There’s a young guy on the front page who does mobile. He asked about my project first, because they were front-end, he didn’t know much about them, so he began to ask questions:
- 16 and Unicode utf-8 UTF – what relation “was not | coding rule and character set”
- The TCP three-way handshake is understandable, so why do you need four waves?
- Common HTTP status codes
- GET/POST request difference
- HTTP message is divided into several parts, respectively said what, the head is particularly important to the said at the time of not complete | 3 parts, as well as the difference between the request and response message 】
- HTTPS, with the TLS and SSL encryption is symmetric or asymmetric encryption “was not particularly understand | both”
- JS memory management mechanism
- Array and linked list differences and application scenarios
- How to implement dynamic array, which is more expensive to find or insert
- Electron principle, simple description [Node.js+NativeApi+Chromium]
- Object.defineproperty + Dep + Watcher
- How to learn new knowledge from blogs, nuggets, GitHub, StackOverflow, etc.
- The most difficult and challenging thing in the development project [PicGo plug-in system]
- Algorithm problem 1, find the subarray of the largest sum in the array.
One side of the algorithm although the train of thought said right, but did not write out when I feel cold. “Wait a minute, I’ll call the interviewer for a second interview.”
Headline 2 face
Three minutes apart from one side. The second interview is a crossover interview with interviewers from another department. The interviewer looks older than the other interviewer. After a brief introduction, he began to ask me questions:
- If I am a Leader and want to reduce the first screen rendering time of a page in the APP, how to coordinate the front-end, server and client? I said cache related, but the interviewer said not enough.
- What are the steps from entering a URL to the end user seeing the interface?
- Do you know anything about HTTP/2 and the QUIC protocol?
- HTTP cache, 304 status code
- Algorithm problem 2, whether single linked lists cross, how to calculate the number of overlaps
Algorithm 2 looks super easy right now. At that time I really did not brush the problem, usually the algorithm training is also very little, so the idea can pass but not the optimal solution. The interviewer said “ok”.
Headlines on three sides
The third and second were separated by, like, a few days. In fact, after the second interview, I still felt very uncertain, but I still received a call from HR for three appointments. The three interviewers are the department leaders now. This was the most relaxed interview, with few complicated questions:
- Talk about projects [resume, mainly PicGo]
- The Electron principle
- The principle of Markdown rendering
- Thoughts on front-end framework [expressed my cognition from the perspective of development efficiency, later maintenance and engineering]
- Do you have any questions?
Since the Chinese New Year is approaching at the end of January, HR gave me an oral offer before the Spring Festival, and then sent me a formal offer after the Spring Festival.
As the first offer in my life, I am quite excited. But I’ve always been a little uncomfortable being in a position other than front-end development. In fact, WHAT I want to work for is a professional front end team, and what I do after entering the company is not what I particularly like, so I am thinking of looking for an internship I like better when I return to school after the New Year. And of course the headline job is great!
Experience summary two: algorithm, data structure and computer, network basic knowledge is very important, even if the front-end r&d engineer, is also an engineer. So I went back to work on my weak algorithms and data structures.
Tencent · wechat
Tencent spring recruitment (summer internship) this year started very early, from the end of February can start online applications, internal promotion. In particular, the whole month of March is approved in advance, and students who have not completed the process before April 1 must take the written test in April. So the theory is that the sooner you do it, the better, the later you get the more resumes you have and if you don’t finish the process by April, you have to take the written test.
Originally, I wanted to meet several smaller companies to accumulate experience before investing in Tencent and Ant Financial, after all, the threshold of these two is quite high. Originally planned to invest in the front end of Beijing wechat post, but asked an upperclassman last year said that Beijing’s wechat does not recruit front end, so MY focus on ant Financial Beijing internship. But something happened that threw me off course.
I have an upperclass who works in wechat. After hearing my situation, he helped me ask the recruitment situation of wechat in Beijing this year from wechat HR, but HC is rare. I listen to, ah, good opportunity. I quickly revised my resume and sent it to my senior. Two days later, I received an invitation for a live interview on wechat in Beijing. I was still very upset. After all, it was wechat. And it was my first on-the-spot interview.
WeChat side
When I arrived at the scene, I was approached by an upperclassman of my own age, who said, “I am your interviewer.” The live interview on wechat was less formal than I had expected (a small room for two) and took place in an open hall with small round tables and good lighting. All in all, the interview experience was good. I also saw a lot of other people coming in for interviews.
At the same time, the interviewer said that he was also a graduate of Beijing University of Posts and Telecommunications, and felt relaxed all of a sudden. And then he basically took my resume and started asking questions.
- Ask what the intern did [graduate tutor’s company]
- What PicGo does
- What is Electron? Why do you choose to use Electron?
- The Understanding of MVVM and Vue
- Object.defineproperty + Dep + Watcher
- The value of a created vue can be used for both applications and for both applications.
- Talk about Virtual Dom
- Render function () {render function () {template ();
- What is the difference between vue server rendering and client rendering? What is the server rendering function?
- This pointer and arrow function
- What is the difference between let and var?
- Tree shanking for webpack and rollup
- What is the difference between a Webpack loader and a plugin?
- How to realize the Finally of promise
- The difference between a browser and a Node event loop
The questions on the first side were basically answered, and the interviewer felt very satisfied, so he let me wait and called the second interviewer, who told me that he was specialized in algorithms. (Heart chill)
WeChat 2 face
The interviewer told me that he graduated from Beijing Normal University, which is very close to my school (BuPT). And say, “Let’s go to a simple algorithm, you don’t have to write it, you just have to talk about it.”
- Algorithm: m*n matrix, only 0, 1, find the largest rectangular area containing only 1. The interviewer has been guiding me but I still can’t figure out how to achieve a better solution.
- PicGo: What does PicGo do?
Algorithm problem is not made (although said the most stupid solution) in the heart is a cool, feeling GG. The interviewer replied, “The young man is quite flexible.” Then he told me to wait and called in three interviewers.
WeChat on three sides
There was a female leader on the third side. She said to me, “The interviewer in front spoke highly of you.” So he started asking me about my personal experience and the project. Finally, when can I come? I’m surprised. I signed up for a summer internship. Then she said that recently there was an urgent project to be put on line, so there was a shortage of people, so she asked for an extra front-end HC. I said my lab won’t release anyone until summer break… So we need to think about it a little bit. And at this time I heard that their team was actually doing AI, and there were only two people in the front end if I went there. By this time, I felt something was wrong, but the leader said that there would be another telephone interview in Guangzhou for me to prepare.
WeChat all around
Within two days, it was my first phone interview. The four sides are purely around the project I do PicGo began to say. The most important part of the question is my thinking about PicGo. From the perspective of the developer and the user and the product. For example, how to maintain, how to polish the product, how to overcome the problems encountered, and how to deal with different opinions from users, and so on. I feel more concerned about my cognition of PicGo and future planning, whether it is a product made with heart or just a star collector.
After the four-sided interview, the leader of the three-sided interview called me and asked me when I could go to the internship. However, I decided not to go in these days. First, the lab can’t release people until the end of June; The second offer was different from what I expected. I thought it was the front end team of wechat recruiting interns (but it wasn’t), because I actually wanted to continue to do more in-depth work in the front end, so I still rejected this offer. At that time, I thought that if there was no position I liked in Beijing wechat, it would be ok. I would just prepare for the interview of Ant Financial.
When I returned to my dormitory, I told my roommates that I had rejected the offer from wechat, and they only threw me a sentence of “Reckless waste.” Willing to part with or use willing, give to you, later to say again.
Ant Financial · Alipay
Before the interview on wechat, I was contacted by a Beijing Post student from Alipay. He said that he had been following me on GitHub for a long time and wanted to push me to the front end team of Alipay. Naturally, I was happy to say yes. But I wanted to improve my resume and finish my wechat first. Otherwise, I will prepare for the interviews of two big factories all at once, not to mention the pressure, but it will be more embarrassing if I bump into them in a short time. After refusing wechat, I sent my resume to my senior and started the internal promotion of Alipay.
Alipay side of the technical side of a total of three +HR side. Full telephone interview.
Alipay side
Soon after the interview, the interviewer contacted me via wechat and made an appointment with me (7:30 PM the next day) and said, “I am very relaxed on this side.” Before the interview, I heard that the interview of Ant Financial was quite difficult. Although my brother said it was easy, I was prepared to be failed.
The phone rang at 7:30 sharp. The interviewer said that he was also a graduate of BUPT, which made me relax a little. And then the next question made me sweat.
- Introduce the project [laboratory project + personal project]
- Understanding of front-end engineering [process + specification + automation, etc.]
- What configuration has been done to Webpack to speed things up [many, please refer to my article for details]
- If a piece of code is typed into Babel and the result is typed into Babel, will the result be the same?
- Presets, plugins, env
- How to release and install PicGo plug-ins, and how to ensure the security of plug-ins?
- How Electron implements cross-process communication. What are some other examples of cross-process communication [ipcMain and ipcRenderer, cross-process communication such as socket, ETC., I don’t know much about]
- The Electron packaging volume, compilation speed related to how to consider, how to optimize or how to do [I am through CI packaging, not through my own machine, so I did not specifically consider this aspect, but do not need to use Babel translation can save some time]
- Static typing, syntax checking, etc.
- Does TypeScript interface take up space when compiled? What about enum? (Runtime is not the same as development)
- Describe what server rendering is and how to implement server rendering for Vue.
- If Vue2 does not implement VirtualDOM, can it do server rendering?
- How to implement the diff algorithm of Vue
- 【 algorithm 】 to find the longest common subsequence of two sequences.
- Object.defineproperty + Dep + Watcher
- A: Ant Forest, Ant Farm, etc.
The difficulty of one side should be the most difficult since these three big factories. I was nervous during the interview, but I was nervous at the beginning, but I got better when I talked about it. After the interview, the interviewer said to contact me after the second interview. The second interviewer is the leader of their department.
Second face of Alipay
The second day after the interview, the interviewer added me and made an appointment for a telephone interview at 7:30 p.m. that day. (= one interview yesterday, two today…) I learned from my senior brother that the second interviewer is a very good person, so the difficulty should be higher than the first interviewer. Hearing this news unconsciously swallowed saliva, uncomfortable.
The phone rang at 7:30 sharp. The voice and tone of the interviewer in the second interview gave me the impression that they were low and serious at the beginning. And then the questions really “didn’t disappoint me”.
- Preschool experience? [15 years of self-study, a brief introduction]
- My understanding of computer architecture
- Have you lived through the era of jQuery?
- How does Webpack optimization work?
- In what direction are the above optimizations made [cache, reducing file search paths, multi-process optimizations, etc.]
- Did the above optimization quantify the problems (such as how long each piece takes, etc.) and then make targeted optimization [Checked the compilation time of the development stage with profile, made a simple plug-in to improve the speed of the development stage, but I did not explain the principle clearly]
- What is the vue-hot-reload principle? (WEBsocket + jSONp update, but actually more complex)
- In vue project, if I update a JS script but the page doesn’t update, how do I make vue-hot-reload update it?
- In a Vue project, if I update a JS, but don’t want the page to refresh, but just update the execution part of my JS, how do I make vue-hot-reload to update it?
- Vue template is converted to render functions.
- By the way, regular matching alone cannot solve all problems. What else is needed, and how and in what stages? (AST) [General, but don’t know how organically strung]
- How much do YOU know about AST? Where do you know about AST?
- What problems did you encounter when writing Electron? [system-level right-click menu implementation, plug-in system, etc.]
- How to encode base64
- The process from entering an address to the browser displaying the web page
- Can DNS query be done using TCP?
- HTTPS handshake encryption process
- The difference between setTimeout and Promise asynchracy, between browser and Node.
- How to test Koa and Vue with Jest
- Which is more familiar, CSS or JS? [JS]
- Rotate, translate, rotate, rotate, rotate
- How do I make a div shift and color change? A transform can have multiple attributes. A transform can have multiple attributes. A transform can have multiple attributes.
- Vue’s reactive principle, and how a reactive system will respond if a variable is not already present (or used) on the page
- How do parent and child components collect dependencies separately, or how do parent components ensure that parent components collect only their own dependencies and child components collect only their own dependencies?
- How to ensure that dependency collection does not fail after a new Watcher is created within the Watcher
- Ask the algorithm and data structure to master the degree → say quick row [said quick row principle]
- Where did you get all of your irrelevant knowledge from (lab projects, classmates, diy, blogs, etc.)
- Do you have any questions for me?
After the face feels very cold, the depth of the problem is really deep. In previous interviews, there were few questions that could not be answered completely, and this time, the vue-hot-reload question was almost not answered. The final feedback from the interviewer was probably good, so I waited nervously for the third interview.
Three sides of Alipay
After a few days, the three interviewers made an appointment with me by phone, listening to the voice is still very kind. However, the problem is still very difficult ah! Not many questions, three in all, but the first one made me uncomfortable:
- [Algorithm + front end] Given a certain number of particles, each particle has 4 attributes [position coordinates, radius, velocity, acceleration]. Ask how to plot these moving particles and what data structure to store them in the following quantities.
- 20 [DOM, Canvas]
- 500 [DOM, Canvas]
- Canvas, but not enough, because there is no need to render all 200W points, only need to render the viewable area. So the key problem is how to find the circle that only appears in the viewable area, this is a data structure + algorithm problem.
- If 500 particles are drawn using the DOM, which one will perform better using VirtualDom (Vue or React) than using the native DOM (assuming extreme optimization)? I said native manipulation and gave reasons why VirtualDom is not suitable for this example.
- Given a marketing page within an APP, the user might open the APP offline. If the marketing page image is out of date, it should be taken down, otherwise it will cause ambiguity. With what method can remove excuse me. If JS is not available, what if the user changes the client time? 【 答 案 】 First, ask the normal offline mode implementation, then do not allow to use JS, and the client time is not accurate.
The interview lasted less than 45 minutes and the interviewer said it should not be too long or it would affect my evaluation. I told you I wasn’t good enough on the first question. The interviewer says, “Not good enough, man, bad! You did a good job on the second question, a little wrong on the third, but you did a terrible job on the first.”
Then the interviewer said, “HR will contact you later.” Eee, so there’s still a chance?
Experience summary three: it is not good to only know what is and do not know why, to understand the principle of a deeper to better solve the problem.
But life has its ups and downs.
Wechat · Mini program
Around the end of my alipay interview, the HR girl from wechat contacted me and asked me why I had rejected the position in Beijing. I mentioned the reasons I was considering (mainly the team not meeting expectations etc.). I thought the fate of wechat was like this. Then HR sister did not give up and helped me contact the front end department of Guangzhou wechat mini program and asked me whether I would go there for internship. I have discussed with my sister that a two-month summer internship in Guangzhou is also acceptable. So he agreed. But there’s more to add to the mini-program side. Small program this department is small program developer tools, I think it is my appetite, just I also like to write tools.
After many twists and turns, I got the offer of wechat mini program within two days while waiting for the HR of Alipay to call me.
Wechat · Small program side
I remember the Monday afternoon of the last week of March very well. We start at 3 o ‘clock. The interviewer gave me a link and told me to finish the questions in an hour and then he would talk to me on the phone.
There were two questions in one hour. When the two questions were finished, the interviewer called and asked some simple questions:
- Some questions on the written questions, such as this pointer question in the first question, the thinking question in the second question.
- HTTPS connection establishment procedure
- 【 General questions, types of caches, the role of different caches, etc. 】
- Cognition of front-end security [XSS, CSRF, etc.]
- Do you have any questions about why the apet developer tool uses Nw.js instead of Electron
After about half an hour of questioning, the interviewer said that the leader in the second interview would contact me later. As a result of the pen test questions are made, so the feeling is still quite good. I just didn’t know the second interview would happen so soon.
Wechat · Small program second face
The second interviewer called me after about half an hour, mainly looking at my PicGo project, probably because the technology stack (Electron) is close to the small program developer tool (Nw.js).
- Why do you choose Electron instead of PicGo [because of configuration, plug-in, node.js API, etc.]
- Introduce PicGo
- How to implement the update strategy of PicGo, how to implement the silent update, how to implement the code level hot update, how to hot update in the case of insufficient access to read and write files [The update strategy is actually very simple, I did not implement the update strategy later, but I talked with him about the idea]
- The biggest problem with writing PicGo
- How to implement the plug-in system [read configuration, load, lifecycle functions, etc.]
- Have you encountered any security issues related to PicGo? How to deal with them?
- Have you ever encountered performance related problems with PicGo?
- Do you have any questions?
The tone of the interviewer was very kind, and when discussing with me, it was basically in a consultative tone. At the end, he praised the completeness of the project. (There is actually a very important “test” section left out…) The focus is not on functional issues, but on issues like security and update policies that you might not pay much attention to when you write. So if it’s just a toy project, it’s probably out of the question. Fortunately, I have stepped on a lot of holes before, so it is more pleasant to chat with the interviewer.
Lesson # 4: A good (open source) project is a plus. Good means not star more, but you think about it, practice more. Lesson # 5: If you have a project that is doing well, make sure the interviewer sees it and leads him to ask about your project to bring out things that are familiar to you.
On the second day, I received a call from HR saying that I had passed the interview, and on the third day, I sent an Offer.
Since the small program group is a developer tool that suits my taste, I accepted the Offer before I received the HR call from Alipay. Wechat’s “grab people” speed is really fast.
The last
The alipay HR call came a long time later. At this time, I have accepted the offer of xiaoprogram, so I can’t go to Alipay for internship in summer vacation. I said that I might not be able to have an internship in the summer, but Qiu Zhao has to go back to Beijing. So ask if you can keep the final eligibility of autumn recruit (same as last year). The HR of Alipay gave me feedback that is not sure, hard to say. I think anyway if you do not retain the qualification, when the time comes back to Beijing to meet again.
So the offer finally sent two days ago, can only be rejected. At the same time, I can only talk to HR about the situation. I’m really sorry that Qiu Zhao still has a chance.
So ended my spring recruitment (summer internship) journey. In fact, I can accept the offer of Alipay as an internship and then directly become a full-time employee, but I think it’s not worth it to have a try since I have a more favorable opportunity. In fact, I rejected the offer of wechat for the first time and then accepted the offer of Small program later. I think it is because I want to do what I like to do.
Do what you love, love what you Do.
I hope this experience will help you, too.
The appendix
My GitHub, my blog
My own major open source project
- PicGo 4328star
- hexo-theme-melody 634star
- vue-koa-demo 587star
- node-github-profile-summary 243star
And picgo-Group.
The open source project I’m involved in
- VUe-cli
- amVim-for-VSCode[Added some
:
Command Support - Vs-picgo [VSCode version of Picgo]
And so on.