资讯专栏INFORMATION COLUMN

2019年7-8月份前端面试题

shevy / 1389人阅读

摘要:站点接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是无辜的受害者发送的请求。函数内部语句返回的值,会成为方法回调函数的参数。

记录我最近面试缺漏的知识点

css

1.bootstrap如何实现手机PC端自适应

媒体查询

2.flex布局

父容器:(记得常用属性)
display:flex
flex-direction: row | row-reverse | column | column-reverse
flex-wrap: nowrap | wrap | wrap-reverse
justify-content: flex-start | flex-end | center | space-between | space-around
align-items: flex-start | flex-end | center | baseline | stretch

3. 多行文本与单行文本的省略

单行:width: 100px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; 
多行:1. width:100px; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; 
line-clamp属性是为了控制文本显示多少行。说明:必须定义display属性才可以对box进行划分。 box-orient 属性指定一个box子元素是否应按水平或垂直排列。        
2. :afert在最后加个背景图然后加上省略号   
3.插件
js:

1.$和dom对象转化

通过$符号 $(document)

2.jq链式调用原理

 return 实现链式调用 (可研读jq源码)

3.$this 和 this区别

 $(this)表示的是用jquery封装候的当前对象
 this表示的是javascript提供的当前对象

4.websocket基于什么协议

  TCP

5.TCP和HTTP区别

 TCP传输层协议 HTTP应用层协议 

6.canvas和svg区别

 Canvas 能以.png .jpg格式保存图像,依赖分辨率,不支持事件处理器,适合图像密集型的游戏(被频繁重绘)
 Svg 是矢量图像,不依赖分辨率,支持事件处理器,适合大型渲染应用程序,不适合游戏应用

7.xss、csrf攻击

XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站上注入恶意代码,当被攻击者登陆网站时就会执行这些恶意代码,这些脚本可以读取 cookie,session tokens,或者其它敏感的网站信息,对用户进行钓鱼欺诈,甚至发起蠕虫攻击等。
XSS 的本质是:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。由于直接在用户的终端执行,恶意代码能够直接获取用户的信息,利用这些信息冒充用户向网站发起攻击者定义的请求。

Xss解决方案:代码严谨 加验证 编码

 CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
 典型的CSRF攻击流程:
 受害者登录A站点,并保留了登录凭证(Cookie)。
 攻击者诱导受害者访问了站点B。
 站点B向站点A发送了一个请求,浏览器会默认携带站点A的Cookie信息。
 站点A接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是无辜的受害者发送的请求。
 站点A以受害者的名义执行了站点B的请求。
 攻击完成,攻击者在受害者不知情的情况下,冒充受害者完成了攻击。

Csrf解决方案:

添加验证码(体验不好)

判断请求的来源:检测Referer(并不安全,Referer可以被更改)

使用Token(主流)

Samesite Cookie属性

8.cookie和session区别 cookie如何实现session (需要依靠后台) 同源策略 可以跨域吗

9.解决跨域的方法

jsonp、cors、iframe 

10.css3新特性

新增了选择器,伪类,样式属性

11.如何实现一个音频播放 资源不被窃取

使用flash

12.如何实现发微博还剩多少字 汉字英文 表情

正则验证转化Unicode

13.如何实现长连接

websocket  、 http keep-alive

14.原型链 、prototype是什么 可以实现继承吗

每个对象都有一个__proto__属性指向构造函数的prototype原型,在找一个对象的属性或方法时,在本身上找不到就去原型上找,直到undefined。  
new Pet (实例)--(__proto__) ---->Pet.prototype
prototype主要来实现继承(原型继承)

15.实现继承的几种方式

16.原型继承与new构造继承的优缺点

原型继承:
  核心: 将父类的实例作为子类的原型
  缺点: 父类新增原型方法/原型属性,子类都能访问到,父类一变其它的都变了
构造继承:
 核心:复制父类的实例属性给子类
 缺点: 方法都在构造函数中定义, 只能继承父类的实例属性和方法,不能继承原型属性/方法,无法实现函数复用,每个子类都有父类实例函数的副本,影响性能

17.如何做缓存 浏览器如何实现缓存

1.localstorage
2.vue keep-alive
对cache-control、etag、expires、last-modified的理解 使用

18.对window.proformance的理解

19.对Event-loop的理解

执行线程,macro-task(宏任务):包括整体代码script,setTimeout,setInterval,micro-task(微任务):Promise,process.nextTick

先执行微任务再执行宏任务

20. 数组去重 数组扁平化

21.字符串拼接方法

1.“+” 
2.以数组作为中介用 join 连接字符串  
3.es6:模板字符串 `` 

22.闭包、垃圾回收的几种方式

23.对node.js、npm有什么了解

es6

1.遍历器(iterator)

2.Generator yield

 generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。
 generator和函数不同的是,generator由function*定义(注意多出的*号),并且,除了return语句,还可以用yield返回多次。
 generator还有另一个巨大的好处,就是把异步回调代码变成“同步”代码。

3.async await

async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。
async函数内部return语句返回的值,会成为then方法回调函数的参数。
async内的代码是同步的

4.promise 状态改变 里面内容的同步异步

Promise 构造函数是同步执行的,promise.then 中的函数是异步执行的。

5.promise 和 async关系

6.箭头函数和普通函数的区别

① 箭头函数是匿名函数,不能作为构造函数,不能使用new
② 箭头函数不绑定arguments,用rest参数替代
③ 箭头函数不绑定this,会捕获其所在上下文的this值作为自己的this,任何方法(call,apply,bind)都改变不了其this指向
④箭头函数没有原型属性
⑤箭头函数不能当做Generator函数,不能使用yield关键字

7.filter reduce过滤器

filter : array.filter(callback [,that]);
对于回调,可以指定数组元素的值“value”,数组元素的数字索引“index”以及存储数组元素的数组对象“arrayObj”。
对于每个数组元素,callbak返回true的元素将生成为新数组,callcak未返回true的元素将被跳过,并且不包含在新数组中。
var data = [1, 4, 7, 12, 21];var result = data.filter(function(value) {return value % 2 === 1;});console.log(result);

reduce普通用法: 数组求和,求乘积 var sum = arr.reduce((x,y)=>x+y); var mul = arr.reduce((x,y)=>x*y)
高级用法 :(1)计算数组中每个元素出现的次数
(2)数组去重
(3)将二维数组转化为一维
(3)将多维数组转化为一维(数组扁平化)
(4)、对象里的属性求和

8. Object.assign()

Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。
注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
如果只有一个参数,Object.assign会直接返回该参数。
如果该参数不是对象,则会先转成对象,然后返回。
由于undefined和null无法转成对象,所以如果它们作为参数,就会报错。undefined和null不在首参数,就不会报错。
Object.assign拷贝的属性是有限制的,只拷贝源对象的自身属性(不拷贝继承属性),也不拷贝不可枚举的属性(enumerable: false)。
vue

1.对vue实例的了解

 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的:
 1.2.在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。
 1.3.可以扩展 Vue 构造器,从而用预定义选项创建可复用的组件构造器var MyConponent = Vue.extends({})
 1.4.所有的 Vue.js 组件其实都是被扩展的 Vue 实例

2.vue的双向数据绑定 数据劫持defineProperty

 采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。

3.发布-订阅者模式 对Observer Compile Watcher的理解

4.slot插槽

插槽就是Vue实现的一套内容分发的API,将元素作为承载分发内容的出口。

没有插槽的情况下在组件标签内些一些内容是不起任何作用的,当我在组件中声明了slot元素后,在组件元素内写的内容就会跑到它这里了!

 slot属性对应的内容都会和组件中name一一对应。没有名字的,就是默认插槽!!

作用域槽:在组件上的属性,可以在组件元素内使用。slot上面的属性(slot-scope)和值组成的键值对。可以把组件上的属性/值,在组件元素上使用
5.nextTick函数

6.vuex

 一个 Vuex 应用的核心是 store(仓库,一个容器),store包含着你的应用中大部分的状态 (state)。

适用于:中大型单页应用,你可能会考虑如何把组件的共享状态抽取出来,以一个全局单例模式管理,不管在哪个组件,都能获取状态/触发行为,解决问题如下:
① 多个视图使用于同一状态:
传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力
② 不同视图需要变更同一状态:
采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝,通常会导致无法维护的代码

7.vueRouter

ps:以上均为近期遇到我知识疏漏的面试题,其他一些基础类型知识点也是要掌握的。答案有参考官方文档,自己看过的文章,有我自己总结的,如有错误,请严厉指正。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110030.html

相关文章

  • 2019前端秋季社招面试经历总结(三经验)

    摘要:经历月份开放的简历,收到了蛮多询问和面试,算是招人旺季,需要跳槽的小伙伴抓住机会。现在是面试了家公司左右,有些高频问题会标记次数总次数,可供大家参考。最后祝大家面试顺利,拿到心仪的,写错的地方请不吝赐教,谢谢。 经历 7月份开放的简历,收到了蛮多询问和面试,算是招人旺季,需要跳槽的小伙伴抓住机会。一开始广泛看面试题,没抓住重点复习,有很多平时也没怎么用到,导致一开始面试的时候,问的问题...

    Kross 评论0 收藏0
  • 2019前端秋季社招面试经历总结(三经验)

    摘要:经历月份开放的简历,收到了蛮多询问和面试,算是招人旺季,需要跳槽的小伙伴抓住机会。现在是面试了家公司左右,有些高频问题会标记次数总次数,可供大家参考。最后祝大家面试顺利,拿到心仪的,写错的地方请不吝赐教,谢谢。 经历 7月份开放的简历,收到了蛮多询问和面试,算是招人旺季,需要跳槽的小伙伴抓住机会。一开始广泛看面试题,没抓住重点复习,有很多平时也没怎么用到,导致一开始面试的时候,问的问题...

    DevWiki 评论0 收藏0
  • 2019前端秋季社招面试经历总结(三经验)

    摘要:经历月份开放的简历,收到了蛮多询问和面试,算是招人旺季,需要跳槽的小伙伴抓住机会。现在是面试了家公司左右,有些高频问题会标记次数总次数,可供大家参考。最后祝大家面试顺利,拿到心仪的,写错的地方请不吝赐教,谢谢。 经历 7月份开放的简历,收到了蛮多询问和面试,算是招人旺季,需要跳槽的小伙伴抓住机会。一开始广泛看面试题,没抓住重点复习,有很多平时也没怎么用到,导致一开始面试的时候,问的问题...

    solocoder 评论0 收藏0
  • 前端面试系列--前言篇

    摘要:这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里文章目录前言说明准备方向目标前言说明作为半个科班出身学数学的应届生,在学习计算机的时候还是比较吃力的,从今年月份开始接触前端,到现在也有个月左右了。 这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里 文章目录 前言说明 准备方向 目标 前言说明   作为半个科班出身...

    sshe 评论0 收藏0
  • 前端面试系列--前言篇

    摘要:这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里文章目录前言说明准备方向目标前言说明作为半个科班出身学数学的应届生,在学习计算机的时候还是比较吃力的,从今年月份开始接触前端,到现在也有个月左右了。 这个系列的文章将记录我准备春招的整个过程,我会将自己学习到的新知识记录在这个系列里 文章目录 前言说明 准备方向 目标 前言说明   作为半个科班出身...

    zsirfs 评论0 收藏0

发表评论

0条评论

shevy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<