web前端面试题

最近题主在找工作啊。。。发现基础的概念知识点还是需要重拾一下的,在这里就概括一下前端面试遇到的问题及答案。如有错误,请大家指正!!!!

1、中文的自我介绍

您好:我叫XXX。我是2015年毕业于西安欧亚学院。之前有过两份工作经验。第一份工作是在国翼天龙有限公司负责电子印章管理系统的开发,包括前后台开发。主要是针对于实体印章不能解决跨域问题为目的进行的开发。用到的前端技术是miniuiandjquery,后台技术是java+cxf。我的第二份工作是德森特有限公司,主要负责资产管理系统的前端开发,针对的客户是银行或者医院等他们的机房。用的前台框架是angularandbootstrap,我做了资产管理系统,资产上架,下架,以及资产维护系统。资产巡检系统做了一半移交给了其他同事。

这是我的介绍,谢谢

2、英文的自我介绍

Hello:mynameisXXX.IgraduatedfromXi'anEurasiaUniversityin2015.Thereweretwoworkingexperiencesbefore.Thefirstjobistodeveloptheelectronicsealmanagementsystem,includingthefrontandbackstagedevelopment,atthenationalDragonCompanyLimited.Thedevelopmentismainlyaimedatthefactthattheentitysealcannotsolvecrossdomainproblems.ThefrontendtechnologyusedisminiuiandjQuery,andthebackgroundtechnologyisjava+CXF.Mysecondjobisdersonlimited,whichismainlyresponsibleforthedevelopmentofthefrontendoftheassetmanagementsystem,andtheclientsaretheirbanksorhospitals.Thefrontframeusedisangularandbootstrap.Ihavemadeanassetmanagementsystem,assetshelves,downstairs,andassetmaintenancesystem.Halfoftheassetinspectionsystemwashandedovertoothercolleagues.Thisismyintroduction.Thankyou.

1、闭包和立即执行函数的概念,关系,区别

1、闭包:函数内部的函数本质上,闭包就是将函数内部和函数外部链接起来的桥梁。闭包可以看作是函数内部作用域的一个接口

用处:一、读取函数内部的变量,二、让这些变量始终保持在内存中,使得诞生环境一直存在。闭包使得内部变量记住上一次调用时的运算结果。三、封装对象的私有属性和私有方法,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制回收

2、立即执行函数:以圆括号包裹的声明并马上调用的匿名函数

用处:不用为函数命名,避免全局变量被污染。二、创建一个独立的作用域,可以封装一些内部外部无法读取的私有变量

3、关系:都是特殊的函数

4、区别:立即执行函数只能执行一次,闭包会始终在内存中所以可以重复调用

2、作用域:指的是变量存在的范围。js中只有两种作用域,分为全局作用域[变量在整个程序中一直存在,所有地方都可以读取]和函数作用域[变量只在函数内部存在]

全局变量可以在函数内部读取

局部变量无法被函数外部读取

2、eval命令:把字符串解析成js语句执行

3、promise:

1、异步操作解决方案,充当异步操作和回掉函数之间的中间。不必一层层的嵌套回调函数。Promise是一个对象,从它可以获取异步操作的消息。Promise提供统一的API,各种异步操作都可以用同样的方法进行处理,promise是一个许诺,是对未来事情的承诺,承诺不一定能完成,但是无论如何都会返回结果

2、好处:1、只有三种状态padding(进行中)resolved(已成功)failed(已失败)2、只能从padding----》resolvedpadding----->failed状态发生改变则不可逆转。将异步操作以同步的流程表达

3、缺点:一旦开始执行,不知道进展到哪个阶段,无法取消2、如果不设置回掉函数,promise内部抛出的异常无法得知

4、一般用在读取文件的时候

4、同源策略,跨域,解决方式

1、同源策略:是指一段脚本只能读取来自同一来源的窗口和文档的属性,这里的同一来源指的是主机名,协议和端口号的组合

2、跨域问题是有js中的语言安全限制中的同源策略造成的,更多时候是出现在需要用ajax获取数据时

3、解决方式:jsonp,iframe,window.name,服务器上设置代理页面,postMessage

1、使用跨域资源共享

2、使用jsonpjsonwithpadding填充式json包含两个部分组件,回调函数和数据回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的json数据。动态创建script标签,回调函数

5、babel是将es6编译成es5的语法解释器

ES6代码输入==》babylon进行解析==》得到AST

==》plugin用babel-traverse对AST树进行遍历转译==》得到新的AST树

==》用babel-generator通过AST树生成ES5代码

6、css3的新特性

新增css伪类选择器,圆角,弹性布局,阴影和反射,文字阴影文字渲染,旋转,定位倾斜动画多背景

7、不确定数量的li进行插入dom用css3的特性怎么实现

Nth-child(n):是一个伪类选择器,代表n传递几个就生成几个child

:nth-child(n)选择器匹配属于其父元素的第N个子元素,不论元素的类型。不管是不是同一个类型,所有子元素按照自然数去数

8、圣杯布局和双飞翼布局

9、居中div、

1、水平居中

div{
Width:200px;
Margin:0 auto
}

2、让绝对定位的div居中

Div{
Postion:absolute;
Width:300px;
Height:300px;
Margin:auto;
Top:0;
Left:0;
Bottom:0;
Right:0;
Background:red;
}

3、水平垂直居中一

Div{
Postion:absolute;
Width:500px;
Height:300px;
Border:2px solid red;
Top:50%;
Left:50%;
Margin:-150px 0 0 -250px//外边距是自身宽高的一半
}

4、水平垂直居中二

Div{
Postion:absolute;
Width:500px;
Height:300px;
Border:2px solid red;
Top:50%;
Left:50%;
Transform:translute(-50%,-50%)
}

5、水平垂直居中三

.fatherdiv{
Display:flex;
Align-items:center;  //垂直剧中
Justify-content:center;//水平居中
}
.childdiv{
Width:100px;
Height:100px;
Border:2px solid red 
}

10、消除一个数组中的重复元素去重方法

1、jquery的方法$.unique()

2、自己写方法

Function(arr){

LetnewArr=[]

For(leti=0;i<=arr.length;i++){

If(newArr.indexOf(arr[i])!==-1){

newArr.push(arr[i])

}

}

}

11、varletconst什么时候用let const

1、const定义的是常量不可以更改而且必须初始化

2、Var变量可以修改,如果不初始化会输出undefined

3、let是块级作用域,只在let声明的代码块中有效

12、http请求get和post的区别

1、get的参数是拼接在url后面post的参数是放在虚拟载体里面

2、Get大小限制比较小

3、Post相对能安全些

4、应用不同,get是只需要请求。Post是提交数据之类的

13、Position有几种值,分别是以谁为基准定位,会不会脱离文档流

1、static没有定位,元素出现在正常流

2、Relative相对定位相对于正常位置

3、Fixed固定定位相对于浏览器窗口进行定位。脱离文档流

4、Absolute绝对定位相对于static定位以外的第一个父元素进行定位,脱离文档流。这个定位其他盒子和其他盒子的文本都会无视他,不会让出位置

5、inherit从父元素集成position属性的值

6、Float:浮动定位。脱离文档流。其他盒子看不见浮动的元素,但是其他盒子里的文本看的见,文本会为这个元素让出位置。

7、父div嵌套子div子divfloat定位之后,父div高度没有了。是因为子div脱离了文档流,父div没有内容撑开他的高度了。所以是0

14、ajax请求是什么好处

1、Ajax异步传输+js+html异步就是在向服务器发送请求的时候,不必等结果,可以同时做其他的事情

2、步骤:

1、创建XMLhttpRequest对象,异步调用对象

3、创建一个新的http请求,执行该请求的方法,url,验证信息

4、设置相应http请求状态变化的函数

5、发送http请求

6、获取异步调用返回的数据

7、使用js和dom实现局部刷新

4、优点:局部刷新,用户体验好,省流量

5、缺点:后退按钮无效。多个请求同时触发时,回调时间不确定

15、Cssflex弹性盒子布局

16、Js怎么定义函数

1、Functiona(){}

2、Vara=function(){}

17、Js怎么实现继承

1、构造继承

2、原型继承

3、实例继承

4、拷贝继承

18、jS创建对象的方式

1、对象字面量的方式a={}

2、定义一个无参数的构造函数,实例化构造函数然后添加属性

3、定义一个有参数的狗在函数,在构造函数内部用this进行属性的定义

4、用原型进行创建

5、定义并创建对象的实例

6、使用函数来定义对象,然后创建新的对象实例

19、作用域链

1、全局函数无法查看局部函数的内部细节,但是局部函数可以查看上层的函数细节

2、当需要从局部函数查找某一属性或者方法时,如果当前作用域没找到就会追溯到上层作用域中查找,直至全局函数,这种组织形式就是作用域链

20、谈谈this对象的理解

1、This对象总是指向函数的直接调用者

2、如果用new关键字,this指向new出来的那个对象

3、在时间中this指向出发这个事件的对象。

21、nullundefined

1、null:值是空,没有值

2、Undefined:表明声明了一变量但是没有初始化赋值

22、事件是什么?事件冒泡?阻止事件冒泡?事件绑定的几种方式?

1、事件:网页中的某个操作出发的行为

2、事件冒泡:具体元素上触发的事件逐级向上广播

3、事件处理机制:ie是事件冒泡,火狐同时支持捕获事件和冒泡事件

4、当前事件的停止出发:event.preventDefault阻止元素发生默认行为

5、阻止冒泡,阻止当前事件传播,停止事件:event.stopPropagation()

6、事件绑定的几种方式:

1、直接诶在元素上添加事件属性,绑定事件回调函数

ex:<buttonid=’1’onclick=’click()’>save</button>

2、Js获取dom元素通过js给dom绑定事件document,getElementById(‘#id’).on(‘click’,function(){})

3、js获取到dom元素之后通过addEventListener函数绑定事件

Ex:document,getElementById(‘#id’).addEventListener(‘click’,function(){})

23、事件委托

利用事件冒泡原理,让自己所触发的事件,由父元素代替执行

24、如何判断一个对象是否属于某个类

AinstanceofObject

25、jquery一个对象可以同时绑定多个事件,怎么实现

1、多个事件同一个函数

$(‘divid’).on(‘click mouseover’,function(){})

2、多个事件不同函数

    
$(‘divid’).on({
Click:function(){},
Mouseover:function(){}
})

26、css盒子模型

1、盒子包括contentmarginpaddingborder

2、Ie的怪异盒子是content包含了padding+border

3、W3c标准是四部分分离

27、什么是语义化html

1、直观的认识标签

27、spilt和join的区别

1、spilt将字符串按照规则拆分成数组

2、Join将数组合并成

28、pop()push()shift()unshift()

1、pop()尾部删除push()尾部添加

2、Shift()头部删除unshift()头部添加

29、一次完整的http事务是怎样的过程?

1、域名解析

2、发起tcp的三次握手

3、建立TCP链接之后发起http请求

4、服务端响应http请求,浏览器得到html代码

5、浏览器解析html代码,并请求html代码中的资源

6、浏览器对页面进行渲染呈现给用户

30、indexOfcharAt

1、Arr.indexOf(‘a’)返回当前数组中元素a的下标

2、String.charAt(index)返回指定位置的字符

31、cookielocalStoragesessionStorage

1、Cookie:浏览器端的缓存,一般较小,4K

2、localStorage:客户端的缓存,给每个变量位置一个独立的存储区域,在数据被清楚之前一直存在5M后者更大

3、sessionStorage:会话存储变量。除非浏览器被关闭,会话结束.时间半小时

32、怎样添加删除、移动、复制、创建和查找节点

1、创建新节点

CreateDocumentFragment()//创建一个dom片段

createElement()//创建一个dom元素

createTextNode()//创建一个文本节点

2、方法

AppendChild()//添加

RemoveChild()//删除

ReplaceChild()//替换

insetBefore()//插入

3、查找

GetElementById

getElementsByName//或者所有name属性值等于参数的元素

getElementsByTagName//通过标签名称

33、行内元素块元素

1、行内元素:ainputselectliimglabelspanbuttonarea

2、块元素:divuloltableh1-h6

34、js中有一函数执行对象查找时永远不会去找原型

1、hasOwnProperty()

35、js本地对象内置对象宿主对象

1、本地对象arrayobjregexp等可以new实例化的对象

2、内置对象指的是gloadMath等不能被实例化的

3、宿主对象值得是浏览器自带的documentwindow等

36、js为什么要被写在底部,何时加载它

1、原因:性能优化。web页面性能优化其精髓就是——将浏览器基本无序的资源加载请求用js有序地控制起来,包括js本身。

1、js的加载会阻塞其他内容的加载,如果网速慢或者js复杂会有长时间的页面空白,用户体验不好

2、Js一般会对dom树进行操作,放页尾dom树已经完成,可以直接执行js

37、前端优化方式有哪些?

1、优化css性能

2、减少外部http请求

3、压缩cssjs和html

4、优化图片

5、使用轻量级框架

38、js的typeof返回的数据类型有哪些?

1、Objectnumberstringfunctionbooleanundefined

39、Js移除数组

1、lodash-.remove()返回的是删除掉的数组

2、Js原生的删除方法:Splice

40、H5原生的保存localstrage

1、webStroge分为两个接口:localStrage,sessionStrage

四个函数:setItem,getItem,removeItem,clear

1、localStrage:域内安全,永久保存,即客户端或浏览器中来自同一域名的所有页面都可访问localStorage数据。除非删除数据否则永久保存。但客户端和浏览器之间的数据相互独立

2、sessionStrage:会话控制,短期保存。浏览器关闭之后会清除数据

41、Css3的新特性?

1、选择器

2、盒模型

3、背景和边框

4、文字特效

5、2D/3D转换

6、动画

7、多列布局

8、用户界面

42、H5的新特性用过哪些?

1、用于绘画的canvas元素

2、用于媒介回放的video和audio元素

3、对本地连线存储的更好的支持

4、新的特殊内容元素ex:articlefooterheadernavsection

5、新的表单控件ex:calenderdatetimeemailurlsearch

6、新元素,新属性,完全支持css3,video,audio,2D/3D制图,本地存储,本地SQL数据,Web应用

项目中的问题

43、资产管理系统是给谁做的?

银行或者医院的机房

44、资产管理系统里面的文件导出是怎么做的?

1、XLSX.utils。先读取book,遍历sheet,convert2binary

45、资产管理系统的图表用echarts画了哪些?

1、柱状图

2、折线图

3、饼图

46、SpingBoot使用过么?

47、Array数组的几种常用方法区分

1、Split:用于将array数组按照分隔符规则分割成字符串数组

2、Splice(start,num):用于删除,返回被删除的数组。Start是开始删除的下标,num:指的是删除个数,如果是0那就是一个都没有删除

3、Slice:截取指定数量长度的元素,含头不含尾。

4、Replace:将数组中的一些元素替换成另外的元素[用正则表达式]

48、array数组的reducereduceRight

1、reduce接受一个函数作为累加器,数组中的每个值从左到右开始合并,最终为一个值

2、Arr.reduce(callback,[initValue]):

1、callback包含四个参数

1、previousValue:上一次计算的值

2、currentValue当前需要被参与计算的值

3、Index:数组中元素的下标

2、Initvalue:作为第一次调用callback的一个参数.如果initValue第一次传入并且有值则previousValue取initValue的值。如果没有传入初始值,则previousValue的值是数组中第一个元素的值

3、用处:

1、求数组中的最大值

2、将嵌套数组扁平化成单层数组

4、reduceRight:这个方法是将数组从右到左进行累加计算。和reduce方法计算方向不同

51、h5全局新属性

1、accessKeychar使用键盘上哪个快捷键[字母]定位到元素上

2、contenteditabletrue/false对于以前的展示元素规定是否编辑比如span,label,p,div

3、contextMenu:规定元素的上下文菜单,配合menu使用[只有火狐浏览器支持这个标签].类似于列表数据中鼠标点击到哪里详细信息的小框展示

4、dir:文字展示方向ltr左到右rtl右到左

5、draggabletrue/false/auto是否允许拖动元素

6、hidden:隐藏元素

7、title:对元素的描述鼠标指针的提示信息类似于img的alt

52、h5的离线缓存怎么使用工作原理是什么?

1、是什么:h5的离线缓存是指用户没有与因特网连接时,可以正常访问站点或者应用。在用户和因特网建立链接之后,更新用户机器上的缓存文件

2、原理:h5的离线缓存基于一个新建的.appcache文件的缓存机制,不是存储技术。通过这个文件上的解析清单离线存储资源,这些资源一旦被存储下来,当用户网络处于离线状态时,浏览器会通过被离线缓存的数据进行页面展示

3、使用

1、在页面头部像下面一样加入一个maniFest的属性

2、在cache.manifest文件中编写需要离线存储的资源

3、在离线状态时,通过操作widow.appliocationCache进行需求实现

53、link和@import的区别

1、link属于xhtml标签@import是由css提供

2、页面加载时link会被同时加载,而@import引用的css是在页面加载结束后加载

3、link是xhtml标签,没有兼容性。@import只有ie5以上才能识别

4、link方式样式的权重高于@import的权重

54、src和href的区别

1、href:指向网络资源所在位置,建立和当前元素之前的链接用于超链接

2、Src:指向外部资源,一般会将指向的资源下载并应用到文档内

55、document.onload和document.ready的区别

1、document.onload结构和样式加载完才执行js

2、document.ready图片等资源没有被加载完成的时候就执行js

56、多重样式优先级:内联样式》内部样式》外部样式》浏览器默认样式

57、Displayvisibility

1、display:none隐藏之后元素不会占用为隐藏之前的位置,没有隐藏之前的空间会从页面布局中消失

2、Visibility:hidden影藏之后仍然会占用位置和控件,影响布局

58、我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡。会执行几次事件,会先执行冒泡还是捕获?

1、其他元素捕获阶段事件----本元素代码顺序事件----其他元素冒泡事件

59、js的原型怎么理解

1、当函数对象本身的属性或方法与原型的属性或方法同名的时候:

  • 1、默认调用的是函数对象本身的属性或方法
  • 2、通过原型增加的属性或方法存在
  • 3、函数对象本身的属性或方法的优先级高于原型的属性或方法

2、原型是用来构建对象的。原型相当于对对象的一种描述。Es6中针对原型链可以构造类。继承的时候用原型

3、闭包用来实现面向对象,封装私有变量和方法。

60、cssdisplay属性有几种值分别是什么

1、none:不显示,这个元素直接消失,后面的元素会直接上来填上位置。而visibility:hidden是隐藏了元素但是元素所占的位置还在

2、block:块元素元素前后会有换行符

3、inline:行元素[也叫内联元素],前后没有换行符。Inline元素不会独占一行,。多个相邻的行元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随着元素的内容进行变化。行元素设置宽高属性无效

4、inline-block:行内块元素,将对象呈现为inline对象,将对象的内容作为block对象呈现。基于block的宽高属性又有inline的同行特性

61、怎么动态创建btn并且绑定事件

1、获取需要动态创建的元素的父元素,

2、$(父元素).on(‘事件名’,’子元素名称,function(){})

62、js是单线程还是多线程?为什么

1、单线程、因为js作为浏览器脚本而言,主要用途就是和用户互动操作dom

2、单线程意味着所有的任务需要排队,前一个任务结束才后执行后一个任务。如果前面任务阻塞,则后面的会一直等着。在队列中间加入定时器之后,等待所有任务执行完毕之后才会执行定时器

3、js分为同步任务和异步任务。同步任务值得是在主线程上排队执行的任务。只有前一个执行完毕才执行下一个。异步任务指的是不进入主线程,进入任务队列,只有任务队列通知主线程,某个异步任务可以执行了该任务才会进入到主线程执行。

63、settimeout延时参数设为0和不写这个函数直接执行方法体有什么区别?

1、设置成0之后可以改变任务执行的先后顺序,延迟该任务发生,使他异步执行

2、setTimeout:指定时间间隔之后执行一次代码

setInterval():执行时间间隔后不停的执行代码

64、jquery对象和dom对象之间的相互转换

1、jquery对象转为dom对象

1、var$v=$(‘#id’)得到jquery对象varv=$(‘#id’)[0]//得到dom对象

2、var$v=$(‘#id’)得到jquery对象varv=$(‘#id’).get(0)//得到dom对象

2、dom对象转为jquery对象

1、varv=document.getElemntByID(‘id’)//得到dom对象var$v=$(v)//转成jquery对象

65、select的几种实现方式

1、inputul组合需要给外部div设置为相对定位。Ul所在的子div设置为绝对定位

2、h5新特性inputlist=‘id’<datalistid=’id’></datalist>

3、原生select标签

66、jsdom和bom

1、bom是浏览器对象模型,主要用来获取或者设置浏览器的属性,行为。比如新建窗口,获取当前页面的地址,浏览器操作历史,分辨率,。浏览器版本等

2、dom是文档对象模型。用来获取或设置文档中标签的属性。例如获取input表单的值。操作对象是文档,html文档,和浏览器没有直接关系

67、ie的事件冒泡和标准的dom事件冒泡停止默认行为及阻止事件传播

1、ie

Window.event.cancalBubble//停止冒泡

Window.event.returnValue=false//阻止事件的默认行为

2、标准dom

event.stopPropagation()//阻止事件传播

Event.preventDefault()//取消事件的默认行为

68、angular依赖注入是什么

69、Pc开发难点

70、Js的面向对象和java的面向对象有什么区别

1、js中的this指的是函数调用者

2、java中的this指的是当前对象

71、静态语言java和动态语言js的区别?哪个好?

JsJava

动态语言弱类型静态语言强类型

解释性语言先编译后解释

直接在浏览器上可以看到源码不能

基于原型和原型继承的面向对象基于类和继承

72、js怎么兼容不同的浏览器的

1、优雅降级:先开发一套完整的功能,然后在低版本浏览器上向下兼容

2、渐进增强:在低版本上开发基本的功能,然后针对不同的浏览器追加功能

1、获取非行间样式creentStyle/getComputerStyle。CurrentStyle之兼容ie其他浏览器不能用。解决方案,同时使用getComputerStyle,可以兼容谷歌等

2、不同浏览器的标签默认的外补丁和内补丁不同。比如str[i]需要替换成str.charAt(i)

3、不同浏览器对dom的支持程度。Document.getElementByid(‘ul’).childNodes.length除ie外其他浏览器对于childNodes会把文本节点和元素节点混淆。用.children.length可以解决

73、Jquery中的$是什么

1、$是jquery的专用的特殊符号,所有jquery函数的调用都是从$开始的

2、$()表示一个选择器,括号里面写想选中的dom元素

3、$(document)是一个选择器,选中的是整个html所有元素的集合

4、$(function(){})是document.ready事件,在所有元素准备完毕之后载入页面执行本方法

74、Css3怎么兼容不同的浏览器的

1、利用csshack去兼容及针对不同的浏览器开发不同的css代码

2、-moz-:代表火狐浏览器

3、-ms-:代表ie浏览器

4、-webkit-:代表谷歌浏览器

5、-o-:代表opera浏览器私有属性

75、Canvas中的函数有了解过么

1、getContext():渲染上下文和会话、

2、FillStyle:样式

3、FillRect:画矩形

4、BeginPath()

76、小程序开发了解过么

77、Angular2

78、Vue

79、移动端如何兼容不同的屏幕

1、@media针对不同的屏幕写不同的样式

2、写js让屏幕自适应,

80、自己有没有用原生的js封装过什么小组件

81、Transfrom实时动画的帧动画和有什么区别

1、实时动画采用各种算法来实现运动物体的运动控制

2、逐帧动画在时间帧上逐祯绘制帧内容。灵活性比较大,很适合表现很细腻的动画。缺点是增加制作负担并且最终输出的文件量很大

82、js对象的遍历

1、forin遍历对象本身和继承的可枚举属性

2、Object.keys(obj):返回一个数组,包括对象自身的所有可枚举属性。不包含继承的

3、Object.getOwnPropertyNames(obj):返回一个数组,包含对象自身的所有属性。包含不可枚举属性

4、Object.getOwnPropertySymbols(obj):返回一个数组包含对象自身的所有symbol属性

5、Reflect.ownKeys(obj):返回一个数组,包含对象自身的所有键名。包含symbol,可枚举和不可枚举

6、遍历次序规则:

1、首先遍历所有的数值键,按照i升序排列

2、其实遍历字符串

3、最后遍历symbol

83.当前主流的五大浏览器及内核

1、IE浏览器内核:trident内核,也是俗称的ie内核

2、fireFox浏览器内核:Gecko内核,俗称fireFox内核

3、chrome浏览器内核:以前是webkit内核。现在是blink内核

4、safari内核:wbkit内核

5、Opera浏览器内核:webkit内核

84、AMDCMD

1、AMD异步模块定义提前执行推崇依赖前置

2、CMD模块定义延迟执行推崇就近

85、es6的新特性

1、letconstlet是定义了块级作用域。Const是常量

2、解构赋值

3、箭头函数

4、类解决了原型对象比较绕的问题

5、forof值遍历

6、生成器

7、Promises

86、jquery的源码看过吗?能不能简单概况一下它的实现原理

1、原理就是封装了一些常用的操作

87、jquerybinddelegateon三个函数有什么区别

1、bind需要是已经存在的dom节点绑定事件

2、delegate(dom元素,事件类型,数据,回调函数):用于事件委托,更精确更小范围的使用事件代理

3、on(事件类型,dom元素,数据,回调函数):前两个参数和delegate的参数调换了位置。dom元素是可选项。不传递dom元素的话是.on前面的元素自己,传递的话功能和delegate一样

88、css3的动画怎么设定

1、animation-name指定要绑定到选择器的关键帧的名称

2、animation-duration动画指定需要多少秒完成

3、animation-timeing-function设置动画将如何完成一个周期

4、animation-delay启动延迟

5、animation-iteration-count动画播放次数

6、animation-direction是否反向播放动画

7、animation-paly-state动画是否在运行或已暂停

89、boostrap的响应式布局

1、Boostrap退出了移动端设备优先的一种不惧方式。即在头部加上viewport视口。对内容包裹一个.container容器

2、栅格系统xssmmd

90、string.match和string.search都是去字符串中匹配字符串。有什么区别

1、string.match是用来检查0位的字符串有没有匹配上。如果有,就返回匹配上的字符串的索引。如果没有就返回none

2、string.search不管0位是否匹配,会扫描整个字符串,只要是有匹配就返回

91、CSRFCORS

1、CSRF:跨域攻击crosssiterequestforgery伪造用户在已登录的web应用程序执行非本意的操作的攻击方法

2、CORS:服务器端跨域共享crossoriginresourcesharingaccesscontrolallowsorign

92、arr

1、tostring:string.返回传统的字符串,全世界都能用

2、tolocalstring:string.返回机器本地环境的字符串,只有当前环境能用

3、valueof:object。返回的是这个对象本身的值

93、定义大于1024小于1036屏幕的css代码

1、@mediascreen(min-device-width:1024px)and(max-width:1036px)

2、Device-width:设备屏幕分辨率的宽度

3、Width:浏览器窗口的宽度

94、iframe的缺点

1、iframe会阻塞主页面的onload事件

2、会影响页面的并行加载

3、搜索引擎的检索程序无法解读这种页面。不利于seo

95、Angular单元测试

1、Karma

2、jasmine

96、Angulardigest生命周期函数

主流框架

React

1、当你调用setState的时候,发生了什么事

1、setState方法调用时react就会重新调用render方法来重新渲染组件,setState通过一个队列来更新state,当调用setstate方法的时候将需要更新的state放入到这个状态队列中,这个队列会批量跟新state

2、在react中element和component的区别

1、Element:就是ui对象

2、Component:是一个函数或者一个类。它可以接受输入并通过jsx返回一个reactElement

3、什么时候用功能组件functioncomponent?什么时候用类组件classcomponent?

1、如果组件具有状态或者生命周期方法,请使用class组件

2、其余情况使用功能组件

4、什么是react的refs为什么他们很重要?

1、refs是一系列元素ref的集合。ref类似于jquery里面的id,唯一标识

5、react的keys是什么?为什么他们很重要

1、keys可以帮助react跟踪哪些项目已更改,添加或从列表中删除

6、受控组件和不受控组件的区别

1、受控组件:react控制的组件,也是表单数据的唯一真理

2、不受控控件:表单数据由dom处理,而不是react组件

7、react中那个生命周期会发出ajax请求为什么

1、ajax请求发生在componentDidMount生命周期中。

8、shouldComponentUpdate应该做什么

1、手动调用组件更新状态

9、prop.children为什么提倡使用react自己的api而不是用jquery的api

1、是因为prop.children有时候只有一个元素是个object有时候是多个元素,。是个数组。在react中对于这些封装了使得它忽略了chilren到底是对象还是数组,这时候就不会在.map的时候就不会抛错了

10、描述事件在react中的处理方式

1、react将单个事件监听器监听在了顶部,所以不关心更新的到底是哪个具体的dom

11、createElementcloneElement

1、createElement:是jsx被加载到的,是react用来创建reactElement

2、cloneElement:用于克隆元素病传递新的props

12、可以选择性传递给setState的第二个参数是什么

1、是一个回调函数。可以用来验证状态是否更新成功

相关推荐