2019年WEB前端面试题(部分答案收集自互联网)

1、什么是w3c标准,谈谈对w3c的理解?

   如果从WEB技术角度,可以分为三个方面的标准:结构、表现、行为。结构主要指(X)HTML标准,包括各种标签的名字、属性、语义及其他相关标准。表现主要指CSS,包括各种定位、颜色、大小等方面的标准。行为主要指Javascript,其实主要由ECMA国际制定的标准,但由于在万维网上广泛应用,开发人员也要关注。Javascript的词法、表达式、语句等方面也有一系列的标准。 Javascript没有像Java JDK那样的现成二进制文件,只有文档标准,具体的实现交给了各浏览器,所以在开发过程中,各浏览器的兼容性问题会是一个问题,我们在处理的时候可以遵循鸭式辨型原则去处理。

参考:浅谈w3c标准

2、Doctype作用是什么?严格模式与混杂模式如何区分?有何差异?

   <!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。<!DOCTYPE>声明必须在 HTML 文档的第一行,这并不是一个 HTML 标签。

   严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。

   混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码。

   如何区分:浏览器解析时到底使用严格模式还是混杂模式,与网页中的 DTD 直接相关。

   1、如果文档包含严格的 DOCTYPE ,那么它一般以严格模式呈现。(严格 DTD ——严格模式) 

   2、包含过渡 DTD 和 URI 的 DOCTYPE ,也以严格模式呈现,但有过渡 DTD 而没有 URI (统一资源标识符,就是声明最后的地址)会导致 页面以混杂模式呈现。(有 URI 的过渡 DTD ——严格模式;没有 URI 的过渡 DTD ——混杂模式) 

   3、DOCTYPE 不存在或形式不正确会导致文档以混杂模式呈现。(DTD不存在或者格式不正确——混杂模式)

   4、HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)

   意义:严格模式与混杂模式存在的意义与其来源密切相关,如果说只存在严格模式,那么许多旧网站必然受到影响,如果只存在混杂模式,那么会回到当时浏览器大战时的混乱,每个浏览器都有自己的解析模式。

  严格模式与混杂模式的语句解析不同点有哪些?

   1)盒模型的高宽包含内边距padding和边框border

在W3C标准中,如果设置一个元素的宽度和高度,指的是元素内容的宽度和高度,而在IE5.5及以下的浏览器及其他版本的Quirks模式下,IE的宽度和高度还包含了padding和border。

2)可以设置行内元素的高宽

    在Standards模式下,给span等行内元素设置wdith和height都不会生效,而在quirks模式下,则会生效。

3)可设置百分比的高度

    在standards模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置高度,子元素设置一个百分比的高度是无效的。

4)用margin:0 auto设置水平居中在IE下会失效

    使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下却会失效,quirk模式下的解决办法,用text-align属性:

   body{text-align:center};#content{text-align:left}

5)quirk模式下设置图片的padding会失效

6)quirk模式下Table中的字体属性不能继承上层的设置

7)quirk模式下white-space:pre会失效

来源:Doctype作用?严格模式与混杂模式如何区分?它们有何差异?

3、display:none和display:visibility的区别?

display:none和display:visibility都会隐藏某个元素,但是display:none隐藏的元素不会占据任何空间,从页面上消失,而display:visibility隐藏的元素仍想未隐藏的元素一样占据页面的空间。也就是说该元素被隐藏了,蛋仍会影响页面布局。

4、css选择器有哪些?那些css属性可以继承?

1、id选择器:#myid{background:black}

2、类选择器:.classname{}

3、标签选择器: div{}

4、通配选择器: *{}

5、相邻选择器:h1+div{}

6、子代选择器:h1>div{}

7、后代选择器:h1 div{}

8、属性选择器:a[attr=value]{}

9、伪类选择器:a:hover{}

可以被继承的属性有:

字体相关:line-height, font-family, font-size, font-style, font-variant, font-weight, font

文本相关: letter-spacing, text-align, text-indent, text-transform, word-spacing

列表相关:list-style-image,  list-style-position, list-style-type, list-style

5、解释一下wiondow.onload和onDocumentReady和区别?

window.onload在页面所有元素(包括图片、引入的文件)夹子啊完成后执行,onDocument在html DOM和css DOM 加载后(部分图片可能没有加载完成)就可执行;

window.onload只能执行一次,如果定义多次,后者将覆盖前者,onDocument可定义多次,并且都能运行;

6、解释一下css盒模型?

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型(Box Model):


不同部分的说明:

Margin(外边距) - 清除边框外的区域,外边距是透明的。

Border(边框) - 围绕在内边距和内容外的边框。

Padding(内边距) - 清除内容周围的区域,内边距是透明的。

Content(内容) - 盒子的内容,显示文本和图像。

为了正确设置元素在所有浏览器中的宽度和高度,你需要知道的盒模型是如何工作的。

最终元素的总宽度计算公式是这样的:

总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距

元素的总高度最终计算公式是这样的:

总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

参考::菜鸟教程--css盒模型

7、http请求方式GET、POST、PUSH和DELETE的区别?

    get请求:从服务端获取数据

    特点:使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器: sevice/getValue&name1=value1

        GET请求能够被缓存

        GET请求会保存在浏览器的浏览记录中

        以GET请求的URL能够保存为浏览器书签

        GET请求有长度限制

        GET请求主要用以获取数据

    post请求:提交数据给服务端处理,并返回响应 

       特点: 使用POST方法时,查询字符串在http请求头中单独存在

        POST请求不能被缓存下来

        POST请求不会保存在浏览器浏览记录中

        以POST请求的URL无法保存为浏览器书签

        POST请求没有长度限制

8、history和hash两种模式的区别?


9、javaScript中的数据类型有哪些?

Null 、Undefined、Boolean、String、Number、Array、 Object、Symbol

10、javaScript中join()和split()方法的区别?

    join() : 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

    split(): 把字符串分割为字符串数组。

11、清除浮动的方法?为什么要清除浮动?什么原因导致的?


12、什么是html5 本地存储?


13、你能解释一下渐进增强和优雅降级和不同吗?

渐进增强(progressive enhancement):针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。(从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面添加无害于基础浏览器的额外样式和功能。当浏览器支持时,它们会自动地呈现出来并发挥作用。)

优雅降级(graceful degradation):一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。(Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效。)

区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的、能够起作用的版本开始,并不断扩充,以适应未来环境的需要。

参考文章:你能描述一下渐进增强和优雅降级之间的不同吗?

14、javaScript中typeof()方法都会返回哪些结果?


15、谈谈你对javaScript中this指向的理解?


16、如何理解JavaScript中的闭包?


17、如果处理AJAX请求返回的JSON数据?


18、网站前端性能优化的方法有哪几种?


19、javaScript中数组方法push() 、pop()、shift()和 unshift()的区别?

push()方法可以接收任意个数的参数,吧它们逐一添加到到数组末尾。并返回修改后的数组长度;

pop()方法从数组末尾最后一项,减少数组length值,并返回去除的那一项;

shift()方法移除数组第一项将这一项返回

unshift()方法能再数组前端添加任意个项,并返回新数组的长度

20、你能解释一下vue.js双向数据绑定的原理吗?

vue.js双向绑定就是指model层与view层的同步,两者之间任意一个发生变化都会同步更新到另一者。

View为视图层,Model为数据层,ViewModel为逻辑控制层。 

vue.js采用数据劫持结合发布者-订阅者模式的方法,通过Object.defineProperty()劫持各个属性的setter,getter在数据变动时发布消息给订阅者,触发相应的监听回调。 

更详细的内容请参考此页:vuejs双向数据绑定原理详解


21、说一下你对vue.js生命周期的理解?

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

比如 created 钩子可以用来在一个实例被创建之后执行代码,也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mountedupdated和 destroyed。生命周期钩子的 this 上下文指向调用它的 Vue 实例。

参考文章:vue中文文档---生命周期

22、Glup、Grunt和webpack的作用是什么?

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundlewebpack中文网

    gulp.js - 基于流(stream)的自动化构建工具。Grunt 采用配置文件的方式执行任务,而 Gulp 一切都通过代码实现。

    Grunt 是基于 Node.js 的项目构建工具。它可以自动运行你所设定的任务。Grunt 拥有数量庞大的插件,几乎任何你所要做的事情都可以用 Grunt 实现。

23、谈谈你对web前端工程化的理解?


24、javaScript中的事件捕获和时间冒泡是什么?


25、vue.js中父子组件之间的数据传递是怎么实现的?


26、解释一下javaScript中的本地对象、内置对象和宿主对象?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,695评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,569评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,130评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,648评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,655评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,268评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,835评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,740评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,286评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,375评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,505评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,873评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,357评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,466评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,921评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,515评论 2 359

推荐阅读更多精彩内容