directory
The interview is divided into interview preparation, basic knowledge, advanced knowledge, project experience, HR and other stages
The following is a detailed explanation of what knowledge needs to be prepared for each stage, I hope every student can get the offer!!
This article has been uploaded to Github and personal website, please follow and star
-
github
-
blog
Interview preparation
Before the interview, we should first understand the requirements of the job and make specific preparations.
Preparation includes the following aspects:
- Job description (JD) analysis
- Understand the business/project
- resume
- To introduce myself
Job description (JD) analysis
Job listings on job boards come with a job description, which is often so streamlined that people often miss the deeper meaning
The following article is a good example of analysis, I hope you can study more
- I’m in ali’s front end. How can I help you?
Understand the business/project
In two steps:
- To understand the business, such as the main business of the airline tickets, we should not understand a ticket purchase process
- To understand the project, we should learn about the company’s current project, whether it is to B or TO C, whether there is m station, overseas station, small program, etc., and whether it uses Vue or React
resume
A good resume, give us a lot of interview points. So how do you write a great (or at least good) resume? The following articles may help you. Don’t need to read every one, just refer to one or two!
- What kind of resume is the interviewer looking for?
- 2019 Interview Series – Resume
- OpenDoc – Front end resume rating criteria
- How do other programmers read your resume
The resume template
- Best-resume -ever(ð ðŒ Build fast ð and easy multiple beautiful resumes and create your best CV ever! Made with Vue and LESS.)
- Resumes generated using the GitHub informations(Resumes generated using the GitHub informations )
- Give you a nice resume artifact
- 5 concise resumes for job applications
- 6 Simple, multi-style resumes
- 10+ Excellent concise resume download (five
- Automatic resume of practical project
- And double å Yi is a dynamic resume
- My resume implement by Vue.js
To introduce myself
The first question in the interview is to let us introduce ourselves, to prepare this question, can let the interviewer have an accurate understanding of us, at the same time we can also introduce ourselves, guide the interviewer to ask us more adept questions.
One side
Focusing on the basics, we’ll begin by preparing some common interview questions
CSS
Use CSS to achieve a continuous animation effect
The answer
animation:mymove 5s infinite;
@keyframes mymove {
from {top:0px; } to {top:200px;}
}
Copy the code
The main investigation
value | describe |
---|---|
animation-name | Specifies the name of the keyFrame to be bound to the selector. |
animation-duration | Specifies the time, in seconds or milliseconds, to complete the animation. |
animation-timing-function | Specifies the velocity curve of the animation. |
animation-delay | Specifies the delay before the animation begins. |
animation-iteration-count | Specifies how many times the animation should be played. |
animation-direction | Specifies whether animations should be played back in turn. |
Extension:
- Use JS to achieve a continuous animation effect
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="Width = device - width, initial - scale = 1.0">
<title>Js animation</title>
<style>
#app{
position: absolute;
width: 300px;
height: 300px;
background-color: #f00;
}
</style>
</head>
<body>
<div id="app"></div>
<script>
const end = 300, duration = 5
const $app = document.getElementById('app')
let starttime
function move() {
let percent = (Date.now() - starttime) / 1000 % duration / duration
$app.style.left = percent * end + 'px'
}
/ / method
// function start() {
// starttime = Date.now()
// let timer = setInterval(() => {
// move()
/ /}, 1000/60);
// }
// start()
/ / method 2
// function start() {
// let timer = setTimeout(() => {
// move()
// start()
/ /}, 1000/60);
// }
// starttime = Date.now()
// start()
/ / method 3
function start() {
requestAnimationFrame((a)= > {
move()
start()
})
}
starttime = Date.now()
start()
</script>
</body>
</html>
Copy the code
Range of new features
How to Clear a Float
The answer
- clear
.floatfix{
*zoom:1;
}
.floatfix:after{
content:"";
display:table;
clear:both;
}
Copy the code
- BFC
- Float the CSS (Clear and BFC)
Notes:
-
Clear is valid for block-level elements only
-
Clear does not clear the float effect, but prevents the edge of the current element box from being adjacent to the previous float element.
- The most comprehensive and thorough analysis of BFC principle in history
- Learning BFC (Block Formatting Context)
CSS box model
The answer
Standard model and IE model
content padding border margin
The difference between the four kinds of positioning
The answer
Static is the default and you don't create a BFC relative position that's offset relative to its original position, Still in the standard document flow Absolute location relative to the nearest located ancestor element, there are located (for elements whose position is not static) ancestor elements, and the nearest ancestor element is the reference standard. If no ancestor element is located, the body element is used as an offset reference, completely out of line with the standard document flow. Fixed-positioned elements are positioned relative to the window, which means that even if the page scrolls, it stays in the same position. A fixed positioning element does not retain the space it should have on the page.Copy the code
other
- Percentages in CSS
- [CSS vertical horizontal center] juejin.cn/post/684490… demo.cssworld.cn/5/3-10.php
- [Realize contour layout]demo.cssworld.cn/4/3-2.php demo.cssworld.cn/4/4-4.php
- Do you really understand line-height and vertical-align versus baseline?
- Align instance pages with small ICONS that use the inline-block baseline principle
- Focus anchor positioning and Overflow TAB toggle effect instance page
- Flex layout
- The grid layout
html
http
The characteristics of HTTP
The answer
Stateless no connectionCopy the code
Component of an HTTP packet
The answer
Request line Request header blank line Request body transition line Response header Blank line response bodyCopy the code
The method of HTTP
The answer
GET POST PUT DELETE HEAD
Copy the code
Extension:
- Difference between GET and POST
HTTP status code
The answer
Just remember the following
- More and more
HTTP persistence and pipelining
Know the concept, don’t bother
www.cnblogs.com/hyzm/p/9530…
DOM Event Types
The DOM event level is displayed
The answer
DOM level 0: dom.onclick =function() {} DOM level 2: document. AddEventListener ('click', () = > {}) DOM level 3: the document. The addEventListener ('keyup', () = > {})Copy the code
DOM event Model
The answer
Capture and bubbleCopy the code
The DOM event flow
The answer
Capture > Target phase > bubbleCopy the code
Describes the process of DOM event capture
The answer
window>document>html>body>...
Copy the code
Extension:
-
How do I get HTML?
The answer
document.documentElement Copy the code
Common applications of the Event object
The answer
event.preventDefault()
event.stopPropagation()
event.stopImmediatePropagation()
event.target
event.currentTarget
Copy the code
Extension:
- The difference between stopImmediatePropagation and stopPropagation in JS
- The difference between event.target and event.currentTarget
Custom event
You can use Event or CustomEvent
The difference between Event and CustomEvent is that CustomEvent can pass parameters
// First, you need to define the event in advance and register the associated EventListener
var myEvent = new CustomEvent('event_name', {
detail: { title: 'This is title! '}});window.addEventListener('event_name'.function(event){
console.log('Get the title:', event.detail.title);
});
// The event is then fired on the corresponding element
if(window.dispatchEvent) {
window.dispatchEvent(myEvent);
} else {
window.fireEvent(myEvent);
}
// According to the listener callback function definition, it should output "Get the title: This is title!" in the console.
Copy the code
What does FastClick do
The answer
Solve 300ms delay of mobile terminal clickCopy the code
Extension:
- How do I delay the mobile click event
Fastclick principle
The answer
Use event.preventDefault() to prevent the default behavior, then send the custom click eventCopy the code
js
Var let const
letThere is no variable promotion, no duplication of definitions, block-level scope, temporary dead const declarations are assigned, and the value of the variable cannot be changedCopy the code
- An interview question caused a deadly accident
Variable promotion & scope
- Diagram scopes and closures
- For a deeper understanding of JavaScript, start with scopes and scope chains
- In-depth understanding of JavaScript scopes and scope chains
Method to get the length of a string
function codePointLength(text) {
var result = text.match(/[\s\S]/gu);
return result ? result.length : 0;
}
var s = 'ð ®· ð ®·';
s.length / / 4
codePointLength(s) / / 2
Copy the code
function length(str) {
return [...str].length;
}
length('x\uD83D\uDE80y') / / 3
Copy the code
Prototype chain
- Understand constructor, prototype, __proto__, and prototype chains in your own way (figure)
This
- Hey, do you really understand this?
- The use of this in Js
- Look at the This binding, scope, scope chain, and closure through the runtime mechanism
- Six barriers to JavaScript this
closure
- Illustrate why JS closures are formed
inheritance
The answer
<html>
<head>
<meta charset="utf-8">
<title>object-oriented</title>
</head>
<body>
<script type="text/javascript">
/** * declarations */
var Animal = function () {
this.name = 'Animal';
};
/** * es6 class declaration */
class Animal2 {
constructor () {
this.name = 'Animal2'; }}/** * instantiate */
console.log(new Animal(), new Animal2());
/** * inherit */ with constructor
function Parent1 () {
this.name = 'parent1';
}
Parent1.prototype.say = function () {};function Child1 () {
Parent1.call(this);
this.type = 'child1';
}
console.log(new Child1(), new Child1().say());
/** * Implement inheritance with prototype chain */
function Parent2 () {
this.name = 'parent2';
this.play = [1.2.3];
}
function Child2 () {
this.type = 'child2';
}
Child2.prototype = new Parent2();
var s1 = new Child2();
var s2 = new Child2();
console.log(s1.play, s2.play);
s1.play.push(4);
/** * Combinations */
function Parent3 () {
this.name = 'parent3';
this.play = [1.2.3];
}
function Child3 () {
Parent3.call(this);
this.type = 'child3';
}
Child3.prototype = new Parent3();
var s3 = new Child3();
var s4 = new Child3();
s3.play.push(4);
console.log(s3.play, s4.play);
/** * Combinatorial inheritance optimization 1 * @type {String} */
function Parent4 () {
this.name = 'parent4';
this.play = [1.2.3];
}
function Child4 () {
Parent4.call(this);
this.type = 'child4';
}
Child4.prototype = Parent4.prototype;
var s5 = new Child4();
var s6 = new Child4();
console.log(s5, s6);
console.log(s5 instanceof Child4, s5 instanceof Parent4);
console.log(s5.constructor);
/** * Combinatorial inheritance optimization 2 */
function Parent5 () {
this.name = 'parent5';
this.play = [1.2.3];
}
function Child5 () {
Parent5.call(this);
this.type = 'child5';
}
Child5.prototype = Object.create(Parent5.prototype);
</script>
</body>
</html>
Copy the code
The operation performed by new
1. Create a new object. 2. The new object will execute the [[Prototype]] connection. 3. This new object is bound to the function call this. 4. If the function returns no other object, then the function call in the new expression automatically returns the new object.Copy the code
Do you know object.create
- Rounding out the Object. The create (null)
Second interview
Focus on the scope of knowledge, advanced knowledge, in-depth principles, etc
js
SetTimeout and setInterval and requestAnimationFrame
- The scope of setInterval and setTimeout
- Note — use setTimeout, setInterval
- Do you really know setTimeout and setInterval?
- About the setTimeout
- Deep decryption setTimeout and setInterval — rename setInterval!
- Look at JS threads from setTimeout/setInterval
- You know requestAnimationFrame [from 0 to 0.1]
JSON. Parse (JSON. Stringify ()) shortcomings
In JSON. The stringify (phase)
1. If obj has a time object in it, then the result of json. stringify followed by json. parse will have the time as a string, not as an object 2. If obj contains a RegExp, an Error object, then the result of serialization will be an empty object. 5. Json.stringify () can only serialize the enumerable properties of an object. Parse (json.stringify (obj)) ¶ For example, if an object in obj is generated by a constructor, its constructor will be discarded after using json.parse (json.stringify (obj)) for a deep copyCopy the code
Object and array traversal
- Object attributes are divided into three categories: self attributes, can they be enumerated, is it a Symbol attribute note: objects do not have for… of…
Take a chestnut
var a = {a: 1}
var b= {b:2}
b.__proto__ = a
Object.defineProperty(b, 'c', {
value: 3
})
b[Symbol= ()]4
Object.keys(b) // ["b"] returns an array containing all the enumerable properties of the object itself (excluding the Symbol attribute).
for(var i in b) {
console.log(i,":",b[i]);
} // b: 2 a: 1 iterates through the object's own and inherited enumerable properties.
Object.getOwnPropertyNames(obj) // ["b", "c"] returns an array containing all the attributes of the object itself (not including the Symbol attribute, but including the non-enumerable attribute).
Reflect.ownKeys(b) // ["b", "c", Symbol()] returns an array containing all the attributes of the object itself, whether the attribute name is Symbol or string, and whether it is enumerable or not.
Copy the code
What is strict mode
The strict mode has the following limitations.
The variable must be declared before using the function. The parameter of the function must not have the same name as the property, otherwise the error cannot be used with the statement cannot be assigned to the read-only property, otherwise the error cannot be used with the prefix 0 to indicate the octal number, otherwise the error cannot be deleted, otherwise the variable delete prop cannot be deleted, then the error will be reported, Delete global[prop]evalNo variables are introduced in its outer scopeevalArguments. callee cannot use arguments.caller disallows this to refer to global objects Added reserved words (such as protected, static, and interface) to the stack that cannot get function calls using fn.caller and fn.argumentsCopy the code
Functional programming
- Functional programming in JavaScript
- Introduction to functional programming
- ramda
- Ramda library reference tutorial
Regular expressions
- JS Regular Expression tutorial (slightly longer)
es6
- Introduction to ES6
- 15,000 words to summarize all the features of ES6
What is a temporary dead zone
A variable is not available until it is declared with the let command within a code block. Grammatically, this is called a temporal dead zone (TDZ).
> import/ exports > require/exports > import/ exports
An important feature of the -CommonJS module is load-time execution, that is, when the script code is required, it is all executed. Once a module is "looping loaded", only the parts that have been executed are printed, not the parts that have not been executed. -Es6 modules are dynamic references. If you load variables from a module using import, the variables are not cached. Instead, they become a reference to the loaded module. - import/exportIt is compiled to require/exports. - The CommonJS specification states that within each module, the module variable represents the current module. This variable is an object whose module.exports property is the external interface. If you load a module, you load the module.exports property of that module. -exportThe command specifies the external interface and must establish a one-to-one correspondence with the variables inside the module.Copy the code
- Front-end modularity: CommonJS,AMD,CMD,ES6
- Differences between ES6 modules and CommonJS modules
typescript
- Typescript Chinese official website
- What’s the difference between interface and type in Typescript
vue
- 30 Vue interview questions, including detailed explanations (ranging from beginner to master, self-test Vue mastery)
- Exciting new features in Vue 3
- Interviewer: How is it better to implement two-way Proxy binding than DefineProperty?
vue-cli
- Revamp vue-CLI to make it more usable
- This is probably the most complete vue-CLI parsing…
- Vue- CLI principle analysis
react
- website
- Some comparison and Personal Thoughts about Vue and React (I)
- From Mixin to HOC to Hook
Small program
taro
weex
The source code
- Weex in the original JS Framework
webpack
- In 2020, no more webpack typed code is not sweet (nearly ten thousand words actual combat)
- Build a large project from scratch with WebPack step by step
The browser
Network request
- Seven layer network structure
Browser same-origin policy and cross-domain
Five kinds of methods
jsonp
hash
cors
websocket
postmessage
Copy the code
- Browser homology policy and its circumvention
- Description of cross-domain resource sharing CORS
- Ajax cross-domain, this is probably the most comprehensive solution
Network security
- What is a CSRF
1. XSS (cross-site-scripting) attack Solution: String escape 2. Cross Site Request forgery (CSRF) solution: 1. Pass cookie in plain text 2. Request a random string (only used once)Copy the code
Browser rendering mechanism
- From the input URL to the page loading process? How to perfect their front-end knowledge system by a problem!
- From browser multi-process to JS single thread, JS running mechanism is the most comprehensive comb
Js runtime mechanism
- This time, understand the JavaScript execution mechanism thoroughly
- The Event Loop is an Event Loop
- JavaScript Event Loop details
- Visualizing the javascript runtime at runtime
Page performance
- 10 times better performance with 100 lines of code
Processes and Threads
- Learn more about processes and threads in Node.js
- A simple explanation of processes and threads
- This article will help you understand the differences and connections between processes and threads
- Brief analysis of operating system process, thread difference
Page rendering
- Browser page rendering mechanisms you don’t know
- Do you really understand the browser page rendering mechanism?
The cache
- Thorough understanding of browser caching mechanisms
- Browser cache
- Optimal solution of front-end static resource cache and the pitfalls of max-age
- Interview selection of HTTP cache
The garbage collection
- Illustrated JavaScript Garbage Collection – a modern JavaScript tutorial
architecture
- This article takes you through the Chrome browser architecture
nodejs
- NPX tutorial
- Cookie, Session, Token, JWT
- Illustrated, uncover the mystery of “single sign-on” for you
algorithm
- How should the front end prepare the data structures and algorithms?
- Js implementation sorting algorithm (bubble, select, insert, binary insert, fast, hill)
- Common algorithmic problems in front interviews
- Graphics algorithm (adjacency matrix)
- 5 minutes to show you: a jumping company interview rate of one of the highest algorithm – virtual cross tree modeling problem
- ã from eggshell to the sky ãJS data structure analysis and algorithm implementation – set and mapping
- Interview test – Recursive thinking and practice
The complexity of the
- The time and space complexity of the algorithm, it’s that simple
Binary tree
- JavaScript binary tree in-depth understanding
- 3 minutes to understand complete binary trees, balanced binary trees, and binary search trees
Handwritten code
Manually implement new
functionNew(Constructor, ... args){letobj = {}; // Create a new Object object.setPrototypeof (obj, construction.prototype); // Connect the new object to the function prototypereturnConstructor.apply(obj, args) || obj; // Execute the function to change this to a new object}function Foo(a){
this.a = a;
}
New(Foo, 1); // Foo { a: 1 }
Copy the code
function _new() {
lettarget = {}; // The first argument is the constructorlet[constructor, ...args] = [...arguments]; // Execute the [[prototype]] connection; Target. __proto__ = constructor. Prototype; // Execute the constructor to add properties or methods to the created empty objectlet result = constructor.apply(target, args);
if (result && (typeof (result) == "object" || typeof (result) == "function")) {// Return an object if the structure the constructor executes returns that objectreturnresult; } // If the constructor does not return an object, return the new object createdreturn target;
}
Copy the code
Implementing deep copy
- How to write a deep copy of an amazing interviewer?
- Shallow copy and deep copy
Shake and throttling
- Js history the most streamlined! Tremble throttling (yours is shorter than mine, I lose)
- Prepare for interview 2019 – JS shock-proof and Throttling
Array to heavy
- Array deduplication in JavaScript topics
- How to answer an array of questions that impress an interviewer?
Implement a simple version of VUE2
- [Hand-in-hand series] to achieve a simple version of VUE2
other
- ã interview question ã JS various source code implementation
- The 23 lines of code implement a fetch request function with a concurrency limit
- Bytedance Interviewer: Please implement a large file upload and breakpoint resume
The code quality
- Code clean JavaScript
- How can I improve the code quality of my Web application
On three sides
Focus on the following competencies
Business capability Team collaboration capability business driving capability person capability architecture capability project experienceCopy the code
project
Interviewers will often ask you to name a few projects you’ve worked on and dig into one or two of them.
We need to prepare for these aspects:
- What is the performance of the project I am responsible for
- What technical solutions are used
- What are the technical difficulties
- What difficulties did you encounter
- What did you gain?
Architecture and transaction enablement
- Have you built your own projects?
- What was your technology stack of choice?
- Why?
- Talk about your difficulties
- As the technical leader, how do you keep the project going
Lead people and team work
- Have you had anyone with you?
- How do team members work together?
- Is there code review?
- How much do you know about git commands?
- How do you collaborate with backend, product, design, and project managers?
Problem solving skills
- Have you ever encountered any difficulties and how did you solve them?
- How do you usually study?
- What websites do you visit?
A passion for technology
- Do you know about Vue3? What optimizations did Vue3 make? How is it different from VUE2?
- Do you know about microservices? web component? http3? Etc.
- Are there open source projects?
Final plane (HR plane)
Focus on character, potential
At this point, the offer is basically in hand, but it should not be taken lightly, because HR often has veto power.
This side requires us to show the following characteristics:
- The optimistic positive
- Take the initiative to communicate
- Logic is smooth
- Motivated and responsible
- Assertive and decisive
You may have the following problems:
- Views on overtime
- What is career planning
- What do you have to ask
- What clubs were you in at college
- What do you like to do in your spare time
- What would you do if you had a conflict with a colleague
So far the interview is over, congratulations you have got the desired offer!
What follows is interview skills and experience to help you better deal with the interview!!
Interview skills
- What are some practical interview techniques for “technical interview” q&A?
- 5 minutes for the front end interview
- How to prepare before the interview to improve the success rate (including the front interview question)
- As a technical interviewer, why did you pass
- Intensive reading of the “best front end questions” and interviewer skills
- Write for the preliminary front end interview experience
- Front-end Interview Guide
- About the Interview Process
- Programmers interview this way to introduce their project experience, the success rate can reach 98.99%
If you’re the interviewer
- Talk about interview and interview questions
- Interview dozens of people
The interview experience
Ali.
- I’m in ali’s front end. How can I help you? (Surprise at the end)
- Interview share: Summary of 2018 Alibaba front-end interview
- Ali Health interview summary
- The big reveal! What am I asking about the “scary” side of Ali
- Interview share: Specialist half a year experience interview Ali front-end P6+ summary (with the interview question and answer)
- 2018 Alibaba Front End Interview Summary (Topic + Answer)
- One and a half years of experience, baidu, Youzan, Ali front-end interview summary
- Interview sharing: two years of work experience successful interview Ali P6 summary
- Want to get into Ali? Here’s a 4,000-word “Ariinet’s Guide to Twitter.”
- I want to join Ali, what should I do
- Ali six side, hanging in HRG, I really not reconciled
- Summary of front Interview (AT, MD)
tencent
- Tencent Front End Interview (1)
- Tencent Front End Interview part 2
- Tencent interview (3) — the final chapter
baidu
- My web front-end interview experience – Baidu
millet
- Remember a cool millet interview
bilibili
- ã Interview Summary ã Remember a failed Bilibili interview summary (1)
- ã Interview Summary ã Remember a failed Bilibili interview summary (2)
- ã Interview Summary ã Remember a failed Bilibili interview summary (3)
headlines
- Two years in front of the headline interview
other
- About naked resignation, about front end interviews
- One year experience in front of hangzhou several second-line factory interview questions comb
- January front interview record
- Front interview guide
- June 2018 Front-end interview Experience (I)
- 2019 Interview Practice — Round one
- 2018 for the front end of the interview: through fine alignment (fine) | the nuggets technical essay
- Post 2018 Spring Festival interview tips
- What are the Web front-end job interview questions?
- In 2019, after reading this one, I’m no longer afraid of the front end interview
- [across nine big front school recruit offers, full text of 14560 words, reading should be 80 minutes] (mp.weixin.qq.com/s/tM2lvhJEh…).
Recruitment website
- Ali clubs recruit
- Ali school recruit
- Tencent clubs recruit
- Toutiao social recruitment
- Zhihu (Beijing, Shanghai, Chengdu, Guangzhou)
treatment
- Ali welfare
- How much do Alibaba employees make a year?
- Ali’s performance assessment: star reward, white rabbit killing, wild dog to public display
- What’s it like to be a programmer at Bytedance?
- Forty-eight hours after joining Bytedance, I discovered the secret of Tiktok
- An article discloses the BAT Internet factory salary
Interview Questions Warehouse
- From basic to advanced, test how much you know about JavaScript and refresh your knowledge in 2020!
- Github.com/jwasham/cod… [å æ] A complete study manual to help you prepare for a Google Interview
- Github.com/haizlin/fe-…
- Github.com/30-seconds/…
- Github.com/xiaomuzhu/f…
- Github.com/yisainan/we…
- Github.com/woai3c/Fron…
- Github.com/qiu-deqing/…
- Github.com/poetries/FE…
- Github.com/azl39798585…
- Yun-long zhang blog
- Alibaba, Tencent, Baidu, Meituan, Tiaotiao and other technical interview questions and answers
- How to pass an Ele. me Node.js interview
- The Atlas of Interview