资讯专栏INFORMATION COLUMN

慕课网js面试题学习笔记(ES6 标准) ——实时更新

netmou / 2810人阅读

摘要:而第一种方法只能判断引用类型,不能判断值类型,因为值类型没有对应的构造函数描述一个对象的过程生成一个新的空对象指向这个新对象执行构造函数中的代码,即对赋值将新对象的属性指向构造函数的属性返回,即得到新对象。

最近在在看前端面试教程,这篇文章里大部分是看视频的过程中自己遇到的不清楚的知识点,内容很简单,只是起到一个梳理作用。有些地方也根据自己的理解在作者的基础上加了点东西,如有错误,欢迎交流。 1、typeof有几种结果
undefined、、boolean、object、string、number、function、symbol(ES6新增)
2、何时使用 ===,何时使用 ==
if(obj.a == null) {
    //相当于obj.a === null || obj.a === undefined
    //除了这种情况用 == 之外,全部用 === 
    //这是jquery的推荐写法
}
3、js中的内置函数有哪些?
Object()、Array()、Boolean()、Number()、String()、Function()、Date()、RegExp()、Error()

//注意:构造函数的函数名一般都以大写字母开头,自己定义的构造函数也尽量这样写
4、window.onload和DOMContentLoaded的区别
当onload事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了。

当DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。
5、如何理解JSON
JSON首先是一种数据格式,也是js的一种内置对象,它有两个方法:stringify()(序列化)、parse()(反序列化)
5、变量类型和引用类型的区别
js中变量分为两种类型,值类型:boolean、undefined、number、string和引用类型(object)。值类型的变量定义体和具体的值都存在栈内存中,所以var a = 123; var b = a; b = 456; 以后b等于456,a还是等于123;
而引用类型的变量定义体存在栈内存中,而具体的值存在堆内存中,每次复制一个引用类型,相当于只是复制了一份引用。所以复制体改变,被复制体也会跟着同时改变。
6、如何准确判断一个变量是数组类型
两种办法:
1、 a instanceof Array;
2、 Object.prototype.toString.call(a)
//a为要检测的变量,实际上第二种方法可以准确判断js中几乎所有的类型。
//而第一种方法只能判断引用类型,不能判断值类型,因为值类型没有对应的构造函数
7、描述new一个对象的过程
1、生成一个新的空对象;
2、this指向这个新对象;
3、执行构造函数中的代码,即对this赋值;
4、将新对象的__prototype__属性指向构造函数的prototype属性;
5、返回this,即得到新对象。
8、说明this的几种不同的使用场景
1、作为构造函数执行
2、作为对象属性执行
3、作为普通函数执行
4、call bind apply
5、DOM事件中使用
6、js非strict模式下,this默认指向window对象
9、创建10个a标签,点击的时候弹出对应的序号(0-9)
//考察js作用域和闭包的运用
    
10、如何理解作用域
1、自由变量
2、作用域链、即自由变量的查找
3、闭包的两个场景

11、开发实际过程中闭包的应用
封装变量,收敛权限
12、如何理解常说的JS

常说的JS一般来说包含两部分:

1、JS基础知识(ECMA262标准),也就是语法标准,让js拥有基础编程语言的能力。
2、JS-Web-API(W3C标准),让js拥有操作dom和bom的能力。
13、querySelectorAll 方法相比 getElementsBy 系列方法有什么区别

1、querySelectorAll属于W3C的Selector API规范,而getElementsBy属于W3C的DOM规范。
2、方法接受的参数不一样,前者接受的是css选择符,而后者只能是单一的ClassName、Id、或者TagName.
3、querySelectorAll返回的是static node List,而getElementsBy返回的是live node List,获取以后在添加元素,前者数量不变,后者数量会跟着增加。会导致一些死循环,参考:https://www.bbsmax.com/A/GBJr...
http://www.imooc.com/article/...

14、Dom操作常用API
document.getElementsBy系列、docuemnt.querySelectorAll、document.querySelector、
getAttribute(attrName)、setAttribute(attrName,val)、
appendChild(node) - 在最后插入新的子节点(元素)、
insertBefore(node) - 在前面插入新的子结点
removeChild(node) - 删除子节点(元素)、
15、Dom节点的Attribute和property有什么区别

Attribute是HTML标签的属性,property是JS对象的属性

16、常见的BOM操作API

检测客户端

navigator.userAgent

检测屏幕

screen.width、screen.height

url操作

location.href  .protocol .pathname .search .hash
17、常见浏览器的内核
Trident内核:主要代表为IE浏览器 // -ms-
Gecko内核:主要代表为Firefox    //-moz-
Presto内核:主要代表为Opera     //-o-
Webkit内核:产要代表为Chrome和Safari //-webkit-
18、描述浏览器访问一个网站的过程

一、域名到ip地址解析过程

1、查找浏览器缓存
2、查找系统缓存(一般是hosts文件)
3、查找路由器缓存
4、查找ISP DNS 缓存
5、ISP发起一个迭代的DNS请求
(1)本地 DNS服务器即将该请求转发到互联网上的根域(即一个完整域名最后面的那个点,通常省略不写)
(2)根域将所要查询域名中的顶级域(假设要查询ke.qq.com,顶级域就是com)的服务器IP地址返回到本地DNS
(3) 本地DNS根据返回的IP地址,再向顶级域(就是com域)发送请求。
(4) com域服务器再将域名中的二级域(即ke.qq.com中的qq)的IP地址返回给本地DNS
(5) 本地DNS再向二级域发送请求进行查询
(6) 之后不断重复这样的过程,直到本地DNS服务器得到最终的查询结果,并返回到主机。这时候主机才能通过域名访问该网站。
域名解析的过程到此完成,至此浏览器拿到了域名对应的IP地址

二、建立TCP/IP连接,通过TCP协议的三次握手,连接建立以后,浏览器就向服务器发起http请求,一般通过get或者post方法。
三、服务器端接受到这个请求,根据请求参数,通过相关的处理把结果,一个html代码,返回给服务器
四、浏览器拿到html代码,开始解析页面,里面的css、js、图片等静态资源,同样要经过上述步骤才能到达浏览器。
五、浏览器根据拿到的资源对页面进行渲染,最后将渲染完成的页面呈现给用户。

19、http请求常见的状态码有哪些
200     //请求完成,成功返回数据
301     //所请求的页面已经转移至新的url
400     //客户端请求的语法错误,服务器无法解析
401     //请求要求用户的身份认证
403     //服务器理解请求客户端的请求,但是拒绝执行此请求,可能还是没有权限
404     //客户端请求的资源不存在,最常见的一种状态码
500     //服务器错误
503     //由于超载或系统维护,服务器暂时的无法处理客户端的请求
20、简述cookies、 sessionStorage、localStorage的区别

cookies容量大约只有4KB、所有的http请求都带着它,会影响获取资源的效率,API太简单只有documet.cookies,使用的时候一般要通过字符串处理函数经过封装。
sessionStorage和localStorage容量有5M,API简单易用,它们两个唯一区别就是sessionStorage关闭浏览器会自动清除

21、常见的几种性能优化策略

一、加载资源优化:

1、静态资源的合并压缩(利用webpack、gulp等,压缩合并js、css文件)
2、静态资源缓存(同一网站下静态资源的名字不变,浏览器不会重新请求)
3、使用CDN让资源加载更快(大公司都有自己的CDN)
4、使用SSR(server side render)后端渲染,数据直接输出到HTML中,是vue、react中提出的概念,但是其实在早期的php、asp、jsp中都是这种渲染形式。

二、渲染优化

1、CSS放前面,JS放后面
2、懒加载(图片懒加载,下拉加载更多,而不是一次性全部加载)
3、减少DOM查询,对DOM查询做缓存
4、减少DOM操作,多个操作尽量合并在一起执行(利用createDocumentFragment,先将要插入的dom元素按次序放在Fragment中,再一次性将Fragment插入到已有的dom中)
5、事件节流
6、尽早操作,在DOMContentLoaded的时候就进行操作,而不是window.onload以后再进行,zepto和jquery都是用前者
22、常见的web攻击类型

1、XSS(Cross-site Scripting)跨站请求攻击
例如:攻击者在文章里面写入一段,别人点开文章,就相当于执行了这个脚本,攻击者就可以获得别人的隐私信息
解决方法:前端替换关键字,例如替换 < 为<, > 为> 。 由于前端性能有限,一般这些工作交给后端处理
2、XSRF(Cross-site request forgery)跨站请求伪造
攻击者伪造成被攻击者向服务器发送请求,造成财产损失
解决方法:增加验证流程,密码,短信验证码。

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

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

相关文章

  • 前端资源系列(4)-前端学习资源分享&前端面试资源汇总

    摘要:特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 本以为自己收藏的站点多,可以很快搞定,没想到一入汇总深似海。还有很多不足&遗漏的地方,欢迎补充。有错误的地方,还请斧正... 托管: welcome to git,欢迎交流,感谢star 有好友反应和斧正,会及时更新,平时业务工作时也会不定期更...

    princekin 评论0 收藏0
  • 前端必须要珍藏的技术文章和面试

    摘要:前端工程师学习资料,快速查找面试题,经典技术文章的总结,编程技巧,帮助学习者快速定位问题花点时间整理出一下前端工程师日常工作所需要的学习资料查找,帮助学习者快速掌握前端工程师开发的基本知识编程始于足下记住再牛逼的梦想也抵不住傻逼似的坚持蝴蝶 前端工程师学习资料,快速查找面试题,经典技术文章的总结,编程技巧,帮助学习者快速定位问题花点时间整理出一下web前端工程师日常工作所需要的学习资料...

    MoAir 评论0 收藏0
  • 一份送给Java初学者的指南

    摘要:编程思想第版这本书要常读,初学者可以快速概览,中等程序员可以深入看看,老鸟还可以用之回顾的体系。以下视频整理自慕课网工程师路径相关免费课程。 我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailclimb/Java-Guide 笔者建议初学者学习Java的方式:看书+视频+实践(初...

    banana_pi 评论0 收藏0

发表评论

0条评论

netmou

|高级讲师

TA的文章

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