css
1,盒模型
2,如何实现一个最大的正方形
3,一行水平居中,多行居左
4,水平垂直居中
5,两栏布局,左边固定,右边自适应,左右不重叠
6,如何实现左右等高布局
7,画三角形
8,link @import导入css
9,BFC理解
js
1,判断 js 类型的方式
2,ES5 和 ES6 分别几种方式声明变量
3,闭包的概念?优缺点?
4,浅拷贝和深拷贝
5,数组去重的方法
6,DOM 事件有哪些阶段?谈谈对事件代理的理解
7,js 执行机制、事件循环
8,介绍下 promise.all
9,async 和 await,
10,ES6 的 class 和构造函数的区别
11,transform、translate、transition 分别是什么属性?CSS 中常用的实现动画方式,
12,介绍一下rAF(requestAnimationFrame)
13,javascript 的垃圾回收机制讲一下,
14,对前端性能优化有什么了解?一般都通过那几个方面去优化的?
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
一、处理异步操作的基础:
- 回调函数:
回调函数是最基本的处理异步操作的方式。通过将一个函数作为参数传递给异步函数,在异步操作完成后调用该函数来处理结果。
练习例子:
请编写一个函数delayedSum,接受两个参数a和b,并使用setTimeout模拟异步操作,将a和b相加的结果传递给回调函数。
function delayedSum(a, b, callback) {
setTimeout(function() {
var result = a + b;
callback(result);
}, 1000);
}
function handleResult(result) {
console.log("计算结果为:" + result);
}
delayedSum(5, 3, handleResult);
// 输出:计算结果为:8
- Promise:
Promise是一种更优雅的处理异步操作的方式,它可以链式地处理多个异步操作,并提供了更好的错误处理机制。
练习例子:
请使用Promise改写上述的delayedSum函数,返回一个Promise对象,将a和b相加的结果传递给resolve函数。
function delayedSum(a, b) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
var result = a + b;
resolve(result);
}, 1000);
});
}
delayedSum(5, 3)
.then(function(result) {
console.log("计算结果为:" + result);
});
// 输出:计算结果为:8
- async/await:
async/await是ES2017引入的一种处理异步操作的语法糖,它可以让异步代码看起来更像同步代码,并且可以使用try/catch来处理错误。
练习例子:
请使用async/await改写上述的delayedSum函数,并编写一个包装函数来调用它。
function delayedSum(a, b) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
var result = a + b;
resolve(result);
}, 1000);
});
}
async function sum() {
try {
var result = await delayedSum(5, 3);
console.log("计算结果为:" + result);
} catch (error) {
console.error("处理错误:" + error);
}
}
sum();
// 输出:计算结果为:8
二、使用XMLHttpRequest或Fetch API发送AJAX请求:
- 使用XMLHttpRequest发送AJAX请求:
练习例子:
请编写一个函数getWeather,使用XMLHttpRequest发送GET请求获取天气信息,并在请求成功后将结果传递给回调函数。
function getWeather(callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.example.com/weather", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
callback(response);
}
};
xhr.send();
}
function handleWeather(response) {
console.log("天气信息:" + response);
}
getWeather(handleWeather);
// 输出:天气信息:{...}
- 使用Fetch API发送AJAX请求:
练习例子:
请使用Fetch API改写上述的getWeather函数,返回一个Promise对象,将天气信息传递给resolve函数。
function getWeather() {
return fetch("https://api.example.com/weather")
.then(function(response) {
return response.json();
});
}
getWeather()
.then(function(data) {
console.log("天气信息:" + data);
});
// 输出:天气信息:{...}
源码分析:
- 回调函数的源码分析:
回调函数是最基本的处理异步操作的方式。通过将一个函数作为参数传递给异步函数,在异步操作完成后调用该函数来处理结果。
delayedSum函数的源码分析:
function delayedSum(a, b, callback) {
setTimeout(function() {
var result = a + b;
callback(result);
}, 1000);
}
function handleResult(result) {
console.log("计算结果为:" + result);
}
### 性能优化
1.webpack打包文件体积过大?(最终打包为一个js文件)
2.如何优化webpack构建的性能
3.移动端的性能优化
4.Vue的SPA 如何优化加载速度
5.移动端300ms延迟
6.页面的重构
**所有的知识点都有详细的解答,我整理成了280页PDF《前端校招面试真题精编解析》。**
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
![](https://img-blog.csdnimg.cn/20210323221732119.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1Z28yMzM=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210323221747467.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1Z28yMzM=,size_16,color_FFFFFF,t_70)
28yMzM=,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210323221747467.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1Z28yMzM=,size_16,color_FFFFFF,t_70)