css
1.伪类伪元素
答:伪类是为一个元素添加其他属性 :hover, :visitied, 伪元素是为一个元素添加其他的虚拟元素,::before, ::after
2.行内元素与块级元素与行内块元素
答:行内元素:a,span,b,i,strong,input 块级元素: div, p, h1,ol,ul 行内块元素:img, input,select
3.什么是BFC
答:块级格式上下文,为了解决外边距重叠等问题,设置为BFC的方式有:1.设置display:flex,2.设置定位position,fixed和absolute,3.设置浮动float:left&right,4.overflow:不为visible,
4.flex布局
答:弹性布局,容器上:display:flex, flex-direction, flex-wrap, justify-content, align-items, 元素上:order, flex-grow, flex-shrink, flex-basis,align-self
javaScript
1.如何实现一个深拷贝
2.宏任务与微任务
答:浏览器是单线程的,在一个时间内只能执行一个任务,分为同步任务与异步任务,同步任务立即执行,异步任务分配入队列中,等候同步任务执行完后执行,异步任务分为宏任务与微任务,微任务优先执行,然后执行宏任务。宏任务一般有setTimeout, setInternal,axios,io,微任务有async,await,promise等
3.输入url发生了什么
答:输入url后,浏览器对于地址进行域名解析,封装http请求,建立tcp三次握手,发送请求,接收响应,对于页面html的dom树进行解析,渲染页面
4.es6使用过哪些新特性
答:const,let的块级作用域;模板字符串,解构赋值,箭头函数, 函数参数默认值,函数参数的剩余参数,数组的一些方法, 字符串的一些方法,promise, async, await, Map与Set, generator, Proxy,import
5.forEach跳出循环
答:for循环可以通过break和continue跳出循环,forEach本质上无法跳出循环每条数据都得遍历,可以通过return实现continue的效果
6.闭包
答:闭包就是有权访问另一个函数作用域的函数,闭包的缺点是对于外部作用域的引用一直存在无法释放可能导致内存泄漏等问题,解决方式是手动将其清空,在组件卸载的时候手动置为Null
7.箭头函数和普通函数
答:没有自己的this对象,不能使用new构造函数,没有arguments对象,不可以使用yeild
React
1.react hooks 实现原理
答:链表结构
2.react 父子如何通信
答:通过props
3.react 生命周期
答:初期渲染:constructor, getDrivedStateFromProps, componentWillMount, render, ComponentDidMount, 更新:getDrivedStateFromProps, ShouldComponentUpdate, render, getSnapShotFromProps, ComponentDidUpdate, 卸载:ComnentWillUnmount
4.受控组件和非受控组件
答:受控组件与非受控组件一般来说相对于表单组件,对于受控组件,表单元素会持有内部state,可以通过setState来修改state,而非受控组件则不受state的控制,可以通过ref获取表单元素
5.如何使用react hooks实现生命周期函数
答:通过useEffect, useEffect(() => {}) // componentDidMount+componentDidUpdate, useEffect(() => {} , []) //componentDidMount. useEffect(() => {return ...}) // componentWillUnmount
网络问题
1.如何解决跨域问题
答:后端加上Access-Control-Allow-Origin;document.domain; jsonp;location.hash;
2.强缓存与协商缓存
答:强缓存策略时,如果缓存资源有效则使用缓存资源不向浏览器发送请求;通过http头的expires和cache-control来设置,协商缓存通过last-modefied设置
3.fetch和axios区别
答:fetch用来发送请求,他在window中实现了,则可以在window.fetch()中可被调用,fetch()接受一个参数,表示获取资源的路径,返回一个Promise ajax主要就是通过xhr对象和服务器进行通信,ajax最优的特点是可以在不重新刷新页面的情况与服务器进行通信 与ajax的区别是:从fetch返回的promise不会因为http的错误状态而被拒绝,即使状态码是404或者500,能够正常返回fulfill,只有在网络故障或者阻止请求完成时,才拒绝;除非在init对象中设置credentials,否则fetch不会发送跨域cookie
4.axios创建请求的原理及相关实现
答:axios其实本质上是对ajax的封装,本质上还是xhr对象;而fetch本质上是全新的javascript接口,而且fetch api自带promise
5.get和post的区别
答:(1)缓存不同,get请求一般会被缓存,而Post请求默认不进行缓存;(2)参数长度限制不同,get请求有长度限制而post请求是放在正文中的没有大小限制;(3)回退和刷新不同,get请求可以直接进行回退和刷新,而post请求如果回退会再次把数据进行提交;(4)历史记录不同,get请求会保存在历史记录中,而post不会
webpack
1.webpack打包原理
答:webpack处理应用程序时,会从内部从一个或多个入口构建一个依赖图,用于展示
2.webpack如何分包
3.webpack的loader与plugins区别
答:webpack只能处理javaScript文件,loader可以让webpack处理其他类型得文件。plugins是使用插件 ps:求拉有质量得前端技术交流群或者纯交流群