阅读:2779回复:0
前端面试题总结(一)
常量与变量
javaScript中常量与变量的存储方式是一样的,只不过常量必须要有初始值, 而且值不允许被修改,而变量可以无初始值,且可以多次赋值。 形参与实参 形参就是函数声明时的变量,实参是我们调用该函数时传入的具体参数。 link和@import的区别 这两种方式都是为了加载css文件,但还是存在细微的差别。 1.从属关系区别 @import是 CSS 提供的语法规则,只有导入样式表的作用; link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS、rel 连接属性等。 2.加载顺序区别 加载页面时,link标签引入的 CSS 被同时加载; @import引入的 CSS 将在页面加载完毕后被加载。 3.兼容性区别 @import是 CSS2.1 才有的语法,故只可在 IE5+ 才能识别; link标签作为 HTML 元素,不存在兼容性问题 4.DOM可控性区别 可以通过 JS 操作 DOM ,插入link标签来改变样式; 由于 DOM 方法是基于文档的,无法使用@import的方式插入样式。 12. 简述一下src与href的区别 src用于替换当前元素;href用于在当前文档和引用资源之间确立联系。 src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置 href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接 previousElementSibling前一个元素节点 insertBefore(newNode,oldNode)-插入到指定位置 1. Doctype作用?标准模式与兼容模式各有什么区别? DOCTYPE是document type(文档类型)的简写,用来告诉浏览器的解析器 使用哪种 HTML或XHTML规范解析页面。DOCTYPE不存在或格式不正确 会导致文档 以兼容 模式呈现。 2. HTML5 为什么只需要写 <!DOCTYPE HTML>? HTML5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为。其中,SGML是标准通用标记语言,简单的说,就是比XML,HTML更老的标准,这两者都是由SGML发展而来的 3. 介绍一下你对浏览器内核的理解?常见的浏览器内核有哪些? 主要分成两部分:渲染引擎、JS引擎。 渲染引擎:负责取得网页中的内容,整理讯息,计算网页显示方式,然后输出。 JS引擎:解析和执行javascript来实现网页的动态效果。 常见的浏览器内核:Trdent、Gecko、Presto、Webkit 4. 为什么要初始化CSS样式。 浏览器差异:不同浏览器对有些标签的默认值不同, 提高编码质量:减少CSS样式重复 5. 对BFC规范(块级格式化上下文:block formatting context)的理解? BFC(Block Formatting Context),块级格式化上下文,一个创建了新的BFC的盒子是独 立布局的,盒子里面的子元素的样式不会影响到外面的元素。 BFC是Web页面中盒模型布局的一种CSS渲染模式。它的定位体系属于常规文档流。 6描述一下什么是优雅降级,渐进增强 优雅降级(graceful degradation):一开始就构建完整的功能,然后再针对低版本 浏览器进行兼容。(Web站点在所有新式浏览器中都能正常工作,如果用户使用的是 老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问 题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加 候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效。) 渐进增强(progressive enhancement):针对低版本浏览器进行构建页面,保证最 基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户 体验。(从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持 的功能,向页面添加无害于基础浏览器的额外样式和功能。当浏览器支持时,它们会自 动地呈现出来并发挥作用。) 7.Src和href的区别 src用于替换当前元素;href用于在当前文档和引用资源之间确立联系。 src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所 在位置 href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点) 或当前文档(链接)之间的链接 8.H1标签在网页中都有什么作用 呈现内容结构,引起搜索引擎注意,会起到一种强调的作用,让蜘蛛了解当前网页 内容之间的层次关系,减少了搜索引擎蜘蛛的困扰,达到优化效果。 局部变量和全局变量有什么区别。 局部变量:在函数内申明得变量,即在一个函数内部定义得变量,只在本函数范围内有效。 全局变量:在函数外申明得变量,即从定义变量的位置到程序结束都有效 什么叫做作用域,作用域链 在一定的空间里可以对数据进行读写操作,这就是数据得作用域、 作用域分为全局作用域和局部作用域 全局作用域:最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的; 局部作用域: 局部作用域一般只在固定的代码片段内可访问到,而对于函数外部是无法访问的,最常见的例如函数内部。 ===========vue============== 1.SPA 单页面应用优缺点 优点:数据驱动、组件化、简介、轻量 缺点:不利于SEO、 兼容性差、 首次加载时间会比较长、 不能实现浏览器的前进后退 2.vue 两大核心 数据驱动、组件化 3.vue双向数据绑定 通过Object.defineProperty()实现数据劫持,可以控制一些对象属性的一些特有操作, get: 在读取对象属性的时候触发的函数 set: 设置时触发的函数 MVVM: M Model 数据层模型 V View 视图层模型 VM ViewModel 同步视图层和数据层对象 4.解决跨域的三种方法 vue,config.js api代理 jsonp(只支持get请求) xhr2(XMLHttpRequest) 5.Vuex是什么,怎么使用 状态管理模式 大型开发单页面应用时使用 6.v-if和v-show区别、使用场景 v-if是通过控制dom节点的存在与否来控制元素的显隐; v-show是通过设置DOM元素的display样式,block为显示,none为隐藏; 基于以上区别,因此,如果需要非常频繁地切换,则使用 v-show 较好; 如果在运行时条件很少改变,则使用 v-if 较好。 7.原型和原型链 他们之间的关系 每个函数都有一个prototype属性,这个属性指向函数的原型对象 __proto__:任何对象都可以找到,IE不支持 prototype:函数才有prototype, typeof返回的是function,那么她就有prototype属性 8.组件传值 父传子:子组件定义props来接收 子传父:利用vue中$emit事件传值 子组件定义this.$emit 兄弟传值:通过vue中bus事件传值 第一个兄弟组件定义this.bus.$emit 第二个兄弟组件需要在beforeCreate生命周期获取传过来的值,用this.bus.$on接收 9.computed和watch的区别和使用 computed 计算属性,依赖其他属性值,并且computed的值有缓存,依赖的属性值发生改变,下一次获取computed的值才会重新计算computed的值 watch 更多的是观察,类似于某些数据的监听回调,数据发生变化是回执行回调 10.keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,避免重新渲染 有两个属性include和exclude 11.key 是为 Vue 中 vnode 的唯一标记,通过这个 key,我们的 diff 操作可以更准确、更快速 |
|