2021年前端岗位面试题 “二”(本人亲测)

今年5月份在南京面试 大概三周的时间 面试了二十几家大 中 小型企业 收集了各种面试题
希望给还在面试的兄弟们一点帮助 共三套 

什么是跨域

浏览器从一个域名的页面去请求另一个域名的资源时,

端口,域名,协议其中任意一个不一致,就是跨域

 

跨域问题怎么解决

JSONP跨域,nginx反向代理

 

自适应(响应式)该怎么做

在网页代码的头部加入一个viewport元标签

宽度不用绝对的:width:{20%} (用百分比)

大小用相对rem,不用绝对大小px

流动布局,各个区块的位置都是浮动的,不是固定不变

选择加载CSS

CSS3引入的媒体查询Media Query模块,自动探测屏幕宽度,然后加载相应的CSS文件

 

什么是JS原型?JS原型链是什么?

当生产一个function对象时,就会有一个原型属性,是函数的一个默认属性

是函数创建过程中JS编译器自动添加的

JS原型就是指显示原型prototype和隐式原型__proto__这两个原型对象 

原型链就是查找对象的某个属性或方法时,先查找自身,若没找到则向上层逐级查找,这种链式结构,称为原型链,若没有查到则返回undefined。

 

CSS3清除浮动

给父级元素设置overflow:hidden

给父级元素设置明确的高度

在父级元素的最底部设置clear:both来清除浮动

 

IE兼容

Zoom

 

div垂直水平居中

浮动:justify-content:center横向居中 align-item:center纵向居中

定位:设置top 50%,left 50%

Grid网格布局:justify-self:center水平居中 align-self:center 垂直居中

 

px,em,rem的区别

px是绝对大小

em和rem是相对大小

em是相对于父元素的字体大小进行改变(也就是body)

而rem是相对于根元素的字体大小进行改变(也就是html)

一般来说任意浏览器的字体大小都是16px,所有未经调整的浏览器都符合1rem=16px

 

箭头函数和普通函数的区别,为什么使用箭头函数?

箭头函数的this指向上层对象,普通函数的this指向调用其函数的对象

箭头函数不能作为构造函数实例化对象

不能使用argument但可以使用...rest(剩余参数)

箭头函数不需要绑定this,argument,代码更简洁明了,简化了代码

 

ES6中Let和var

Let不可以重复声明,var可以重复声明

Let会创建块级作用域,使用范围被限制,更符合逻辑

Let在相同的作用域下不能有相同的变量,var可以有,且不会报错

防止数据污染或者被覆盖的问题

Let循环会做特殊处理,每次循环都会产生一个新的作用域,并且将循环的变量绑定到该作用域内(每次循环使用的是一个新的循环变量)

 

数组新增/删除/查询是否包含某个元素

新增元素用Push方法

删除元素用delete方法

查询是否包含某个元素用indexOf方法

 

Get和Post有什么区别?

首先Get和Post都是HTTP协议中发送请求的方式

然后Get请求比Post请求更快速一些更高效

但是Post比Get安全性更好,Get不安全

因为Get请求的参数直接暴露在URL上,而Post是通过request body进行传递参数

 

同步和异步的区别

同步请求是按照顺序处理,向服务器发送请求后,等待响应,返回结果后再进行下一步操作

异步请求是并行处理,向服务器发送请求时,在服务器未返回结果时可以进行其他操作

异步处理用户体验感更好

 

css样式优先级
内联样式 > 内部样式表 > 外部样式表(写在head标签中)

 

CSS选择器/优先级

Id选择器,类(class)选择器,后代选择器,子选择器,标签选择器,伪类选择器

优先级

Id选择器>类选择器>子选择器>后代选择器>标签选择器>伪类选择器

 

HTML5本地存储

Cookie可以设置存储的时间,数据存放在客户端

localStorage 如果不手动清除,关闭浏览器,数据不会丢失,通过key-value方式进行存储

sessionStorage 关闭浏览器,数据自动删除,不持久化

 

vue中keep-alive的作用
主要是在组件切换时,保存组件的状态,防止重复渲染引发性能问题。keep-alive起到一个缓存作用,用来保存页面的状态(包括数据、操作等)。
 


为什么data必须是一个函数
首先定义的 xx.vue文件在编译之后是一个类,每个地方使用这个组件的时候,相当于对这个类实例化,在实例化的时候执行data,如果不是一个函数的话,每个组件的实例的data都是同一个引用数据,当该组件作为公共组件共享使用,一个地方的data更改,所有的data一起改变。如果data是一个函数,每个实例的data都在闭包当中,就不会各自影响了
目的是为了防止多个组件实例对象之间共用一个data,产生数据污染。

 

//禁止转载 转载告诉我一声 俺也是有脾气的

posted @ 2021-09-16 10:19  秋の子  阅读(81)  评论(0编辑  收藏  举报