preface

I am an old school recruitment interviewer in the team. In recent years, I have abused many school recruitment students one after another. I have met excellent students who talked happily, met those who made me frown, met those who knew the routines well, and also those who were not good at expressing themselves. To be honest, I often get nervous before an interview. I’m afraid that a promising candidate will miss out because my stupid questions haven’t been thoroughly explored.

So I often think: what is a good question, what should the front end of the school enrollment study?

Now it is another year of school enrollment season, I would like to share my experience with you.

Statement:

  1. I’ve always been a one-sided interviewer, so my thinking is one-sided, or knowledge side;
  2. Each interviewer has his or her own interview style. For example, there is one in our team who is also responsible for one side and likes to ask about graphic algorithms. So you read my article, thought you were ready, and the interviewer asked you a question. Don’t blame me, I’m not responsible. I’ll talk to you about the general part;
  3. There are plenty of interviewers with more experience than me. This article is my humble opinion and I hope you can correct my shortcomings.


The core idea

What’s the difference between campus interview and social interview? Let me illustrate with a picture:



College interview should focus on potential investigation. On the front end, learning is about how fast you can go, and learning is about how far you can go.

So front-end knowledge isn’t important in school admissions?

It’s also important. It’s just that to be honest, you probably won’t be able to use what you learned in school when you go to work, because the focus of the work world is different from that of the self-taught world. For example, if you do front-end development at school, you usually do it on your own, but then you often have to work with other people on it. Uniform code specifications and how your code should be organized to reduce coupling and fit in with multiple people should be considered. For example, if you’re doing your own front-end, you might be thinking about how to make it cool with new technology, while in the business, you might be thinking about how to deal with compatibility, how to monitor and reduce script errors and keep your project stable, etc. Not to mention how did you learn in school about developing massive user scenarios?

Therefore, for school enrollment, we pay more attention to potential than imperfect front-end knowledge accumulation. The front end foundation is your capital to get an interview, and the potential characteristics reflected from the front end knowledge are your highlights.

How do you measure these imaginary abilities? This will be expanded below.

As an admissions officer, you need to think about how you can demonstrate your ability and desire to learn, which is more important than how many lines of React code you write on your resume. Especially with big companies.


The interview process

This is where a thousand flowers bloom, and I’ve come up with a set of interview procedures from my own interviews:



Basically such a set down, the overall level of the interviewer is very clear. The process varies from company to company, but the above points are common.

Usually we will interview for more than an hour, so that we can get a comprehensive understanding, but also a sense of responsibility. If it’s too bad, end it early.

I’m going to focus on the front end fundamentals and project experience, what I’m looking at.


The front-end based

We often say that front-end development is easy to learn and difficult to master, because front-end development involves a lot of knowledge, the following classic map should be seen by many people:



What kind of knowledge should school students master? As I was in charge of teaching the course “Basic Introduction to Web Development” in the company, I gradually summarized the six basic knowledge of front-end development: HTML, CSS, JavaScript, mobile Web development, debugging, and HTTP network knowledge.

These are the six things THAT I think are necessary for the university to recruit students, and I will ask them one by one in the interview. If you don’t do well on any of these fronts, you’re going to have to be really good at learning.

HTML

Fundamentals of front-end programming languages. I will examine:

  1. Common meta header;
  2. See if you can write more formal HTML code based on your understanding of the semantics of tags.
  3. HTML5’s new capabilities;
  4. HTML rendering parsing knowledge, such as why CSS first JS last, how to understand parallel load serial execution (a very interesting piece of knowledge, not to expand here);

CSS

Fundamentals of front-end programming languages. Instead of looking at CSS Expression, IE6 and IE7 are looking at what makes sense to be compatible with them. I will examine:

  1. How to write better CSS, such as not too deep hierarchy, how to use ID and when to use class, such as how to break up the organization of CSS code, etc.
  2. The box model;
  3. Very common CSS3 knowledge, such as CSS3 animation, such as elastic layout;

JavaScript

The front-end is the most important programming language. This piece I believe you can easily find a lot of interview questions, or must recite JS knowledge list. In this section I’ll look at native JavaScript, which is the foundation of all framework plug-ins. I still ask

  1. The event model
  2. closure
  3. Prototype chain

And other front-end basic knowledge, but I will gradually deepen from a single point and continue to expand or combined with specific cases, to see whether you really understand. I also sometimes ask the browser how to parse rendering as a bonus if it’s doing well (DOM trees, render trees, rearrangement and redraw, layered rendering, why too much DOM manipulation affects performance, etc.).

Mobile Web Development

I said that mobile Web development is the hot topic in front-end development right now, right? Knowledge of mobile Web development is becoming increasingly important as mobile application layers emerge. If you don’t know mobile Web development, you are really behind The Times. I will examine:

  1. How is mobile Web development different from PC Web development? This question tests your overall understanding of mobile Web development and your ability to think in an organized way;
  2. How to achieve responsive layout? See if you understand common layout schemes;
  3. Gestures and events on mobile;
  4. How to improve the rendering performance of mobile pages? For mobile network, check whether you can come up with a solution to reduce HTTP requests, whether you understand GPU rendering (partial advanced), etc.

debugging

There are always bugs in the development, and the page running environment is always more complex than imagined. At this time, it is very important to find the cause of the problem through debugging and solve it independently. I will examine:

  1. Whether you can use basic packet capture tools and debugging console;
  2. How to find useful information from the vast web of content;
  3. How to debug the mobile terminal;

HTTP

How can you debug if you don’t even know how to capture packets? If you don’t know the meaning of 304, you can’t figure out why the page is still the same after the code changes. Front-end development is all about the web. I’ll look at this one:

  1. Common HTTP status codes;
  2. Differences between different request types;
  3. What are the caching schemes and how to implement them?

Those are the six basics of the front end. I also ask general questions in actual interviews, such as:

  1. What happens when the user enters the URL to the final page display?
  2. The boss feedback page opens a blank screen, but it is normal on your phone, how to do?
  3. I have an animation on the page one card one card performance is not good, how to optimize?

These are basically the questions I ask when I look at the basics of the front end.

Some people may ask: yi Yi yi, XSS, CSRF these web security related? Interview society recruit students I will ask, but the school recruit students and a few really have encountered such a scene, inspection in addition to test recitation and how much meaning?

Some people say, “Hey, hey, hey, why don’t you say cross domain?” Similarly, front-end and CGI domain name separation or cross-business invocation can be used in business projects, but there is no need for all students in school to have encountered such scenarios, right?

React, Vue, React, Vue, etc. Indeed, I have found that in the past two years some interviewees have a good command of React, but do they really have a solid grasp of native JavaScript? I’ve always believed that once you have a solid knowledge of native JavaScript, it’s easy to learn a framework, and no matter how popular frameworks change in the future, you’ll be safe. React and Vue are pluses, not prerequisites.




Project experience

I often spend 20 minutes before an interview opening up the Github or blog on a candidate’s resume. So if you’re just putting it on your resume and you’re not really taking care of it, you might as well not include it. I will ask specific questions based on the content of the interviewer’s Github and blog. In the previous section you can say you just don’t know a certain piece of knowledge, but you write your own you should always master? I can always ask more questions, right?

During the interview, I will also ask the interviewer for specific project details based on the project experience on the resume. Do you know how to use a simple framework? Did you get a box of soy sauce and sign up for the project? I’ll keep checking those out, and if so, take points off. And then I’ll do an in-depth look at the technology stack that you’re using in your project, and you’ll have the knowledge that you need to do your own project, right? I can always ask more questions, right?

In addition to knowledge, I will also examine general qualities. So I often ask open questions: Which projects have been the most satisfying to you and why? Have you ever faced a big problem and how did you solve it? This is when you should take the opportunity to demonstrate your strengths, such as persistent efforts to tackle difficult problems, such as… Forget it. You’ll get the hang of it.

The ability to work as a team also comes up in the project experience, and the interviewer may make a silent comment about you during your presentation: This person doesn’t seem like a team player, so get rid of him early.


Other small points

The above is my understanding of the school recruitment interview process and what questions should be examined, but also my precipitation of several years of interview experience. In this section, I want to answer some questions you may have:

Do you want to check the algorithm?

In my impression, many teams in companies ask questions about algorithms, such as how to achieve fast scheduling. Sometimes other interviewers in our team also ask questions. Personally, I think it is better to study the basic knowledge of the front end than the algorithm. The algorithm is not used in the front end field as much as in other development fields. I have done business development for several years and I really don’t use complex algorithms. School enrollment ask algorithm, more is to assess the degree of your university professional knowledge, how your learning ability. So I basically don’t ask, test front basic knowledge can also see the learning ability. I don’t look at algorithms unless you have really bad front-end fundamentals.

One might say, well, in the future, complex systems and high-performance frameworks are all going to require a very good algorithm. Yes, I admit it, but that’s not what front-end school admissions have to have right now. As long as they have strong learning ability, but also afraid of the future can not fill up the algorithm knowledge, right?

Do you want to look at the design model?

A colleague at the company wrote a book called JavaScript Design Patterns and Development Practices, douban 9.1, which is quite a good book. Learning design patterns well will help you write clearer structure and maintain easier project code. It’s ok to look around for a design pattern, but asking what design patterns you know is a bit overkill, because sometimes we’ve already used a design pattern to organize our code, and we just don’t know the name of it. Terminology is lazy, but it’s better to present a real-world problem and see if the other person can solve it using design patterns.

Should colleges recruit students with technical depth or technical breadth?

When I participated in baidu’s college recruitment, a director of Baidu said, “You should focus on breadth of knowledge in school, and you should choose a certain technical direction to dig deeply after work. When you reach a bottleneck one day, it is time to develop breadth again.” I think so.

So I prefer students with broad knowledge. Take, for example, one of the synthesis issues mentioned above: what happens when the user enters the URL and then displays the final page? Some students did well in computer network courses, and could tell me the details of HTTP request grouping, network model, DNS resolution, and establishing connections. This is in-depth knowledge, and it is also good. But I prefer to hear something like this:

The user input URL, to the browser cache mechanism check, to HTTP request package structure, to DNS resolution, to the connection establishment, to the server side processing (such as dynamic page processing, static page return, CDN related knowledge), to the browser received HTML content how to parse, to how to parallel load serial execution CSS, JS, To how to construct render trees to render pages, to how to cache content to the browser side based on request headers. It would be nice if you could add HTTPS, isomorphism, Service Worker, etc.

This is the breadth of knowledge, the architecture that organizes knowledge into a whole. Even if you are not clear about some of the details when you answer, I think you will score higher than those who only know the single point and talk in depth.

About the routine

As FAR as I know, some college computer clubs have a good tradition of producing a good knowledge of the front end of the interview question. Then younger brothers and younger sisters can learn how to look for a steed according to the picture.

I was doing one side of the interviewers for a while before they saw such a list and were dumbed down at the time. Then I began to reverse the pattern: If a college interview candidate was flaking without pausing on the basics I’d asked for, I’d start digging deeper into one point, or digging deeper into the pressure level and not being able to get an answer. At this point, you can see whether you really grasp this knowledge or simply lean on your back. Or go straight to the scene instead of asking about the front-end cache.

Of course, it’s not a bad trick. I think, can really master knowledge > by reciting knowledge > even basic knowledge can not answer well. If you’re too lazy to remember, I’m too lazy to let you go.


conclusion

What am I trying to do with this article?

Is it to get hot spots? Yeah, well, it’s college admissions season.

Is it to tell you how the interviewer sets the question, so that you can learn some tricks to deal with the interviewer? Well, I have to tell you that we have consciously gone against the grain. If you say you know something and it turns out to be a very basic skim, it makes us feel worse.

Write this article or want to let everyone while there is still some time, according to the arrangement of their knowledge system, check the gaps, targeted learning front-end knowledge.

Write this article or want to let everyone experience the perspective of the interviewer, how to have a psychological preparation for the interview, reduce because of nervous factors such as not normal play.

Writing this article, I also want to exchange views with other school recruitment interviewers. I don’t think it’s necessary to keep it a secret. It’s not the question that matters, it’s the answer the interviewer can give.

Finally, you can pray: don’t meet me when you interview Tencent.


—-

If you are an interviewer, I hope you can share your thoughts with us.