web前端面试

来源:互联网 发布:淘宝分销2016能赚钱吗 编辑:程序博客网 时间:2024/05/17 23:17

1.介绍js的基本数据类型
Undefined
NullBooleanNumberString
2.js
有哪些内置对象?
数据封装类对象:ObjectArrayBooleanNumber String
其他对象:FunctionArgumentsMathDateRegExpError
3.this
对象的理解
this
总是指向函数的直接调用者(而非间接调用者);
如果有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window
4.eval
是做什么的?
它的功能是把对应的字符串解析成JS代码并运行;
应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。
JSON字符串转换为JSON对象的时候可以用evalvar obj=eval('('+ str +')');
5.DOM
怎样添加、移除、移动、复制、创建和查找节点

// 创建新节点

createDocumentFragment()    //创建一个DOM片段

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

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

// 添加、移除、替换、插入

appendChild()

removeChild()

replaceChild()

insertBefore() //在已有的子节点前插入一个新的子节点

// 查找

getElementsByTagName()    //通过标签名称

getElementsByName()    //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)

getElementById()    //通过元素Id,唯一性

 

6.nullundefined的区别?
null
是一个表示""的对象,转为数值时为0undefined是一个表示""的原始值,转为数值时为NaN
undefined

1)变量被声明了,但没有赋值时,就等于undefined
2)调用函数时,应该提供的参数没有提供,该参数等于undefined
3)对象没有赋值的属性,该属性的值为undefined
4)函数没有返回值时,默认返回undefined
null

1作为函数的参数,表示该函数的参数不是对象。
2作为对象原型链的终点。
7.new
操作符具体干了什么呢?
1)创建一个空对象,并且 this变量引用该对象,同时还继承了该函数的原型。
2)属性和方法被加入到 this引用的对象中。
3)新创建的对象由 this所引用,并且最后隐式的返回 this
8.JSON 
的了解?
JSON(JavaScript Object Notation) 
是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单,易于读写,占用带宽小。
格式:采用键值对,例如:{'age':'12', 'name':'back'}
9.call() 
 apply()的区别和作用?
apply()
函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替。
如:function.apply(this,[1,2,3]);
call()
的第一个参数是上下文,后续是实例传入的参数序列。
如:function.call(this,1,2,3);
10.
如何获取UA

function whatBrowser() { 

       document.Browser.Name.value=navigator.appName; 

       document.Browser.Version.value=navigator.appVersion; 

       document.Browser.Code.value=navigator.appCodeName; 

       document.Browser.Agent.value=navigator.userAgent; 



11.HTTP
状态码知道哪些?
100  Continue  
继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200  OK   
正常返回信息
201  Created  
请求成功并且服务器创建了新的资源
202  Accepted  
服务器已接受请求,但尚未处理
301  Moved Permanently  
请求的网页已永久移动到新位置。
302 Found  
临时性重定向。
303 See Other  
临时性重定向,且总是使用 GET请求新的 URI
304  Not Modified  
自从上次请求后,请求的网页未修改过。
400 Bad Request  
服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized  
请求未授权。
403 Forbidden  
禁止访问。
404 Not Found  
找不到如何与 URI相匹配的资源。
500 Internal Server Error  
最常见的服务器端错误。
503 Service Unavailable 
服务器端暂时无法处理请求(可能是过载或维护)。
12.
你有哪些性能优化的方法?
1减少http请求次数:CSSSprites, JSCSS源码压缩、图片大小控制合适;网页GzipCDN托管,data缓存,图片服务器。
2前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
3innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
4当需要设置的样式很多时设置className而不是直接操作style
5少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。
6避免使用CSS Expressioncss表达式)又称Dynamicproperties(动态属性)
7图片预加载,将样式表放在顶部,将脚本放在底部  加上时间戳。
13.
什么叫优雅降级和渐进增强?
优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IEhack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效.
渐进增强:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。
14.
哪些常见操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
setTimeout 
的第一个参数使用字符串而非函数的话,会引发内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
15.
线程与进程的区别
一个程序至少有一个进程,一个进程至少有一个线程
线程的划分尺度小于进程,使得多线程程序的并发性高。 
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

16.请描述一下 cookiessessionStorage localStorage 的区别?
cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。
sessionStoragelocalStorage不会自动把数据发给服务器,仅在本地保存。
存储大小:
cookie数据大小不能超过4k
sessionStoragelocalStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
有期时间:
localStorage    存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
sessionStorage  数据在当前浏览器窗口关闭后自动删除。
cookie          设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
17.iframe有那些缺点?
iframe会阻塞主页面的Onload事件;
搜索引擎的检索程序无法解读这种页面,不利于SEO;
iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题。
18.如何实现浏览器内多个标签页之间的通信?
WebSocketSharedWorker
也可以调用localstorgecookies等本地存储方式。
localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信。
注意quirksSafari在无痕模式下设置localstorge值时会抛出 QuotaExceededError的异常。
19.如何在页面上实现一个圆形的可点击区域?
1map+area或者svg
2border-radius
3)纯js实现需要求一个点在不在圆上简单算法、获取鼠标坐标等等
20.介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?
1)有两种, IE盒子模型、W3C盒子模型。
2)盒模型:内容(content)、填充(padding)、边界(margin)边框(border)
3)区  别: IEcontent部分把 border padding计算了进去。
21.CSS优先级算法如何计算?
优先级就近原则,同权重情况下样式定义最近者为准;
载入样式以最后载入的定位为准;
优先级为:
!important >  id > class >tag
important比内联优先级高(style)
22.为什么要使用CSS sprites
CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS“background-image”“background-position”的组合进行背景定位,这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是如果请求太多会给服务器增加很大的压力。
23.display:nonevisibility:hidden的区别?
display:none  隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,就当他从来不存在。
visibility:hidden  隐藏对应的元素,但是在文档布局中仍保留原来的空间。
24.positionabsolutefixed区别
absolute浮动定位是相对于父级中设置positionrelative或者absolute最近的父级元素
fixed浮动定位是相对于浏览器视窗的
25.IE 8以下版本的浏览器中的盒模型有什么不同?
IE8以下浏览器的盒模型中定义的元素的宽高不包括内边距和边框

0 0
原创粉丝点击