2020前端面试

1. calc、support、media各自的含义及用法?
  • calc()函数主要用于动态计算长度值。calc()函数支持 加减乘除运算
  • support主要用于检测浏览器是否支持某个css属性,就是条件判断,如果支持某个属性,可以写一个样式,如果不支持某个属性,可以写另外一个样式。
  • media查询,可以针对不同的媒体类型定义不同的样式
2. css水平、垂直居中的写法,请至少写出4种

水平居中

  • 行内元素:text-align:center
  • 块级元素:margin:0 auto
  • position:absolute+left:50%+transform:translateX(-50%)
  • display:flex+justify-center:center

垂直居中

  • 设置line-height等于height
  • position:absolute+top50%+transform:translationY(-50%)
  • display:flex+align-items:center
  • display:table+display:table-cell+vertical-align:middle
3. 1rem 1em 1vh 1px 代表的含义

rem

rem是全部长度相对于根元素元素。通常做法是给html元素设置一个字体大小,其他元素的长度单位就为rem

em

  • 子元素字体大小的em是相对于父元素字体大小
  • 元素的width、height、padding、margin用em的话是相对于该元素的font-size

vw/vh

  • 全称是Viewport Width和Viewport Height,视图的宽度和高度。

px

  • px像素(pixel)。相对长度单位。像素px是相对于显示屏幕分辨率而言
4. 画一条0.5px的直线
height:1px
transform:scale(0.5)
5. 盒模型

盒模型的组成:由里向外content,padding,border,margin

在IE盒子模型中,width表示content+padding+border这三个部分的宽度

在标准的盒子模型中,width指content部分的宽度

box-sizing的使用

box-sizing:content-box 是w3c盒子模型
box-sizing:border-box 是IE盒子模型
6. 画一个三角形
.a{
	width:0;
	height:0;
	border-width:100px;
	border-style:solid;
	border-color:transparent #0099c transparent transparent;
	transform:rotate(90deg);
}
<div class="a"> </div>
7. 清楚浮动的几种方式
  • ::after /<br>/clear:both
  • 创建父级 BFC(overflow:hidden)
  • 父级设置高度

BFC(块级格式化上下文),是一个独立的渲染区域,让处于BFC内部元素与外部元素相互隔离,使内外元素的定位不会相互影响

触发条件

  • 根元素
  • position:absolute/fixed
  • display:inline-block/table
  • float元素
  • overflow != visible

规则

  • 属于同一BFC的两个相邻BOX垂直排列
  • 属于同一BFC的两个BOX的margin会发生重叠
  • BFC的区域不会与float的元素区域重叠
  • 计算BFC的高度时,浮动子u元素也会参与计算
  • 文字层不会被浮动层覆盖,环绕于周围
label标签的用法

label标签主要是方便鼠标点击使用,扩大可点击的范围,增强用户操作体验

遍历A节点的父节点下的所有子节点
var b=document.getElementById('a').parentNode.children
log(b)
js递归求1到100的和
function add(num1,num2){
	var num =num1+num2;
	if(num2+1>100){
	return num
	}else{
	return add(num,num2+1)
	}
}
var sum=add(1,2)
页面渲染html的过程
  1. 浏览器解析html,然后创建一个dom树。并行请求css/image/js在dom树中每一个html标签都有一个对应的节点,并且每一个文本也都有一个对应的文本节点,dom树的根节点就是documetElement,对应的是html标签
  2. 浏览器解析css代码,计算最终的样式数据。构建cssom树。对css代码中非法的语法他会直接忽略掉。解析css的时候会按照如下顺序来定义优先级:;浏览器默认设置<用户设置<外链样式<内联样式<html的style
  3. dom tree+cssom—>渲染树(rendering tree)。渲染树和dom树有点像但是也有却别

dom树完全和html标签一一对应,但是渲染树会忽略掉不需要渲染的元素,比如head、display:none的元素等,而且一大段文本中的每一行在渲染树中都是独立的一个节点。渲染树中的每一个节点都有存储在对用的css属性

  1. 一旦渲染树创建完成,浏览器就可以直接根数渲染树把页面绘制在屏幕上
说一下CORS

CORS是一种新标准,支持同源通信,也支持跨域通信。fetch是实现cors通信的

如何中断ajax请求

一种是设置超时时间让ajax自动断开,另一种是手动停止ajax请求,其核心是调用xml对象的abort方法,ajax.abort()

事件代理

事件委托是指将事件绑定到目元素的父元素上,利用冒泡机制触发该事件

ulEl.addEventListener('click',function(e){
	var target = event.target || event.srcElement
	if(!!target && target.nodeName.toUpperCase() === "LI"){
        console.log(target.innerHTML);
    
},false)
targrt、currentTargrt的区别

currentTarget当前所绑定事件的元素

taret当前被点击的元素

说一下宏任务和微任务
  1. 宏任务:当前调用栈中执行的任务称为宏任务。
  2. 微任务:当前宏任务执行完,在下一个宏任务开始之前需要执行的任务为微任务
  3. 宏任务中的事件放在callback queue中,由事件触发线程维护,微任务的事件放在微任务队列中,由js引擎线程维护
继承的几种方式及优缺点
  1. 借用构造函数继承、使用call或apply方法,将父对象的构造函数绑定在子对象上
  2. 原型继承,将子对象的prototype指向父对象的一个实例
  3. 组合继承

原型链继承的优缺点

  • 字面量重写原型会中断关系,使用引用类型的原型,并且子类型还无法给超类型传递参数

借用构造函数

  • 借用构造函数可以解决刚才的问题,但是没有原型,则无法复用

组合式继承

  • 组合式继承是一种比较常用的一种继承方法,其背后的思路是使用原型链实现对原型和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,即通过在原型上定义方法实现了函数复用,又保证每个实例都有自己的属性
闭包

函数嵌套形成的作用域链

export和export default的区别
export default xxx
import xxx from './'

export xxx
import {xxx} from './'
什么是cookie

cookie是服务器返回的,指定了expire time的持久cookie,没有指定的是会话cookie

数组去重

get post区别
  1. get传参方式是通过URL传递,?连接&进行分割
  2. get对传递的数据长度有限制,url最大长度是2048个字符。post没有长度限制
  3. get后退不会有影响,post后退会重新提交
  4. get请求可以被缓存,post不可以被缓存
  5. get请求只有URL编码,post支持多种编码
  6. get请求会记录在历时记录中,post不会留在历史记录
你所知道的http响应码及含义

1xx 临时响应

100: 请求者应当继续提出请求

101:请求者已要求服务器切换协议,服务器已确认并准备进行切换

2xx 成功

200:正确的请求返回的正确的结果

201:表示资源被正确的创建、比如说,我们POST用户名、密码正确创建了一个用户就可以返回201

202:请求是正确的,但是结果正在处理中,这时候客户端可以通过轮询等机制继续请求

3xx

300:请求成功,但结果有多种选择

301:请求成功,但是资源被永久转移

303: 使用get来访问新的地址来获取资源

304:请求的资源并没有被修改过

4xx 请求错误

400:请求出现错误

401:没有提供认证信息。

402:为以后需要所保留的状态码

403:请求的资源不允许访问。就是说没有权限

404:请求的内容不存在

5xx 服务器错误

500:服务器错误

501:请求还没有被实现

照着敲了一遍,俗话说好记性不如烂笔头!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值