web前端笔试题面试题汇总+前端优化总结大全

时间:2019-05-12 15:20:46下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《web前端笔试题面试题汇总+前端优化总结大全》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《web前端笔试题面试题汇总+前端优化总结大全》。

第一篇:web前端笔试题面试题汇总+前端优化总结大全

前端是庞大的,包括HTML、CSS、Javascript、Image、Flash等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么?

1.从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供更为友好的体验。

2.从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源。

总之,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资源利用。

前端优化的途径有很多,按粒度大致可以分为两类,第一类是页面级别的优化,例如HTTP请求数、脚本的无阻塞加载、内联脚本的位置优化等;第二类则是代码级别的优化,例如Javascript中的DOM操作优化、CSS选择符优化、图片优化以及HTML结构优化等等。另外,本着提高投入产出比的目的,后文提到的各种优化策略大致按照投入产出比从大到小的顺序排列。

一、页面级优化

1.减少HTTP请求数

这条策略基本上所有前端人都知道,而且也是最重要最有效的。都说要减少HTTP请求,那请求多了到底会怎么样呢?首先,每个请求都是有成本的,既包含时间成本也包含资源成本。一个完整的请求都需要经过DNS寻址、与服务器建立连接、发送数据、等待服务器响应、接收数据这样一个“漫长”而复杂的过程。时间成本就是用户需要看到或者“感受”到这个资源是必须要等待这个过程结束的,资源上由于每个请求都需要携带数据,因此每个请求都需要占用带宽。另外,由于浏览器进行并发请求的请求数是有上限的(具体参见此处),因此请求数多了以后,浏览器需要分批进行请求,因此会增加用户的等待时间,会给用户造成站点速度慢这样一个印象,即使可能用户能看到的第一屏的资源都已经请求完了,但是浏览器的进度条会一直存在。

减少HTTP请求数的主要途径包括:

(1).从设计实现层面简化页面

如果你的页面像百度首页一样简单,那么接下来的规则基本上都用不着了。保持页面简洁、减少资源的使用时最直接的。如果不是这样,你的页面需要华丽的皮肤,则继续阅读下面的内容。

(2).合理设置HTTP缓存

缓存的力量是强大的,恰当的缓存设置可以大大的减少HTTP请求。以有啊首页为例,当浏览器没有缓存的时候访问一共会发出78个请求,共600多K数据(如图1.1),而当第二次访问即浏览器已缓存之后访问则仅有10个请求,共20多K数据(如图1.2)。(这里需要说明的是,如果直接F5刷新页面的话效果是不一样的,这种情况下请求数还是一样,不过被

缓存资源的请求服务器是304响应,只有Header没有Body,可以节省带宽)

怎样才算合理设置?原则很简单,能缓存越多越好,能缓存越久越好。例如,很少变化的图片资源可以直接通过HTTP Header中的Expires设置一个很长的过期头;变化不频繁而又可能会变的资源可以使用Last-Modifed来做请求验证。尽可能的让资源能够在缓存中待得更久。关于HTTP缓存的具体设置和原理此处就不再详述了,有兴趣的可以参考下列文章:

HTTP1.1协议中关于缓存策略的描述

Fiddler HTTP Performance中关于缓存的介绍

(3).资源合并与压缩

如果可以的话,尽可能的将外部的脚本、样式进行合并,多个合为一个。另外,CSS、Javascript、Image都可以用相应的工具进行压缩,压缩后往往能省下不少空间。

(4).CSS Sprites

合并CSS图片,减少请求数的又一个好办法。

(5).Inline Images

使用data: URL scheme的方式将图片嵌入到页面或CSS中,如果不考虑资源管理上的问题的话,不失为一个好办法。如果是嵌入页面的话换来的是增大了页面的体积,而且无法利用浏览器缓存。使用在CSS中的图片则更为理想一些。

(6).Lazy Load Images

这条策略实际上并不一定能减少HTTP请求数,但是却能在某些条件下或者页面刚加载时减少HTTP请求数。对于图片而言,在页面刚加载的时候可以只加载第一屏,当用户继续往后滚屏的时候才加载后续的图片。这样一来,假如用户只对第一屏的内容感兴趣时,那剩余的图片请求就都节省了。有啊首页曾经的做法是在加载的时候把第一屏之后的图片地址缓存在Textarea标签中,待用户往下滚屏的时候才“惰性”加载。

2.将外部脚本置底

前文有谈到,浏览器是可以并发请求的,这一特点使得其能够更快的加载资源,然而外链脚本在加载时却会阻塞其他资源,例如在脚本加载完成之前,它后面的图片、样式以及其他脚本都处于阻塞状态,直到脚本加载完成后才会开始加载。如果将脚本放在比较靠前的位置,则会影响整个页面的加载速度从而影响用户体验。解决这一问题的方法有很多,在这里有比较详细的介绍(这里是译文和更详细的例子),而最简单可依赖的方法就是将脚本尽可能的往后挪,减少对并发下载的影响。

3.异步执行inline脚本

inline脚本对性能的影响与外部脚本相比,是有过之而无不及。首页,与外部脚本一样,inline脚本在执行的时候一样会阻塞并发请求,除此之外,由于浏览器在页面处理方面是单线程的,当inline脚本在页面渲染之前执行时,页面的渲染工作则会被推迟。简而言之,inline脚本在执行的时候,页面处于空白状态。鉴于以上两点原因,建议将执行时间较长的inline脚本异步执行,异步的方式有很多种,例如使用script元素的defer属性(存在兼容性问题和其他一些问题,例如不能使用document.write)、使用setTimeout,此外,在HTML5中引入了Web Workers的机制,恰恰可以解决此类问题。

4.Lazy Load Javascript

随着Javascript框架的流行,越来越多的站点也使用起了框架。不过,一个框架往往包括了很多的功能实现,这些功能并不是每一个页面都需要的,如果下载了不需要的脚本则算得上是一种资源浪费-既浪费了带宽又浪费了执行花费的时间。目前的做法大概有两种,一种是为那些流量特别大的页面专门定制一个专用的mini版框架,另一种则是Lazy Load。YUI则使用了第二种方式,在YUI的实现中,最初只加载核心模块,其他模块可以等到需要使用的时候才加载。

5.将CSS放在HEAD中

如果将CSS放在其他地方比如BODY中,则浏览器有可能还未下载和解析到CSS就已经开始渲染页面了,这就导致页面由无CSS状态跳转到CSS状态,用户体验比较糟糕。除此之外,有些浏览器会在CSS下载完成后才开始渲染页面,如果CSS放在靠下的位置则会导致浏览器将渲染时间推迟。

6.异步请求Callback

在某些页面中可能存在这样一种需求,需要使用script标签来异步的请求数据。类似:

Javascript: /*Callback函数*/ function myCallback(info){ //do something here }

HTML:

cb返回的内容: myCallback('Hello world!');像以上这种方式直接在页面上写,将hello替换成“你好”

将Body的innerHTML重写和将

的innerHTML重写有何区别

12.什么是闭包,及其作用

13.事件绑定的几种方法,事件冒泡

14.Ajax/json/json0070

15.异步ajax的优缺点

优点:

 相对于同步ajax:不会造成UI卡死,用户体验好。

 相对于刷新页面,省流量

缺点:

 后退按钮无效;

 多个请求同时触发时,由于回调时间不确定,会造成混乱,避免这种混乱需

要复杂的判断机制。

 搜索引擎不友好

 数据安全

16.常用JS框架,是否使用过jQuery,jQuery的优点。17.18.JS用了多久,介绍一下自己做过的JS项目,19.开发调试工具和方法(编辑器、浏览器

20.类、函数、对象(代码表达)

21.闭包(setTimeout)(产生两个首尾相连的计时器)(使用for循环产生10个计时器)||

22.Jquery Mobile

23.HTML5/CSS3

24.是否听说和理解webapp

1.应届

25.在行的语言,优缺点

26.介绍项目经验,合作开发、独立开发

27.编程的重要知识

28.开发过程中遇到困难,如何解决。

29.有没有个人/开源项目

30.前端开发(HTML/CSS/

31.

第四篇:web前端面试总结

1.常用那几种浏览器测试?有哪些内核(Layout Engine)?(Q1)浏览器:IE,Chrome,FireFox,Safari,Opera。(Q2)内核:Trident,Gecko,Presto,Webkit。

2.说下行内元素和块级元素的区别?行内块元素的兼容性使用?(IE8 以下)

(Q1)行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。

块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。(Q2)兼容性:display:inline-block;*display:inline;*zoom:1;

3.清除浮动有哪些方式?比较好的方式是哪一种?(Q1)(1)父级div定义height。

(2)结尾处加空div标签clear:both。(3)父级div定义伪类:after和zoom。(4)父级div定义overflow:hidden。(5)父级div定义overflow:auto。(6)父级div也浮动,需要定义宽度。(7)父级div定义display:table。(8)结尾处加br标签clear:both。

(Q2)比较好的是第3种方式,好多网站都这么用。

4.box-sizing常用的属性有哪些?分别有什么作用?(Q1)box-sizing: content-box|border-box|inherit;(Q2)content-box:宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框(元素默认效果)。

border-box:元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

5.Doctype作用?标准模式与兼容模式各有什么区别?(Q1)告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

(Q2)标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

6.HTML5 为什么只需要写 ?

HTML5不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。

而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

7.页面导入样式时,使用link和@import有什么区别?

(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;(2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;(3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题。

8.介绍一下你对浏览器内核的理解?

主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。

渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、我们组建一大牛裙前面是4七一,整理讯息(例如加入CSS等),中间是零2七,以及计算网页的显示方式,后面是壹武四,是学习的就加,不是学习的请勿打扰。然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。JS引擎则:解析和执行javascript来实现网页的动态效果。

最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

9.html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?(Q1)HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。

(1)绘画 canvas;(2)用于媒介回放的 video 和 audio 元素;(3)本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;(4)sessionStorage 的数据在浏览器关闭后自动删除;(5)语意化更好的内容元素,比如 article、footer、header、nav、section;(6)表单控件,calendar、date、time、email、url、search;(7)新的技术webworker, websocket, Geolocation;(Q2)IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式。当然也可以直接使用成熟的框架、比如html5shim,

10.简述一下你对HTML语义化的理解? 用正确的标签做正确的事情。

html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

JavaScript----------------------------

1.介绍js的基本数据类型

Undefined、Null、Boolean、Number、String

2.js有哪些内置对象?

数据封装类对象:Object、Array、Boolean、Number 和 String 其他对象:Function、Arguments、Math、Date、RegExp、Error

3.this对象的理解

this总是指向函数的直接调用者(而非间接调用者); 如果有new关键字,this指向new出来的那个对象;

在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window。

4.eval是做什么的?

它的功能是把对应的字符串解析成JS代码并运行;

应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。由JSON字符串转换为JSON对象的时候可以用eval,var obj =eval('('+ str +')')。

5.DOM怎样添加、移除、移动、复制、创建和查找节点 // 创建新节点

createDocumentFragment()//创建一个DOM片段 createElement()//创建一个具体的元素 createTextNode()//创建一个文本节点 // 添加、移除、替换、插入 appendChild()removeChild()replaceChild()insertBefore()//在已有的子节点前插入一个新的子节点 // 查找

getElementsByTagName()//通过标签名称

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

6.null和undefined的区别?

null是一个表示“无”的对象,转为数值时为0;undefined是一个表示“无”的原始值,转为数值时为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;

} 其他

----------------------------

1.HTTP状态码知道哪些?

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 服务器端暂时无法处理请求(可能是过载或维护)。

2.你有哪些性能优化的方法?

(1)减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存,图片服务器。

(2)前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

(3)用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。(4)当需要设置的样式很多时设置className而不是直接操作style。(5)少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

(6)避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。(7)图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

3.什么叫优雅降级和渐进增强?

优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效。渐进增强:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。

4.哪些常见操作会造成内存泄漏?

内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。

setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。

闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)。

5.线程与进程的区别

一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

第五篇:web前端个人简历

个人简历

个人信息

姓名:xxxx 性别:男

出生日期:1993.03 婚姻状况:未婚 工作所在地:北京 家庭所在地:湖北

联系电话:18xxxxxx

电子邮箱:xxxxxx@qq.com

专业技能

1、熟练使用Sublime、Photoshop等软件,掌握网站效果图的制作、切片以及HTML页面代码优化等技术;

2、精通HTML5+CSS3、DIV+CSS等网站前端技术;

3、能够熟练编写标准前端代码,熟悉浏览器兼容问题解决方案;

4、熟练掌握javascript语言,精通jQuery库、bootstrap库,能够实现网页的动态效果与页面交互;

5、熟练掌握响应式设计,能够开发移动端页面;熟练使用swiper手机端应用库;

6、了解node后台,熟练掌握Ajax技术;

7、了解gulp自动化构建工具,了解less,echarts图表库;

工作经验

2015.07– 至今 工作职责: 北京第嘉传媒文化有限公司 职位名称:前端开发工程师

负责公司产品或项目Web前端开发,根据产品需求和UI效果图利用sublime编程软件进行div/css标准网页制作,Js逻辑设计与开发、jQuery特效编写以及使用插件实现特效,解决主流浏览器兼容性问题,对网站用户体验性能进行优化,完成产品前端展示效果和交互功能。

2014.09– 2015.6

工作职责: 秦皇岛市金銮之巅科技开发有限公司

职位名称:前端开发工程师

负责公司项目的前端修改调试和开发工作,精确的将网站设计图重构成html 页面。从ps切图到div/css标准网页制作及主流浏览器兼容问题的解决,并与后台紧密配合,确保代码有效链接。

项目经历: PC端 中国智力运动网

http://www.xiexiebang.com)是由泰康人寿保险股份有限公司全资发起成立的大型互联网保险公司,产品涵盖意外险、理财险、健康险、旅游险等多种保险。

个人站

kafeihaoka.github.io

教育背景

2011.09-2015.06 燕山大学里仁学院 电子信息工程 本科 求职意向

职位:Web 前端开发 工作地点:北京

下载web前端笔试题面试题汇总+前端优化总结大全word格式文档
下载web前端笔试题面试题汇总+前端优化总结大全.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    Web前端工作总结

    Web前端学习总结 一.名词解释 1. 横切 在固定页面的宽度(按栅格化进行)并且对高度没有限制的容器称为一个标准横切 2. 留白 两个容器或碎片之间的上、下、左、右的空白距离......

    腾讯web前端开发工程师笔试题及答案

    腾讯web前端开发工程师笔试题及答案 1、 如何实现事件委托? 首先要知道什么是事件委托。 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方......

    Web前端页面性能优化小结

    Web前端页面性能优化小结 Web前端页面性能优化小结 影响用户访问的最大部分是前端的页面。网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实......

    web前端开发知识点总结

    HTML知识总结 span行级元素,多个同行块级元素,独占一行块级元素,前后保留一行标题标签,h1~h6表6个等级,加粗,前后保留一行width:设置宽度height:设置高度alt:图片加载失败显示的文本d......

    web前端学习总结2

    1.WEB标准以及W3C标准是什么? 标签闭合、标签小写、不乱嵌套、使用外链css和js、结构行为表现的分离。1.xhtml和html有什么区别 XHTML 元素必须被正确地嵌套,闭合,区分大小写,文......

    Web前端程序员简

    个人简历 姓 名:张三性 别:男出生年月:*** 学 历:本科毕业学校:郑州大学专 业:互联网·电子商务 民 族:汉工作经验: 3年 邮箱:*****@**.com电话:*********** 自我简介: 1.有良好的大局......

    WEB前端开发经验总结

    ASP.NET前端开发经验总结 通过此次大作业的设计到完成,我负责的是web前端的开发,经过此次作业和结合W3C上的自学,我渐渐有了一些对前端开发的小小经验(仅为个人意见)。 WEB标准是......

    web前端实习经验

    经验 2014年7月11日 11:20自我介绍时:千万不要忘记介绍名字代码: 1.标记为done表示已经调试好,完全测试过了 2.代码规范。phpstrom,统一格式化 3.借鉴代码时注意liscence 4.项目......