2019前端经典面试题

2019前端经典面试题
2019前端经典面试题

1,html和xml有什么区别

html是超文本标记语言 xml是可扩展标记语言

html语法宽松,xml语法严谨

html使用固有标记,xml没有固有标记

html标签预定义,xml标签可扩展,可定义

html是用来显示数据的,xml是用来描述和存储数据的

2,css有哪几种选择器权重的优先级

第一种为属性选择器

第二种为 id选择器

第三种为 class选择器

第四种为伪类选择器

第五种是后代选择器

第六种是标签选择器

第七种是通用选择器

第八种是伪元素选择器

1. 第一等:代表内联样式,如: style=””,权值为1000。

2. 第二等:代表ID选择器,如:#content,权值为0100。

3. 第三等:代表类,伪类和属性选择器,如.content,权值为0010。

4. 第四等:代表类型选择器和伪元素选择器,如div p,权值为0001。

5. 通配符、子选择器、相邻选择器等的。如*、>、+,权值为0000。

6. 继承的样式没有权值。

3,网页有哪几部分组成

结构层:html

表示层:css

行为层:js和dom

4,一个200*200的div在不同分辨率屏幕上下左右居中,用css实现

Div{

position:absolute;

width:200px;

height:200px;

top:50%;

left:50%;

margin-top:-100px;

margin-left:-100px;

}

5,阐述清楚浮动的几种方式

第一种父级div定义高度height 适合高度固定的布局

第二种父级div定义 overflow:hidden

第三种结尾处加空标签 clear: both 让父级自动获取高度

第四种父级div定义伪类:after 和 zoom

6,解释css sprites,如何使用

CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。

CSS Sprites为一些大型的网站节约了带宽,让提高了用户的加载速度和用户体验,不需要加载更多的图片

7,如何用原生js给一个按钮绑定两个onclick事件

Var btn1 =document. getElementsById(“btn”);

(“click”,”hello1);

(“click”,”hello2);

function hello1(){

alert(“hello1”);

}

function hello2(){

alert(“hello2”);

}

8, 拖曳会用到哪些事件

Dragstart

Dragenter

Dragover

Dragleave

Drag

Drop

Dragend

9, 请列举jQuery中选择器

1,基本选择器

ID,class,元素之类的

2,层级选择器

返回的是jQuery对象才可以进行的链式操作

如后代元素,子元素,兄弟元素,相邻元素

3,过滤选择器

基本过滤, 内容过滤, 可见性过滤, 属性过滤, 子元素过滤和表单对象属性过滤选择器

10,JavaScript中有哪些定时器,他们的区别和用法是什么SetTimeout 只会执行一次

SetInterval 会一直重复执行

方式都为:settimeout(函数,时间)

11,请描述一下cookies sessionstorage 和localstorage 区别

相同点:都储存在客户端上

不同点:1 储存大小

Cookies 数据大小不能超过4k

Sessionstorage和Localstorage 比cookies大,可以达到5m或更多

2有效时间

Localstorage 储存持久数据,浏览器关闭后也不会丢失,除非主动删除数据

Sessionstorage 数据在关闭游览器之后自动删除

Cookies 设置的cookies过期时间之前一直有效,即使窗口和游览器关闭。

3数据与服务器之间的交互方式

Cookies的数据会自动的传递到服务器,服务器端也可以写cookies到客户端

Sessionstorage和localstorage 不会上传到服务器,仅在本地保存

12,计算一个数组arr所有元素的和

alue;来获取输入框中的值

function sum2(){

var arr1=[1,2,3,4,5,6,7,8,9];

var sum1=0;

for (var i=0;i<=;i++) {

if (typeof arr1[i]=="number") {

sum1+=arr1[i];

}

}

(sum1);

}

13,编写一个方法去掉数组里的重复内容var arr=[1,2,3,4,5,1,2,3]

function arr1(){

var arr2 = [1,2,3,4,5,1,2,3];

var s= [];

for(i= 0;i<;i++){

if(arr2[i]) == -1){

(arr2[i]);

}

}

(s);

}

14,和innerHTML的区别是什么

是直接写入到页面的内容流,如果之前没有调用。那么浏览器会自动调用open,页面被重写

innerHTML将内容写入某个DOM节点,不会导致页面全部重绘。精准。

15,ajax的步骤

Ajax 异步JavaScript和xml 能够局部刷新网页数据而不是重新加载整个网页

第一步,创建xmlhttprequest对象,var xmlhttp = new XmlHTTPrequest();Xmlhttprequest对象用来和服务器交换数据

Var xhttp;

If{

esize(function(){

$(".myblock").css({

position: "absolute",

left: ($(window).width() - $(".myblock").outerWidth())/2,

top: ($(window).height() - $(".myblock").outerHeight())/2 });

});

此外在页面载入时,就需要调用resize()方法

$(function(){

$(window).resize();

});

19,三个盒子,左右定宽,中间自适应的方法有几个

第一种方法:左右采用浮动中间采用margin-left和margin-right的方法

代码:

11

33

22

第二种方法:左右采用绝对定位,中间采用margin-left和margin-right

代码:

11

33

22

第三种方法负margin值

main content

left content

id="right">

right
#main {

float: left;

width: 100%;

}

#mainContainer {

margin: 0 230px;

height: 200px;

background: green;

}

#left {

float: left;

margin-left: -100%;

width: 230px}

#right {

float: left;

margin-left: -230px;

width: 230px;

}

#left .inner,

#right .inner {

background: orange;

margin: 0 10px;

height: 200px;

}

20,js有几种数据类型其中基本数据类型有哪些

基本数据类型有 Boolean,undefined,null,number,string

应用类型有 object,array,function

21,undefined和null的区别

Null 代表空值,代表一个空对象指针,一个特殊的对象值

Undefined 是未定义,类型也是undefined

22,http和https有什么区别如何灵活运用

Http是http运行在TCP之上,传输内容是明文,客户端和服务器无法验证对方身份。HTTPS是http运行在SSL/tls之上,SSL/tls运行在TCP上,所有内容都是经过加密。加密采用对称加密,但是秘钥用服务器证书进行非对称加密。服务器和客户端都是可以互相验证身份。

23,常见的Http状态码

2开头,请求成功,表示成功处理了请求的状态代码

3开头,请求重定向,表示完成请求,需要进一步操作,一般是重定向

4开头,请求错误,表示请求出错,妨碍了服务器的处理

5开头,这些状态码表示服务器在尝试处理请求时发生内部错误,服务器本身出错而不是请求出错

24,如何进行网站性能的优化

原因:用户角度加载速度提高,更好的交互体验

服务商角度减少页面请求,降低带宽,节省资源

方法:1,JavaScript优化和打包

2,按需加载资源

3,在使用DOM操作库时用上array-ids

4,缓存

5,启用HTTP/2

6,应用性能分析

7,使用负载均衡方案

8,同构

9,使用索引加快数据库查询

10,使用更快的转译方案

11,避免因JavaScript和css的使用而阻塞渲染

12,图片编码优化

25,react和vue有哪些不同,说说你对这两个框架的看法相同点:都支持服务器渲染

都有virtual DOM,组件化开发,通过props参数进行父子组件数据的传递,都实现了webComponent规范

数据驱动视图

都支持native方案,react的react native 和vue的weex

不同点:react严格上只针对MVC的view层,vue则是mvvm模式

Virtual DOM不一样,vue会跟踪每一个组件的依赖关系,不需要重新渲染整个组

件树,而对于react来说,每次应用状态被改变,全部组件都会被重新渲染,所以react 需要shouldComponentUPdate这个生命周期函数来进行控制。

组件的写法不一样。。。

数据绑定,vue是双向的,react是单向的

State对象在react应用中不可变的,需要使用setstate方法更新状态,在vue 中state对象对象不是必须的,数据由data属性在vue对象中管理

26,什么是mvvm mvc 有什么区别,原理

1,MVC(model-view-controller)

MVC是比较直观的架构模式,用户模式->view(负责接收用户的操作输入)->controller(业务逻辑处理)->view(将结果反馈给view)

2,MVVM(model-view-viewmodel)

将”数据模型数据双向绑定”的思想作为核心,因此model和view没有什么关系,之后痛过viewmodel进行交互,而model和viewmodel之间的交互是双向的,因此数据的视图的变化会同时修改数据源,而数据源的数据变化也会立刻反应view。

27,px和em的区别

Px表示像素,是一个绝对单位,不会因为其他元素而改变

Em表示相对于父元素的字体大小,em是相对单位,会受到其他元素的影响

28,优雅降级和渐进增强

渐进增强(向上兼容):一开始就针对低版本浏览器进行构筑界面,完成基本功能,然后在针对高级浏览器进行效果,交互,追加功能达到更好的体验

优雅降级(向下兼容):一开始就构建站点的完整功能,然后针对浏览器测试和修复。

29,eval()的作用

把字符串参数解析成JS代码并运行,并返回执行的结果;

例如:eval(“2+3”);var ul = ('parentUl');

2. =function (event) {

3. var e = event||,

4. source = || ; if == "li") { alert;

7. }

8. stopPropagation(e);

};

10. function addElement() {

11. var li = ('li');

12. ="我是新孩子";

13. (li);

14. }

34,css样式覆盖规则

规则一:由于继承而发生样式冲突时,最近祖先获胜(就近原则);

规则二:继承样式和直接指定的样式冲突时,直接指定的样式获胜

规则三:直接指定样式发生冲突时,样式权值高的获胜;

规则四:样式权值相等时,后者获胜。

规则五:!important的样式不被覆盖。

35,请简要描述margin重合问题以及解决方式

1,同向margin重叠

这时候重叠之后的margin值由发生重叠两片的最大值决定;如果其中一个出现负值,则由

最大的正边距减去绝对值最大的负边距,如果没有最大正边距,则由0减去绝对值最大的负边距。

解决方法:

(1)在最外层的div中加入overflow:hidden;zoom:1;(zoom这个属性是ie专有属性,除了设置或者检索对象的缩放比例之外,它还有可以触发ie的haslayout属性,清除浮动,清除margin重叠等作用。)

(2)在最外层加入padding:1px;

(3)在最外层加入:border:1px solid #000000;

2,异向重叠问题:

Float:left(ie6专属,或解决ie8+等浏览器的同向重叠问题)

36,position的值,relative\absolute\fixed分别相对于进行谁定位

Absolute:绝对定位相对于最近一级

Fixed:绝对定位相对于浏览器窗口或frame进行定位

Relative:相对定位相对于其在普通流的位置

Static:默认值没有定位

Sticky:粘性定位文档位置根据正常文档流计算得出

37,什么是闭包,如何使用,为什么使用

闭包就是在函数内定义一个函数。

优点:可以读取函数内部的变量这些变量的值始终保存在内存中

缺点:内存消耗大且容易造成内存泄漏闭包会在父函数外部,改变父函数内部变量的值38,请解释一下jsonp的工作原理,以及它为什么不是真正

的ajax。

Jsonp是一个简单的跨域方式;HTML中的script标签可以加载并执行其他域的javascript,于是我们可以通过script标记来动态加载其他域的资源

JSONP易于实现,但是也会存在一些安全隐患,如果第三方的脚本随意地执行,那么它就可以篡改页面内容,截获敏感数据。但是在受信任的双方传递数据,JSONP是非常合适的选择。AJAX是不跨域的,而JSONP是一个是跨域的,还有就是二者接收参数形式不一样

39,请解释一下JavaScript的同源政策。

同源政策规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。当两个域具有相同的协议,相同的端口,相同的host,那么我们就可以认为是相同的域。

40,怎样添加,移除,移动,复制,创建和查找节点

1,创建新节点

Createdocumentfragment() ind( "click", function( e ) {} );

(2),live

定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数;

语法:live(type, [data], fn);

特点:

(1)、live方法并没有将监听器绑定到自己(this)身上,而是绑定到了上了。

(2)、live正是利用了事件委托机制来完成事件的监听处理,把节点的处理委托给了

document,新添加的元素不必再绑定一次监听器。

(3)、使用live()方法但却只能放在直接选择的元素后面,不能在层级比较深,连缀的DOM 遍历方法后面使用,即$(“ul”").live...可以,但$("body").find("ul").live...不行;

实例如下:$( document ).on( "click", "#members li a", function( e ) {} );

(3),delegate

定义和用法:将监听事件绑定在就近的父级元素上

语法:delegate(selector,type,[data],fn)

特点:

(1)、选择就近的父级元素,因为事件可以更快的冒泡上去,能够在第一时间进行处理。

(2)、更精确的小范围使用事件代理,性能优于.live()。可以用在动态添加的元素上。

实例如下:

$("#info_table").delegate("td","click",function(){/*显示更多信息*/}); $("table").find("#info").delegate("td","click",function(){/*显示更多信息*/});

(4),on

定义和用法:将监听事件绑定到指定元素上。

语法:on(type,[selector],[data],fn)

实例如下:$("#info_table").on("click","td",function(){/*显示更多信息*/});参数的位置写法与delegate不一样。

说明:on方法是当前JQuery推荐使用的事件绑定方法,附加只运行一次就删除函数的方法是one()。

总结:.bind(), .live(), .delegate(), .on()分别对应的相反事件为:.unbind(),.die(), .undelegate(),.off()

43,浏览器的内核分别是什么

IE:trident内核

Firefox:gecko内核

Safari:webkit内核

Opera:现在blink内核

Chrome:blink内核

44,浏览器是如何渲染画面的

渲染的流程如下:

1,解析HTML文件,创建dom树

自上而下,遇到任何样式和脚本都会阻塞

2,解析css。优先级:浏览器默认设置<用户设置<外部样式<内联样式

3,将css和DOM合并,构建渲染树

4,布局和绘制,重绘和重排

45,css3新增了很多属性,一起分析一下新增的属性:

边框:

·border-radius:CSS3圆角边框。在 CSS2 中添加圆角矩形需要技巧,我们必须为每个

圆角使用不同的图片,在 CSS3 中,创建圆角是非常容易的,在 CSS3 中,border-radius 属性用于创建圆角。border:2px solid;

·box-shadow:CSS3边框阴影。在 CSS3 中,box-shadow 用于向方框添加阴影。box-shadow:10px 10px 5px #888888;

·border-image:CSS3边框图片。通过 CSS3 的 border-image 属性,您可以使用图片来创建边框。border-image:url 30 30 round;

背景:

·background-size:属性规定背景图片的尺寸。在 CSS3 之前,背景图片的尺寸是由图片的实际尺寸决定的。在 CSS3 中,可以规定背景图片的尺寸,这就允许我们在不同的环境中重复使用背景图片。您能够以像素或百分比规定尺寸。如果以百分比规定尺寸,那么尺寸相对于父元素的宽度和高度。

·background-origin :属性规定背景图片的定位区域。背景图片可以放置于content-box、padding-box 或 border-box 区域。

文字效果:

·text-shadow:在 CSS3 中,text-shadow 可向文本应用阴影。text-shadow:5px 5px 5px #FFFFFF;

·word-wrap :单词太长的话就可能无法超出某个区域,允许对长单词进行拆分,并换行到下一行:p{word-wrap:break-word;}

2D转换:

transform:通过 CSS3 转换,我们能够对元素进行移动、缩放、转动、拉长或拉伸。

·translate():元素从其当前位置移动,根据给定的 left(x 坐标)和 top(y 坐标)位置参数:transform:translate(50px,100px);值 translate(50px,100px) 把元素从左侧移动 50 像素,从顶端移动 100 像素。

·rotate():元素顺时针旋转给定的角度。允许负值,元素将逆时针旋转。transform:rotate(30deg);值 rotate(30deg) 把元素顺时针旋转 30 度。

·scale():元素的尺寸会增加或减少,根据给定的宽度(X 轴)和高度(Y 轴)参数:transform:scale(2,4);值 scale(2,4) 把宽度转换为原始尺寸的 2 倍,把高度转换为原始高x() 3D转换:

·rotateX():元素围绕其 X 轴以给定的度数进行旋转。transform:rotateX(120deg);

·rotateY():元素围绕其 Y 轴以给定的度数进行旋转。transform:rotateY(120deg);

过渡:当元素从一种样式变换为另一种样式时为元素添加效果。

动画:通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。

多列:

·column-count:属性规定元素应该被分隔的列数。

·column-gap:属性规定列之间的间隔。

·column-rule :属性设置列之间的宽度、样式和颜色规则。

用户界面:

·resize:属性规定是否可由用户调整元素尺寸。

·box-sizing:属性允许您以确切的方式定义适应某个区域的具体内容。

·outline-offset :属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓。

46,从输入url到显示页面,都经历了什么

1、首先,在浏览器地址栏中输入url

2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。

3、在发送http请求前,需要域名解析(DNS解析)(DNS(域名系统,Domain Name System)是互联网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住IP地址。),解析获取相应的IP地址。

4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。(TCP即传输控制协议。TCP 连接是互联网连接协议集的一种。)

5、握手成功后,浏览器向服务器发送http请求,请求数据包。

6、服务器处理收到的请求,将数据返回至浏览器

7、浏览器收到HTTP响应

8、读取页面内容,浏览器渲染,解析html源码

9、生成Dom树、解析css样式、js交互

10、客户端和服务器交互

11、ajax查询

47,对标签有什么理解

Meta标签提供关于html文档的元数据。它不会显示在页面上,但是对于机器是可读的。可用于浏览器,搜索引擎,或其他web服务。

作用:

Meta里的数据是供机器解读的,告诉机器如何解析这个页面,还有一个用途是可以添加服

务器发送到浏览器的http头部内容。

48,h5新特性,

(1)新的语义标签和属性

(2)表单新特性

(3)视频和音频

(4)Canvas绘图

(5)SVG绘图

(6)地理定位

(7)拖放API

49,display:none 和 visibility:hidden的区别

:none是彻底消失,不在文档流中占位,浏览器也不会解析该元素;visibility:hidden是视觉上消失了,可以理解为透明度为0的效果,在文档流中占位,浏览器会解析该元素;

2.使用visibility:hidden比display:none性能上要好,display:none切换显示时visibility,页面产生回流(当页面中的一部分元素需要改变规模尺寸、布局、显示隐藏等,页面重新构建,此时就是回流。所有页面第一次加载时需要产生一次回流),而visibility 切换是否显示时则不会引起回流。

50,JavaScript如何检测一个变量是一个string类型

typeof(obj) === "string"

typeof obj === "string"

=== String

2017年教师招聘结构化面试常见30题

2017年教师招聘结构化面试常见30题

1.有人说,没有人说,没有惩戒的教育是不完整的教育。对此,你怎么看? 参考答案 我认为这种观点十分正确。因为“惩者,以正其心也。”教育的本质就是“正其心”,使其全面发展。因此,合理行使教师惩戒权有助于学生健康、全面的发展。 惩戒绝不等于体罚,更不是伤害,不是心理歧视,而是指“施罚使犯过者身心感觉痛苦,但不以损害受罚者身心健康”为原则的一种惩罚方式。 没有惩戒教育,学生很难明事理。学生的成长道路上,不可能一帆风顺,在十字路口徘徊时,需要有人去指点、去帮助、去训导、去惩戒。教师就是这个人,应责无旁贷地承担起惩戒学生的责任,并通过适时、适度的惩戒,让学生明白“每个人必须对自己的行为负责”。在惩戒教育中,学生才能辨是非、知对错、懂权责。 没有惩戒教育学生很难走向成熟。仅以“赏识教育”、“爱心教育”、“情感教育”等为中小学教育的主流,是不完整的,还需要有“惩戒教育”。如果说赏识是阳光,孩子在赏识的阳光下可以自信而快乐的成长,那么惩戒就是风雨,孩子在惩戒的风雨中才能学会承受挫折,接受磨练,从而超越自我,走向成熟。

可怕,只要勇于面对,敢于承担,照样会赢得周围人的尊重和认可。通过鼓励、引导等方式使学生意识到说谎问题的严重性高于不小心打破仪器,从而使学生主动认错承担责任,我也会给予恰当及时的表扬。 最后,反思教学工作。一方面,我应该以身作则,为学生树立诚实的好榜样,对于诚实的行为给予表扬和奖励,对于不诚实的行为给予批评和合适的惩罚来帮助学生形成和改变态度与品德;另一方面,联系家长共同反思,是否在平日的教育中对孩子过于苛责,而导致孩子在犯错时习惯性的逃避而不是主动承担,以便在日后的学校和家庭教育中共同改进,培养孩子的责任感。 我的回答完毕!谢谢! 3.近年来,在各地由于幼儿教师的疏忽,导致幼儿发生的安全事故时有发生。对于这种现象,你怎么看? 参考答案 幼儿安全事故时有发生,给幼儿的生命安全造成极大威胁,这势必要引起幼儿园的高度重视,加强管理,落实责任,杜绝幼儿园安全事故的发生。 综合来看,此类事件背后的原因主要有以下几点:首先,教师安全责任意识淡薄,存在侥幸心理,甚至存在玩忽职守的现象;

前端面试题大全(html篇)

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言。最主要的不同: (1)XHTML元素必须被正确地嵌套 (2)XHTML元素必须被关闭 (3)XHTML标签名必须用小写字母 (4)XHTML文档必须拥有根元素 2.什么是语义化的HTML html5的语义化是指用正确的标签包含正确的容,比如nav标签就应该包含导航条容 (1)直观的认识标签对于搜索引擎的抓取有好处,用正确的标签做正确的事情! (2)html语义化就是让页面的容结构化,便于对浏览器、搜索引擎解析 (3)在没有CCS样式情况下也以一种文档格式显示,并且是容易阅读的。搜索引擎的爬虫依赖于标记来确定上下和各个关键字的权重,利于SEO。 (4)使阅读源代码的人更容易将分块,便于阅读维护理解。 写一段语义的html代码(HTML5中新增加的很多标签如: