前端经典面试题.docx

上传人:b****8 文档编号:9901776 上传时间:2023-02-07 格式:DOCX 页数:24 大小:29.55KB
下载 相关 举报
前端经典面试题.docx_第1页
第1页 / 共24页
前端经典面试题.docx_第2页
第2页 / 共24页
前端经典面试题.docx_第3页
第3页 / 共24页
前端经典面试题.docx_第4页
第4页 / 共24页
前端经典面试题.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

前端经典面试题.docx

《前端经典面试题.docx》由会员分享,可在线阅读,更多相关《前端经典面试题.docx(24页珍藏版)》请在冰豆网上搜索。

前端经典面试题.docx

前端经典面试题

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. 第四等:

代表类型选择器和伪元素选择器,如divp,权值为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,解释csssprites,如何使用?

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

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

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

Varbtn1=document.getElementsById(“btn”);

btn1.addEnventListener(“click”,”hello1);

btn1.addEnventListener(“click”,”hello2);

functionhello1(){

alert(“hello1”);

}

functionhello2(){

alert(“hello2”);

}

8,拖曳会用到哪些事件?

Dragstart

Dragenter

Dragover

Dragleave

Drag

Drop

Dragend

9,请列举jQuery中选择器?

1,基本选择器

ID,class,元素之类的

2,层级选择器

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

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

3,过滤选择器

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

10,JavaScript中有哪些定时器,他们的区别和用法是什么?

SetTimeout只会执行一次

SetInterval会一直重复执行

方式都为:

settimeout(函数,时间)

11,请描述一下cookiessessionstorage和localstorage区别

相同点:

都储存在客户端上

不同点:

1储存大小

Cookies数据大小不能超过4k

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

2有效时间

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

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

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

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

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

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

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

//可以通过document.getelmentbyid().value;来获取输入框中的值

functionsum2(){

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

varsum1=0;

for(vari=0;i<=arr1.length;i++){

if(typeofarr1[i]=="number"){

sum1+=arr1[i];

}

}

document.write(sum1);

}

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

functionarr1(){

vararr2=[1,2,3,4,5,1,2,3];

vars=[];

for(i=0;i

if(s.indexOf(arr2[i])==-1){

s.push(arr2[i]);

}

}

console.log(s);

}

14,document.write和innerHTML的区别是什么?

Document.write是直接写入到页面的内容流,如果之前没有调用document.Open。

那么浏览器会自动调用open,页面被重写

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

精准。

15,ajax的步骤

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

第一步,创建xmlhttprequest对象,varxmlhttp=newXmlHTTPrequest();

Xmlhttprequest对象用来和服务器交换数据

Varxhttp;

If(windows.XMLHttpRequest){

//现在主流浏览器

Xhttp=newXMLHttpRequst();

}else{

Xhttp=newActiveXObject(“Mirosoft.XMLHTTP”);

}

第二步,xmlHTTPrequest对象的open()和send()方法发送资源请求到服务器,

第三步,使用xmlhttprequest对象的responseText或responseXML属性获得服务器的响应

第四部,onreadystatechange函数,当发送请求到服务器,我们想要服务器响应执行一些功能就需要使用使用onreadystatechange函数,每次xmlhttprequest对象的readystate发生改变都会触发onreadystatechange函数。

16,xml和json的区别,请用四点来形容

Json相对于xml来讲,数据体积小,传输速度快

Json与JavaScript更好交互,更好的数据交互

Xml对数据描述性比较好

Json的解析速度要远远快于XML

17,box-sizing常用的属性有哪些?

有哪些作用?

属性值

· box-sizing:

content-box

· box-sizing:

border-box

· box-sizing:

inherit

content-box

· 这是box-sizing的默认属性值

· 是CSS2.1中规定的宽度高度的显示行为

· 在CSS中定义的宽度和高度就对应到元素的内容框

· 在CSS中定义的宽度和高度之外绘制元素的内边距和边框

 

border-box

· 在CSS中微元素设定的宽度和高度就决定了元素的边框盒

· 即为元素在设置内边距和边框是在已经设定好的宽度和高度之内进行绘制

· CSS中设定的宽度和高度减去边框和内间距才能得到元素内容所占的实际宽度和高度

(Q1)box-sizing:

content-box|border-box|inherit;

(Q2)content-box:

宽度和高度分别应用到元素的内容框。

在宽度和高度之外绘制元素的内边距和边框(元素默认效果)。

border-box:

元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。

通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

18,使一个300*200的div实现屏幕水平居中

前面已经有一种方法了

第二种方法:

div{

left:

0px;

right:

0px;

top:

0px;

bottom:

0px;

margin:

auto;

position:

absolute;

height:

200px;

width:

300px;

}

第三种方法是利用jQuery

$(window).resize(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的方法

代码:

100%;margin:

0auto;">

200px;float:

right;background-color:

#000000;">11

200px;float:

left;background-color:

red;">33

200px;margin-right:

200px;background-color:

green;">22

 

第二种方法:

左右采用绝对定位,中间采用margin-left和margin-right

代码:

100%;margin:

0auto;">

200px;position:

absolute;left:

0px;background-color:

#000000;">11

200px;position:

absolute;right:

0px;background-color:

red;">33

200px;margin-right:

200px;background-color:

green;">22

 

第三种方法负margin值

 maincontent

 leftcontent

 right

#main{

 float:

 left;

 width:

 100%;

}

#mainContainer{

 margin:

 0230px;

 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:

 010px;

 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有哪些不同,说说你对这两个框架的看法

相同点:

都支持服务器渲染

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

数据驱动视图

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

不同点:

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

VirtualDOM不一样,vue会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树,而对于react来说,每次应用状态被改变,全部组件都会被重新渲染,所以react需要shouldComponentUPdate这个生命周期函数来进行控制。

组件的写法不一样。

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

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

26,什么是mvvmmvc有什么区别,原理?

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”);//执行加运算并返回执行的结果。

Eval(“varage=10”);//声明一个变量age

Eval()的作用域

Function(){

Eval(“varx=1”);//等效于varx=1;

Console.log(x);//输出1

}

a();

console.log(x);//错误,没有定义x

30,js哪些操作会泄露内存

1,意外的全局变量引起的内存泄漏

2,闭包引起的

3,没有清理DOM元素的应用

4,被遗忘的定时器或者回调

5,子元素存在引起的

31,浏览器缓存有哪些?

通常的缓存有哪几种?

1,HTTP缓存

2,Websql

3,Cookies

4,Localstorage

5,Sessionstorage

6,Flash缓存

 

32,bootstrap响应式原理

百分比布局+媒体查询

33,关于js事件冒泡与js时间代理(事件委托)

1,事件冒泡:

当一个子元素被触发时(如onclick),该事件会从事件源(被触发的子元素)开始逐级向上传播,出发父级元素的点击事件。

2,事件委托:

将子元素的事件通过冒泡的形式交由父元素来执行

例如:

1. var ul = document.getElementById('parentUl');  

2.     ul.onclick=function (event) {  

3.       var e = event||window.event,  

4.               source = e.target || e.srcElement;//target表示在事件冒泡中触发事件的源元素,在IE中是srcElement  

5.         if(source.nodeName.toLowerCase() == "li"){   //判断只有li触发的才会输出内容  

6.             alert(source.innerHTML);  

7.         }  

8.         stopPropagation(e);                           //阻止继续冒泡  

9.     };  

10.     function addElement() {  

11.         var li = document.createElement('li');  

12.         li.innerHTML="我是新孩子";  

13.         ul.appendChild(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:

1pxsolid#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()//创建一个DOM片段

CreateElement()//创建一个具体的元素

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

2,添加,移除,替换,插入

Appendchild()//添加

Removechild()//移除

Replacechild()//替换

InsertBefo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1