2022.8前端面试准备题
一,html
1,语义化
2,新特性
(1)绘图:canvas+svg
canvas:通过脚本绘制图形
<canvas id="myCanvas">你的浏览器不支持 HTML5 canvas 标签。</canvas>
<script>
var c = document.getElementById('myCanvas');
var ctx = c.getContext('2d'); //返回对象,该对象上有绘制图形的方法和属性
ctx.fillStyle = '#FF0000';
ctx.fillRect(0, 0, 80, 100);
</script>
SVG:可缩放矢量图形
<svg>
<rect width="200px" height="200px" fill="blue"></rect>
</svg>
(2)拖拽
<div id="box" ondragover="allowDrage" ondrop="drop"></div>
<img src="./p2869446365.jpg" draggable="true" id="img" ondragstart="dragStart"/>
<script type="text/javascript">
function dragStart(ev){
ev.dataTrasfer.setData("Text",ev.target.id)
}
function allowDrage(ev){
ev.preventDeafault();
}
function drop(ev){
ev.preventDeafault();
var data = ev.dataTrasfer.getData("Text");
var img = document.getElementById("img");
ev.targer.appendChild(img);
}
</script>
(3)音频、视频
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
</video>
<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
</audio>
(4)地理位置
<button id="btn">click</button>
<script>
var btn = document.getElementById("btn");
btn.addEventListener("click",()=>{
var geoloc = window.navigator.geolocation;
geoloc.getCurrentPosition(
(success)=>console.log('success' , success),
(err)=>console.log('err' , err),
{timeout:5000}
)
})
</script>
(5)localStorage、sessionStorage、cookie
a, localStorage+sessionStorage
一个5M大小的针对于前端页面的数据库,值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换
//存
var ls = window.localStorage || window.sessionStorage
ls.setItem("key",value)
//取
ls.getItem("key")
//改
ls.key = value
//删全部
ls.clear()
//删某个
ls.removeItem("key")
b, cookie
https://blog.csdn.net/GoodburghCottage/article/details/125978987
3,请求方法

二,CSS
1,BFC

2,响应式布局

3,CSS选择器



4,块级元素、行内元素

5,SEO需要做些什么

三,JS
1,原型与原型对象、作用域链




2,闭包




3,防抖与节流


闭包封装防抖:
<body>
<input type="text" id="input"/>
<script>
let input = document.getElementById("input");
input.oninput = debounce(c,500)
function c(){
console.log(this.value)
}
function debounce(fn,time){
let t = null
return function() {
if (t !== null) {
clearInterval(t)
}
t = setTimeout(() => fn.call(this), time)
}
}
</script>
</body>
节流
4,回调地狱+Promise+Async/await
function getTea(){
return new Promise((resolve)=>{
resolve("Tea")
})
}
function getHotpot(){
return new Promise((resolve)=>{
resolve("Hotpot")
})
}
getTea().then(data=>console.log(data))
getHotpot().then(data=>console.log(data))
//async
async function getData(){
let tea = await getTea()
console.log(tea)
let hotpot = await getHotpot()
console.log(hotpot)
}
getData()
5,this指向





6,对象拷贝

浅拷贝
深拷贝
通过JSON实现深、浅拷贝
7,页面间通信
//index.html
<body>
<button id="btn">submit</button>
<script>
let btn = document.getElementById("btn")
let s = window.sessionStorage
btn.onclick = function(){
s.setItem("msg","hello")
window.location.href = "./test.html"
}
</script>
</body>
//test.html
<body>
<script>
let s = window.sessionStorage
let msg = s.getItem("msg")
console.log('msg' , msg)
</script>
</body>
8,set 和map 的区别

9,Promise

10,Var、 let 、const 区别

11,== 和 ===区别

12,数组方法







13,call、apply 、bind区别

14,本地存储的方式有哪些?区别及应用场景?


15,深拷贝浅拷贝的区别

16,typeof 与 instanceof 区别

17,ajax、axios、jsonp的理解

18,ajax请求的时候get 和post方式的区别

19,什么是事件委托以及优缺点

20,数组与字符串相互转化
//字符串转数组
var str="How are you doing today?";
var n=str.split(" "); //How,are,you,doing,today?
//数组转为字符串
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join(); //Banana,Orange,Apple,Mango
四,计算机基础
1,mvc和mvvc的区别


2,说一下http和https

五,React面试题
1,类组件与函数式组件的相同点和不同点


2,Hooks
(1)useState






(2)useEffect
作用类似类组件的componentDidMount、componentDidUpdate、componentWillUnmount





关注点分离:
customized hook
(3)useContext





(4)ref
a,类组件的ref
方式一:
方式二:

b,函数组件的ref





(5)useMemo & useCallback




memo用于组件优化, useMemo用于固定值,useCallback用于固定函数。
useMemo+useCallback用于性能优化,管理子组件是否重新渲染
3,受控组件与非受控组件
受控组件:表单元素(如input、texture、select)将自身的值给state托管,
非受控组件:元素(如file)的值不是有state托管
4,redux
(1)基本操作



(2)提取action & reducer
action生成函数

(3)UI层提取和数据响应


(4)react-redux & connect






(5)thunk 异步处理


版权声明:本文为qq_46068142原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。