前端面试题及答案2020
前端开发工程师面试题及答案
![前端开发工程师面试题及答案](https://img.taocdn.com/s3/m/fe7f351ea9956bec0975f46527d3240c8447a1b2.png)
前端开发工程师面试题及答案在前端开发领域,面试是选拔优秀人才的重要环节。
以下是一些常见的前端开发工程师面试题以及对应的参考答案。
一、HTML 和 CSS 相关问题1、解释一下盒模型以及它在布局中的作用。
答案:盒模型是 CSS 中用于布局的基本概念,它由内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。
在布局中,理解盒模型对于准确计算元素的尺寸和间距非常重要,能够帮助我们实现各种复杂的页面布局。
2、如何实现一个两栏布局,左边固定宽度,右边自适应?答案:可以使用多种方法实现。
一种常见的方式是使用浮动(float),将左边栏设置为固定宽度并向左浮动,右边栏不浮动,并设置其左边的外边距(marginleft)为左边栏的宽度。
也可以使用 flex 布局,将父容器设置为 display: flex; ,左边栏设置固定宽度,右边栏设置flex: 1; 以实现自适应。
3、说一说 CSS 选择器的种类和优先级。
答案:CSS 选择器包括元素选择器、类选择器、id 选择器、属性选择器、伪类选择器、伪元素选择器等。
选择器的优先级从高到低依次为:内联样式(通过 style 属性设置)> id 选择器>类选择器、属性选择器、伪类选择器>元素选择器、伪元素选择器。
二、JavaScript 相关问题1、谈谈你对 JavaScript 中作用域和闭包的理解。
答案:作用域决定了变量的可见性和可访问性。
在 JavaScript 中有全局作用域和函数作用域。
闭包是指有权访问另一个函数作用域中的变量的函数。
闭包可以让函数记住其创建时的环境,即使外部函数已经执行完毕,闭包仍能访问外部函数中的变量。
2、如何实现 JavaScript 的继承?答案:常见的实现方式有原型链继承、借用构造函数继承、组合继承、寄生组合继承等。
原型链继承通过将子类型的原型指向父类型的实例来实现继承;借用构造函数继承通过在子类型的构造函数中调用父类型的构造函数来继承属性;组合继承结合了原型链继承和借用构造函数继承的优点;寄生组合继承是一种优化的组合继承方式,避免了不必要的父类实例属性的重复创建。
前端工程化面试问题
![前端工程化面试问题](https://img.taocdn.com/s3/m/bd9f8cfcfc0a79563c1ec5da50e2524de518d0f2.png)
前端工程化面试问题一、基础知识1. 请简述一下你对HTML5的理解?HTML5在前端开发中扮演了什么样的角色?2. 什么是CSS,它的主要作用是什么?3. JavaScript的主要特性和应用场景有哪些?4. 请谈谈你对前端框架(如React、Vue、Angular等)的理解。
你可以详细描述一下你熟悉的前端框架的主要特性和使用场景吗?5. 请解释一下什么是前端路由,以及它的实现原理。
6. 请简述一下你对前端工程化的理解,以及它的重要性。
7. 什么是模块化,如何实现前端模块化?8. 请解释一下什么是HTTP和HTTPS,以及他们的区别。
9. 请简述一下你对Webpack的理解,以及它的主要功能和使用场景。
10. 请解释一下什么是DOM,以及它的重要性。
二、进阶知识1. 请解释一下什么是虚拟DOM,以及它与真实DOM的区别和联系。
2. 请谈谈你对前端性能优化的理解,以及你通常采用的前端性能优化方法。
3. 请解释一下什么是CSS预处理器(如Sass、Less等),以及他们的特性和使用场景。
4. 请谈谈你对前端安全性的理解,以及你通常采用的前端安全措施。
5. 请解释一下什么是前端自动化,以及你熟悉的前端自动化工具和框架。
6. 请解释一下什么是前端响应式设计,以及它的实现原理。
7. 请谈谈你对前端组件化的理解,以及你通常采用的前端组件设计和开发方法。
8. 请解释一下什么是Service Worker,以及它的主要功能和使用场景。
9. 请谈谈你对前端模块热替换(Hot Module Replacement)的理解,以及它的主要优点和限制。
10. 请解释一下什么是前端路由懒加载,以及它的实现原理和优点。
三、实战经验1. 请描述一下你在过去的工作中遇到的最大的前端技术挑战,你是如何解决的?2. 请谈谈你在使用前端框架开发中的经验,以及你对其优缺点的理解。
3. 请描述一下你在前端工程化实践中遇到的问题和解决方法。
2020字节跳动前端面试题一面解析(附答案)
![2020字节跳动前端面试题一面解析(附答案)](https://img.taocdn.com/s3/m/032fbf3db5daa58da0116c175f0e7cd18425184e.png)
2020字节跳动前端⾯试题⼀⾯解析(附答案)最近有⽂章漏出了⼀位实习⽣⾯试字节跳动今⽇头条的前端⾯试题,总共四轮⾯试,现在就跟⼤家⼀起来探讨⼀下这些⾯试题,为疫情后的⼯作做些准备。
1.算法:实现36进制转换⾸先新建⼀个Stack类,⽤于定义基本操作⽅法class Stack {constructor() {this.count = 0;this.items = {};}push(element) {this.items[this.count] = element;this.count++;}pop() {if (this.isEmpty()) {return undefined;}this.count--;const result = this.items[this.count];delete this.items[this.count];return result;}peek() {if (this.isEmpty()) {return undefined;}return this.items[this.count - 1];}isEmpty() {return this.count === 0;}size() {return this.count;}clear() {this.items = {};this.count = 0;}toString() {if (this.isEmpty()) {return '';}let objString = `${this.items[0]}`;for (let i = 1; i < this.count; i++) {objString = `${objString},${this.items[i]}`;}return objString;}}然后定义⼀个转换⽅法,⽤于进制转换function baseConverter(decNumber, base) {// 创建 Stack 类const remStack = new Stack();// 定义⼀个进制位数,这⾥设置了 36 位进制,可⾃定义位数const digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';let number = decNumber;let rem;let baseString = '';if (!(base >= 2 && base <= 36)) {return '';}while (number > 0) {rem = Math.floor(number % base);remStack.push(rem);number = Math.floor(number / base);}while (!remStack.isEmpty()) {// 对栈中的数字做转化baseString += digits[remStack.pop()];}return baseString;}最后进⾏测试console.log(baseConverter(1314, 2)); //10100100010console.log(baseConverter(1314, 8)); //2442console.log(baseConverter(1314, 16)); //522console.log(baseConverter(1314, 20)); //35Econsole.log(baseConverter(1314, 30)); //1DOconsole.log(baseConverter(1314, 35)); //12J2.简述https原理,以及与http的区别http请求都是明⽂传输的,这⾥的明⽂就是指没有经过加密的信息,如果请求被⿊客拦截就会⾮常危险。
盛趣时代前端面试题
![盛趣时代前端面试题](https://img.taocdn.com/s3/m/f2654c6f2a160b4e767f5acfa1c7aa00b52a9d0c.png)
盛趣时代前端面试题第1题在Vue中,下列说法正确的是() [单选题]A.vue是后端框架B.vue是基于jQuery开发的框架C.vue是前端框架(正确答案)D.以上说法都不对答案解析:概念理解第2题下列框架中不属于JavaScript框架的是() [单选题]A.Spring(正确答案)B.AngularC.ReactD.Vue答案解析:概念理解第3题以下前端框架中,由中国人开发的是() [单选题]A.Vue(正确答案)B.AngularC.ReactD.jQuery答案解析:概念理解第4题MVC设计模式不包括以下()部分 [单选题]A.ModelB.Vue(正确答案)C.ViewD.Controller答案解析:概念理解第6题在Vue中,下列关于Vue的优势的说法错误的是()【选两项】A.双向数据绑定B.可复用的组件C.增加代码的耦合度(正确答案)D.功能插件化(正确答案)答案解析:概念理解第7题在Vue中,以下关于Vue的功能描述错误的是() [单选题]A.Vue的组件不可复用(正确答案)B.Vue具有虚拟DOM功能C.Vue可以实现视图和数据解耦D.Vue可用于数据绑定答案解析:概念理解第8题在Vue中,向HTML中插入文本值可用下列()符号 [单选题]A.《》B.<>C.{{}}(正确答案)D.()答案解析:概念理解第14题在Vue的双向数据绑定中,()是Vue的核心 [单选题]A.ViewB.ViewModel(正确答案)C.ModelD.Controller答案解析:概念理解第15题在Vue中,表单元素上数据双向绑定的指令是() [单选题]A.v-ifB.v-showC.v-forD.v-model(正确答案)答案解析:概念理解第17题在Vue中,下列关于 Vue 实例对象说法不正确的是() [单选题]A.Vue 实例对象是通过 new Vue({})方式创建的B.Vue 实例对象只允许有唯一的一个根标签C.通过 methods 参数可以定义事件处理函数D.Vue 实例对象中 data 数据不具有响应特性(正确答案)答案解析:概念理解第19题在Vue实例常用选项参数中,必须的参数是() [单选题]B.el(正确答案)C.methodsD.filters答案解析:概念理解第20题在Vue中,以下()不属于Vue实例的选项参数 [单选题]A.dataB.elC.view(正确答案)D.methods答案解析:概念理解第21题在Vue中,下列关于Vue实例选项参数说法错误的是() [单选题]A.watch:观察Vue实例变化的一个表达式或计算属性函数B.filters:Vue实例的计算属性集合(正确答案)C.template:定义字符串模板作为Vue实例的标识使用ponents:包含Vue实例可用组件的哈希表答案解析:概念理解第25题在Vue中,支持在{{}}的插值的尾部添加一个()对数据进行过滤,经常用于格式化文本 [单选题]A.#B.|(正确答案)C.&答案解析:概念理解第26题在Vue中,关于Vue全局过滤器和局部过滤器下列说法错误的是() [单选题]A.全局过滤器可以在整个页面中使用B.局部过滤器作用域是当前Vue实例中有效C.一个表达式可以使用多个过滤器D.当全局过滤器和局部过滤器名称相同时全局过滤器优先(正确答案)答案解析:概念理解第30题在Vue中,关于Vue的功能描述错误的是() [单选题]A.单向的数据绑定(正确答案)B.视图和数据解耦C.可复用的组件D.解耦视图和数据答案解析:概念理解第32题在Vue中,以下关于Vue插值下列说法错误的是() [单选题]A.{{文本}}用于插入与绑定文本B.{{表达式}}可以使用JavaScript表达式进行简单的运算C.{{}}中只支持单个表达式D.{{}}支持语句和流控制(正确答案)答案解析:概念理解第33题在Vue中,文本插值也接受表达式形式的值,以下关于文本插值中表达式的形式说法错误的是() [单选题]A.表达式可以是JavaScript中的表达式,用于计算结果B.表达式中也可以包含过滤器C.表达式是各种数值、变量和运算符的综合体,简单的表达式可以是常量或者变量名称。
最新Web前端经典面试试题及答案
![最新Web前端经典面试试题及答案](https://img.taocdn.com/s3/m/deabfbbe7e192279168884868762caaedc33ba49.png)
最新Web前端经典面试试题及答案一、HTML/CSS面试题1. 问题:Doctype声明的作用是什么?答案:Doctype声明用于告诉浏览器页面使用的HTML版本。
它对浏览器解析HTML文档的方式有重要影响。
如果没有声明Doctype,浏览器会进入怪异模式(quirks mode),导致不同浏览器之间的渲染差异。
2. 问题:请解释一下盒模型的概念。
答案:盒模型是CSS布局的基础,它将HTML元素视为一个矩形盒子,由内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。
通过调整这些属性,我们可以控制元素在页面上的布局。
3. 问题:如何实现水平垂直居中?答案:有多种方法可以实现水平垂直居中,以下是一些常见的方法:- 使用Flexbox布局:父元素设置为display: flex; justify-content: center; align-items: center;- 使用Grid布局:父元素设置为display: grid; place-items: center;- 使用定位和transform:子元素设置position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);- 使用表格布局:父元素设置为display: table; 子元素设置为display: table-cell; vertical-align: middle; text-align: center;4. 问题:什么是响应式设计?答案:响应式设计是一种网页设计方法,旨在使网页能够适应不同设备和屏幕尺寸。
通过使用媒体查询(Media Queries)和弹性布局(如Flexbox或Grid),可以实现在不同设备上提供最佳的用户体验。
二、JavaScript面试题1. 问题:什么是闭包?请给出一个例子。
前端面试题及答案2020
![前端面试题及答案2020](https://img.taocdn.com/s3/m/934ed2a852d380eb62946ddb.png)
css的重绘与回流重绘:当节点需要更改外观而不会影响布局。
回流:DOM结构的修改引发DOM几何尺寸变化的时候,发生回流。
常见的几何属性有width、height、padding、margin、left、top、border 或者是DOM 节点发生增减移动。
减少重绘和回流的办法。
使用css3新增属性:translate替代top等方向值。
避免频繁使用style,而是采用class。
箭头函数和普通函数的区别是什么?普通函数this:1.this总是代表它的直接调用者。
2.在默认情况下,没找到直接调用者,this指的是window。
3.在严格模式下,没有直接调用者的函数中的this是undefined。
4.使用call,apply,bind绑定,this指的是绑定的对象。
箭头函数this:1.在使用=>定义函数的时候,this的指向是定义时所在的对象,而不是使用时所在的对象;2.不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误;3.不能够使用arguments 对象;4.不能使用yield 命令;讲一下let、var、const的区别•var 没有块级作用域,支持变量提升。
•let 有块级作用域,不支持变量提升。
不允许重复声明,暂存性死区。
不能通过window.变量名进行访问.•const 有块级作用域,不支持变量提升,不允许重复声明,暂存性死区。
声明一个变量一旦声明就不能改变,改变报错。
实现一个new的伪代码•创建一个对象•连接原型•绑定this•返回该对象前端面试题:箭头函数的this指向哪?解析:箭头函数不同于传统JavaScript中的函数,箭头函数并没有属于的this,它的所谓的this是捕获其所在上下的this值,作为的this 值,并且由于没有属于的this,箭头函数是不会被new调的,这个所谓的this也不会被改变.我们可以Babel理解下箭头函数:// ES6const obj = {getArrow() {return () =>{ console.log(this === obj);};}}转化后// ES5,由Babel 转译var obj = {getArrow: function getArrow() { var _this = this;return function (){ console.log(_this === obj); };}};前端面试题:谈谈你对this的了解?解析:this的指向不是在编写时确定的,是在执时确定的,同时,this不同的指向在于遵循了定的规则。
初级前端面试题
![初级前端面试题](https://img.taocdn.com/s3/m/f6040170effdc8d376eeaeaad1f34693daef1037.png)
初级前端面试题前端开发岗位是当前互联网行业中需求量比较大的一个职位,随着互联网行业的迅速发展,对前端开发人员的需求也越来越高。
为了选拔适合的候选人,面试人员常常会给面试者一些初级前端面试题。
以下是一些常见的初级前端面试题及其答案,供大家参考。
1. 请解释什么是HTML。
HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。
它由一系列的标签构成,每个标签代表网页中的一个元素,如标题、段落、链接等。
HTML被用来结构化信息,并为信息添加一些语义,使得浏览器能够正确地显示和解释网页内容。
2. 请解释什么是CSS。
CSS(Cascading Style Sheets)是一种用于控制网页样式的语言。
通过CSS,我们可以控制网页中各个元素的外观、布局和排版。
CSS通过选择器来选取HTML中的元素,并为其应用样式规则,从而改变其呈现方式。
3. 请解释什么是JavaScript。
JavaScript是一种基于对象和事件驱动的脚本语言,常用于为网页添加动态和交互特效。
与HTML和CSS不同,JavaScript是一种编程语言,具有更强大的功能。
它可以操作网页的各个元素、处理用户输入、与服务器进行交互等。
4. 请解释什么是响应式设计(Responsive Design)。
响应式设计是一种设计理念,旨在使网页能够根据用户的设备和屏幕大小来自适应地调整布局和样式。
通过使用CSS3的媒体查询和弹性网格布局等技术,响应式设计可以使网页在不同的设备上都能够以最佳的方式呈现,并提供更好的用户体验。
5. 请解释什么是跨域(Cross-Origin)。
跨域指的是在浏览器中,当一个网页的代码试图向另一个网域(域名/端口/协议)发送请求的时候,由于浏览器的同源策略限制,请求会被阻止。
跨域是为了防止恶意的网页获取其他网站的信息。
可以通过使用JSONP、CORS等技术来解决跨域问题。
6. 请解释什么是事件委托(Event Delegation)。
前端面试题及答案2020
![前端面试题及答案2020](https://img.taocdn.com/s3/m/add3b9b0581b6bd97f19eaf6.png)
web前端面试试题(含答案)一、先自我介绍一下,说一下项目的技术栈,以及项目中遇到的一些问题二、从整体中,看你对项目的认识,框架的认识和自己思考。
三、项目中有没有遇到什么难点,怎么解决。
四、如果你在创业公司你怎么从0开始做(选择什么框架,选择什么构建工具)。
五、说一下你项目中用到的技术栈,以及觉得得意和出色的点,以及让你头疼的点,怎么解决的。
六、一个业务场景,面对产品不断迭代,以及需求的变动该怎么应对,具体技术方案实现。
七、你的学习来源是什么。
八、你觉得哪个框架比较好,好在哪里。
九、你觉得最难得技术难点是什么。
十、你见过的最好的代码是什么十一、网站性能优化1. http 请求方面,减少请求数量,请求体积,对应的做法是,对项目资源进行压缩,控制项目资源的dns 解析在2到4个域名,提取公告的样式,公共的组件,雪碧图,缓存资源,2. 压缩资源,提取公共资源压缩,提取css ,js 公共方法3. 不要缩放图片,使用雪碧图,使用字体图表(阿里矢量图库)4. 使用CDN,抛开无用的cookie5. 减少重绘重排,CSS属性读写分离,最好不要用js 修改样式,dom 离线更新,渲染前指定图片的大小6. js 代码层面的优化,减少对字符串的计算,合理使用闭包,首屏的js 资源加载放在最底部十二、js 自定义事件实现1. 原生提供了3个方法实现自定义事件2. createEvent,设置事件类型,是html 事件还是鼠标事件3. initEvent 初始化事件,事件名称,是否允许冒泡,是否阻止自定义事件4. dispatchEvent 触发事件十三、angular 双向数据绑定与vue数据的双向数据绑定1. 二者都是MVVM 模式开发的典型代表2. angular 是通过脏检测实现,angular 会将UI 事件,请求事件,settimeout 这类延迟,的对象放入到事件监测的脏队列,当数据变化的时候,触发$diget 方法进行数据的更新,视图的渲染3. vue 通过数据属性的数据劫持和发布订阅的模式实现,大致可以理解成由3个模块组成,observer 完成对数据的劫持,compile 完成对模板片段的渲染,watcher 作为桥梁连接二者,订阅数据变化及更新视图十四、get与post 通讯的区别1. Get 请求能缓存,Post 不能2. Post 相对Get 安全一点点,因为Get 请求都包含在URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的.3. Post 可以通过request body来传输比Get 更多的数据,Get 没有这个技术4. URL有长度限制,会影响Get 请求,但是这个长度限制是浏览器规定的,不是RFC 规定的5. Post 支持更多的编码类型且不对数据类型限制十五、有没有去研究webpack的一些原理和机制,怎么实现的1. 解析webpack配置参数,合并从shell传入和webpack.config.js文件里配置的参数,生产最后的配置结果.2. 注册所有配置的插件,好让插件监听webpack构建生命周期的事件节点,以做出对应的反应.3. 从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去.4. 在解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换.5. 递归完后得到每个文件的最终结果,根据entry配置生成代码块chunk.6. 输出所有chunk到文件系统.十六、ES6模块与CommonJS模块的差异1. CommonJs 模块输出的是一个值的拷贝,ES6模块输出的是一个值的引用2. CommonJS 模块是运行时加载,ES6模块是编译时输出接口3. ES6输入的模块变量,只是一个符号链接,所以这个变量是只读的,对它进行重新赋值就会报错十七、模块加载AMD,CMD,CommonJS Modules/2.0 规范1. 这些规范的目的都是为了JavaScript 的模块化开发,特别是在浏览器端的2. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行3. CMD 推崇依赖就近,AMD 推崇依赖前置十八、浅拷贝和深拷贝的问题1. 深拷贝和浅拷贝是只针对Object和Array这样的复杂类型的2. 也就是说a和b指向了同一块内存,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝3. 浅拷贝, "Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象.它将返回目标对象4. 深拷贝,JSON.parse()和JSON.stringify()给了我们一个基本的解决办法.但是函数不能被正确处理。
前端面试题及答案2020
![前端面试题及答案2020](https://img.taocdn.com/s3/m/dee81adc59eef8c75ebfb34e.png)
前端面试题及答案20201. 浏览器篇1.1 常用那几种浏览器测试?主流浏览器的内核有哪些?Q1:IE、Safari、Chrome、Mozilla Firefox、OperaQ2:1、Trident内核代表产品为Internet Explorer,又称其为IE内核。
Trident(又称为MSHTML),是微软开发的一种排版引擎。
2、Gecko内核代表作品为Mozilla Firefox。
Gecko是一套开放源代码的、以C++编写的网页排版引擎,是最流行的排版引擎之一,仅次于Trident。
使用它的最著名浏览器有Firefox。
3、WebKit内核代表作品有Safari、Chrome。
WebKit是一个开源项目,主要用于Mac OS系统,它的特点在于源码结构清晰、渲染速度极快。
缺点是对网页代码的兼容性不高,导致一些编写不标准的网页无法正常显示。
4、Presto内核代表作品Opera。
Presto是由Opera Software开发的浏览器排版引擎,供Opera 7.0及以上使用。
1.2 说说你对浏览器内核的理解?浏览器内核主要包括以下三个技术分支:排版渲染引擎、JavaScript引擎,以及其他。
排版渲染引擎:主要负责取得网页的内容(HTML、XML、图像等)、整理信息,以及计算网页的显示方式,然后输出至显示器JavaScript引擎:是用来渲染JavaScript的,JavaScript的渲染速度越快,动态网页的展示也越快1.3 一个页面从输入URL 到页面加载显示完成,这个过程中都发生了什么?1.浏览器根据请求的URL交给DNS域名解析,找到真实IP;2.浏览器根据IP 地址向服务器发起TCP 连接,与浏览器建立TCP 三次握手a.客户端向服务器发送一个建立连接的请求b.服务器接到请求后发送同意连接的信号c.客户端接到同意连接的信号后,再次向服务器发送了确认信号,然后客户端与服务器的连接建立成功3.浏览器发送HTTP请求浏览器根据URL 内容生成HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等;4.服务器处理请求并返回HTTP报文(HTTP响应报文也是由三部分组成: 状态码, 响应报头和响应报文。
前端面试题目及答案
![前端面试题目及答案](https://img.taocdn.com/s3/m/aa445aae162ded630b1c59eef8c75fbfc77d9498.png)
前端面试题目及答案一、HTML基础1. 什么是HTML?HTML的全称是什么?HTML是一种标记语言,用于定义网页的结构和内容。
其全称为超文本标记语言(HyperText Markup Language)。
2. 请列举HTML中常用的标签,并简要介绍其作用。
- `<h1>`至`<h6>`:用于定义标题,`<h1>`为最高级标题,`<h6>`为最低级标题。
- `<p>`:用于定义段落。
- `<a>`:用于创建超链接。
- `<img>`:用于插入图像。
- `<div>`:用于定义文档中的一个分区或节。
- `<span>`:用于对文档中的一部分进行分组。
3. HTML中的行内元素和块级元素有什么区别?行内元素通常在文档中与其他内容同行显示,不会独占一行,只占据自身内容所需的空间。
常见的行内元素有`<a>`、`<span>`等。
块级元素独占一行,会自动换行,并占据其父元素的全部宽度。
常见的块级元素有`<div>`、`<p>`等。
4. 请解释HTML5中的语义化标签,并列举几个例子。
HTML5引入了一些语义化标签,有助于理解和组织页面结构。
它们能够明确描述其内容的含义,提高了可读性和可维护性。
常见的例子包括:- `<header>`:文档或节的头部。
- `<nav>`:导航链接的区域。
- `<article>`:独立的自包含内容块。
- `<section>`:文档中的独立部分。
- `<footer>`:文档或节的底部。
二、CSS基础1. 什么是CSS?CSS的全称是什么?CSS是一种用于描述网页样式和布局的样式表语言。
其全称为层叠样式表(Cascading Style Sheets)。
2. 请解释什么是CSS选择器,并列举几种常见的选择器。
前端开发面试题目及答案
![前端开发面试题目及答案](https://img.taocdn.com/s3/m/abec43dc534de518964bcf84b9d528ea81c72f25.png)
前端开发面试题目及答案1. 介绍一下前端开发领域的常见技术栈?前端开发领域的常见技术栈包括HTML、CSS、JavaScript等核心技术。
HTML用于定义网页的内容结构,CSS用于定义网页的样式,JavaScript用于实现网页的交互和动态效果。
此外,前端开发还涉及到响应式设计、移动端开发、前端框架(如React、Angular、Vue.js等)、前端构建工具(如Webpack、Gulp等)等技术。
2. 什么是响应式设计?响应式设计是一种网页设计和开发的方法,可以使网页在不同设备上展示出最佳的用户体验。
通过使用CSS媒体查询、弹性网格布局以及其他技术手段,响应式设计可以实现网页在桌面、平板和手机等不同设备上自动适应屏幕大小、分辨率和方向的变化。
3. 请解释一下什么是跨域,如何解决跨域问题?跨域指的是在浏览器中,不同域名之间进行数据通信时会受到同源策略的限制,而无法直接访问对方的数据。
为了解决跨域问题,可以使用以下方法:- JSONP:通过动态创建`<script>`标签,利用其不受同源策略限制的特性,来实现跨域请求和数据的获取。
- CORS:服务端设置响应头中的`Access-Control-Allow-Origin`字段,允许指定的域名访问接口。
- 代理服务器:将前端的请求发送到同源的后端服务器上,由后端服务器代为向目标服务器发送请求并返回数据给前端。
4. 什么是闭包?请举例说明闭包的使用场景。
闭包是指函数能够访问并操作其词法作用域以外的数据的能力。
闭包形成的条件是内部的函数引用了外部函数的变量,导致外部函数的执行环境被保留在内存中,而不会被销毁。
以下是闭包的一个使用场景的示例:```javascriptfunction outer() {var count = 0;function inner() {count++;console.log(count);}return inner;}var closure = outer();closure(); // 输出:1closure(); // 输出:2closure(); // 输出:3```在这个例子中,`inner`函数作为外部函数`outer`的返回值,被赋予给变量`closure`。
前端或移动开发岗位招聘面试题及回答建议(某大型集团公司)
![前端或移动开发岗位招聘面试题及回答建议(某大型集团公司)](https://img.taocdn.com/s3/m/6e5f0834001ca300a6c30c22590102020740f298.png)
招聘前端或移动开发岗位面试题及回答建议(某大型集团公司)面试问答题(总共10个问题)第一题题目:请解释什么是“事件冒泡”与“事件捕获”,并描述在前端开发中它们是如何工作的?请同时提供一个简单的示例来说明如何使用 JavaScript 来改变默认的事件传播行为。
答案与解析:在前端开发中,“事件冒泡”(Event Bubbling)和“事件捕获”(Event Capturing)是描述用户交互事件(如点击、悬停等)如何在 DOM(文档对象模型)树中传播的两种机制。
•事件冒泡:这是默认的行为,当用户触发某个事件(例如点击一个按钮),该事件首先由最具体的元素(即目标元素)触发,然后逐级向上层元素(父元素)传递,直到达到顶层元素(通常是 document 或 window)。
这个过程可以比喻成气泡从水底上升到水面。
•事件捕获:与事件冒泡相反,事件捕获是指事件从最外层的元素开始触发,逐级向下传递,直至到达最具体的元素。
它提供了在事件到达目标元素之前拦截它的机会。
这两种机制允许开发者在不同的层级上处理同一个事件。
通过合理利用事件冒泡和事件捕获,可以实现复杂的交互逻辑,例如阻止事件向上传播或者提前处理事件。
示例代码:下面是一个简单的 HTML 结构以及 JavaScript 示例,展示如何使用addEventListener 方法来指定事件处理器,并使用 event.stopPropagation() 来阻止事件的进一步传播。
HTML 部分:事件传播示例父元素子元素JavaScript 部分(`script.js`):我们将在`script.js` 文件中添加事件监听器,并演示如何阻止事件冒泡。
JavaScript 部分(`script.js`) 示例代码:```javascript // 获取DOM元素const parent = document.getElementById('parent'); const child = document.getElementById('child'); // 使用事件冒泡模式添加事件监听器child.addEventListener('click', function(event) { alert('点击了子元素'); // 阻止事件冒泡event.stopPropagation(); }); // 在父元素上也添加点击事件监听器parent.addEventListener('click', function() { alert('点击了父元素'); });在这个例子中,当用户点击子元素(按钮)时,会弹出“点击了子元素”的提示框,但由于调用了event.stopPropagation(),事件不会继续冒泡到父元素,因此父元素的事件处理器不会被执行,相应的提示框也就不会出现。
java前端面试题目(3篇)
![java前端面试题目(3篇)](https://img.taocdn.com/s3/m/950fac63e97101f69e3143323968011ca300f7ff.png)
第1篇一、Java基础知识1. 请简述Java的基本特点。
2. 什么是JVM?简述JVM的运行原理。
3. 请简述Java中的四种访问控制符及其作用。
4. 请解释Java中的静态变量和静态方法。
5. 请简述Java中的继承和多态。
6. 请解释Java中的final关键字。
7. 请简述Java中的异常处理机制。
8. 请解释Java中的集合框架,包括List、Set和Map等。
9. 请简述Java中的泛型。
10. 请解释Java中的反射机制。
二、Java Web基础知识1. 什么是Servlet?简述Servlet的工作原理。
2. 什么是JSP?简述JSP的工作原理。
3. 请解释Java Web中的请求和响应。
4. 什么是MVC模式?请简述MVC模式在Java Web中的应用。
5. 什么是JDBC?请简述JDBC的使用方法。
6. 什么是JPA?请简述JPA的作用和特点。
7. 什么是Spring框架?请简述Spring框架的主要功能和优势。
8. 什么是Spring MVC框架?请简述Spring MVC框架的工作流程。
9. 什么是Spring Boot?请简述Spring Boot的特点和优势。
10. 什么是RESTful API?请简述RESTful API的设计原则。
三、前端基础知识1. 请简述HTML的基本结构。
2. 请解释HTML中的标签和属性。
3. 请简述CSS的基本语法和选择器。
4. 请解释JavaScript的基本语法和特点。
5. 请简述DOM的基本概念和操作方法。
6. 请解释JavaScript中的事件处理机制。
7. 请简述JavaScript中的闭包和原型链。
8. 请解释JSON的基本语法和特点。
9. 请简述AJAX的工作原理和实现方法。
10. 请解释前端性能优化的方法。
四、框架与工具1. 请简述React的基本原理和特点。
2. 请简述Vue的基本原理和特点。
3. 请简述Angular的基本原理和特点。
前端开发人员面试题目与答案
![前端开发人员面试题目与答案](https://img.taocdn.com/s3/m/d16130cb85868762caaedd3383c4bb4cf7ecb70d.png)
前端开发人员面试题目与答案面试题目:请描述一下前端开发人员的角色和职责。
前端开发人员是一种专门负责前端技术开发与实施的职业。
他们在网站或应用程序的开发过程中负责实现用户与界面之间的交互,并确保用户能够友好、高效地使用应用程序。
以下是前端开发人员的主要角色和职责:1. 界面开发:前端开发人员负责将设计师提供的设计稿转化为实际的网页或应用程序界面。
他们使用HTML、CSS和JavaScript等前端技术来实现网页的布局、样式和交互效果,确保界面的美观和用户友好性。
2. 前端框架和库的使用:前端开发人员应熟悉各种前端框架和库,如React、Vue.js等,以提高开发效率和代码质量。
他们需要根据项目需求选择合适的框架和库,并能够熟练地使用它们来构建高质量的前端应用。
3. 跨平台和响应式设计:现代前端开发不仅仅局限于传统的网页开发,还需要考虑多个设备和平台的兼容性。
前端开发人员需要具备跨平台和响应式设计的能力,使得应用程序能够适应不同的屏幕尺寸和设备。
4. 与后端开发人员的合作:前端开发人员与后端开发人员密切合作,确保前后端的数据交互和业务逻辑的一致性。
他们需要理解后端API的设计和使用,与后端开发人员沟通协作,以保证整个应用程序的正常运行。
5. 优化和性能调优:前端开发人员需要保证应用程序的性能和用户体验的最佳化。
他们需要优化代码、图像和资源加载,减少页面加载时间,提高应用程序的响应速度和用户满意度。
面试题目:请谈谈你在前端开发方面的经验和项目经历。
作为一名前端开发人员,我拥有丰富的前端开发经验和项目经历。
下面是我在前端开发方面的一些亮点经历:1. 公司官方网站开发:作为主要开发人员之一,我参与了公司官方网站的开发工作。
我使用HTML、CSS和JavaScript等前端技术,将设计师提供的设计稿转化为实际的网页界面,并实现了网站的交互效果和响应式设计。
通过团队的协作,我们成功地发布了一个用户友好、美观且功能完善的公司官方网站。
前端或移动开发岗位招聘面试题及回答建议(某大型集团公司)2025年
![前端或移动开发岗位招聘面试题及回答建议(某大型集团公司)2025年](https://img.taocdn.com/s3/m/a59b62eded3a87c24028915f804d2b160b4e86af.png)
2025年招聘前端或移动开发岗位面试题及回答建议(某大型集团公司)面试问答题(总共10个问题)第一题请描述一下你理解的前端开发和移动开发的主要区别,并举例说明如何在项目中应用这些技术。
答案及解析:前端开发和移动开发是现代软件开发领域的两个重要分支,它们各自关注不同的技术栈和应用场景。
前端开发:前端开发主要关注用户界面(UI)和用户体验(UX)。
前端开发者使用HTML、CSS 和JavaScript等技术来构建网页和应用程序的外观和交互功能。
前端开发的核心技术包括:•HTML(HyperText Markup Language):用于创建网页的结构。
•CSS(Cascading Style Sheets):用于设置网页的样式和布局。
•JavaScript:用于添加动态行为和交互功能。
移动开发:移动开发专注于为移动设备(如智能手机和平板电脑)开发应用程序。
移动开发者使用各种平台特定的技术和框架来开发应用程序。
主流的移动开发平台包括:•iOS:使用Swift或Objective-C编程语言。
•Android:使用Java或Kotlin编程语言。
移动开发的核心技术包括:•Swift/Kotlin:用于iOS开发。
•Java/Kotlin:用于Android开发。
•React Native/Angular/Vue.js:用于跨平台移动应用开发。
在项目中的应用:假设我们有一个大型集团公司的在线商城项目,前端开发团队负责构建用户友好的网页界面和交互功能,而移动开发团队则负责开发iOS和Android应用程序。
前端开发者可以使用React.js来构建响应式的前端界面,并使用Redux来管理应用状态。
移动开发者可以使用React Native来开发跨平台的移动应用,这样可以减少开发时间和成本。
在实际项目中,前端和移动开发团队需要紧密合作,确保前后端的数据同步和用户体验的一致性。
例如,当用户在移动应用中浏览商品并选择加入购物车时,前端开发者需要通过API与后端通信,更新购物车数据,并将最新的购物车信息展示在网页上。
史上最全前端面试题(含答案)
![史上最全前端面试题(含答案)](https://img.taocdn.com/s3/m/bfce75cf195f312b3169a5e9.png)
HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性;2.xhtml和html有什么区别HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同:XHTML 元素必须被正确地嵌套。
XHTML 元素必须被关闭。
标签名必须用小写字母。
XHTML 文档必须拥有根元素。
3.Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? 用于声明文档使用那种规范(html/Xhtml)一般为严格过度基于框架的html 文档加入XMl声明可触发,解析方式更改为IE5.5 拥有IE5.5的bug4.行内元素有哪些?块级元素有哪些?CSS的盒模型?块级元素:div p h1 h2 h3 h4 form ul行内元素: a b br i span input selectCss盒模型:内容,border ,margin,padding5.CSS引入的方式有哪些? link和@import的区别是?内联内嵌外链导入区别:同时加载前者无兼容性,后者CSS2.1以下浏览器不支持Link 支持使用javascript改变样式,后者不可6.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?标签选择符类选择符 id选择符继承不如指定 Id>class>标签选择后者优先级高7.前端页面有哪三层构成,分别是什么?作用是什么?结构层 Html 表示层 CSS 行为层 js8.css的基本语句构成是?选择器{属性1:值1;属性2:值2;……}9.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?Ie(Ie内核) 火狐(Gecko)谷歌(webkit) opear(Presto)10.写出几种IE6 BUG的解决方法1.双边距BUG float引起的使用display2.3像素问题使用float引起的使用dislpay:inline -3px3.超链接hover 点击后失效使用正确的书写顺序 link visited hover active4.Ie z-index问题给父级添加position:relative5.Png 透明使用js代码改6.Min-height 最小高度!Important 解决’7.select 在ie6下遮盖使用iframe嵌套8.为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)11.<img>标签上title与alt属性的区别是什么?Alt 当图片不显示是用文字代表。
合肥前端面试题目(3篇)
![合肥前端面试题目(3篇)](https://img.taocdn.com/s3/m/958be8a6d4bbfd0a79563c1ec5da50e2524dd1e3.png)
第1篇一、基础知识1. HTML(1)请解释HTML5的新特性。
(2)什么是语义化标签?举例说明。
(3)什么是HTML5的离线应用缓存?如何实现?(4)请解释HTML5中的canvas和svg的区别。
(5)请解释HTML5中的localStorage和sessionStorage的区别。
2. CSS(1)请解释CSS盒模型。
(2)请解释CSS的继承、层叠和覆盖。
(3)请解释CSS的响应式设计。
(4)请解释CSS的伪类和伪元素。
(5)请解释CSS的布局方式,如Flexbox、Grid等。
3. JavaScript(1)请解释JavaScript中的变量提升。
(2)请解释JavaScript中的闭包。
(3)请解释JavaScript中的原型链。
(4)请解释JavaScript中的事件循环。
(5)请解释JavaScript中的异步编程。
4. ES6新特性(1)请解释ES6中的let和const。
(2)请解释ES6中的箭头函数。
(3)请解释ES6中的解构赋值。
(4)请解释ES6中的模板字符串。
(5)请解释ES6中的模块化。
二、框架和库1. Vue.js(1)请解释Vue.js的MVVM模式。
(2)请解释Vue.js的响应式原理。
(3)请解释Vue.js的生命周期钩子。
(4)请解释Vue.js的组件化开发。
(5)请解释Vue.js中的v-if、v-show和v-for指令。
2. React(1)请解释React的虚拟DOM。
(2)请解释React的组件生命周期。
(3)请解释React的props和state。
(4)请解释React中的hooks。
(5)请解释React中的context和refs。
3. Angular(1)请解释Angular的双向数据绑定。
(2)请解释Angular的服务和指令。
(3)请解释Angular的依赖注入。
(4)请解释Angular的模块和组件。
(5)请解释Angular的表单处理。
前端相关的面试题
![前端相关的面试题](https://img.taocdn.com/s3/m/6c3c3c44dc36a32d7375a417866fb84ae45cc3b8.png)
前端相关的面试题一、HTML部分1. 说说HTML5有哪些新特性?语义化标签,像<header>、<footer>、<nav>等,这些标签让HTML结构更清晰,搜索引擎也能更好地理解页面内容。
本地存储,有localStorage和sessionStorage。
localStorage可以长期存储数据,关闭浏览器后数据还在;sessionStorage是会话级别的存储,关闭浏览器窗口就没了。
音频和视频标签,<audio>和<video>,不需要借助Flash等插件就能在网页上播放音视频啦。
画布(canvas)元素,可以通过JavaScript在网页上绘制图形、动画等,可玩性很强。
2. 如何在HTML中实现页面的布局?可以用传统的表格布局,不过这种方式代码比较冗余,可维护性差。
用CSS布局是现在的主流。
比如通过float属性让元素浮动来实现多列布局;用flex布局就更方便了,通过设置容器的display:flex,然后利用flex - properties属性来控制子元素的排列方式、大小等;还有grid布局,它像一个网格系统,能精确地控制元素在网格中的位置。
3. 解释一下HTML中的DOCTYPE声明的作用?DOCTYPE声明是告诉浏览器这个HTML文档是按照什么标准编写的。
如果没有DOCTYPE声明,浏览器可能会以怪异模式渲染页面,这可能会导致页面布局错乱。
比如在HTML5中,DOCTYPE声明很简洁,<!DOCTYPE html>,这让浏览器知道是按照HTML5标准来解析这个页面的。
二、CSS部分1. 什么是CSS盒模型?CSS盒模型描述了HTML元素在页面上的布局方式。
一个元素在页面上所占的空间由内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。
标准盒模型中,width和height只包含内容的宽度和高度;而在IE盒模型(怪异盒模型)中,width和height包含内容、内边距和边框的宽度。
IT面试笔试题目及参考答案
![IT面试笔试题目及参考答案](https://img.taocdn.com/s3/m/0d0d64f7cf2f0066f5335a8102d276a20029606f.png)
2020IT面试笔试题目及参考答案2020年前端面试题目1.1、前端 MV框架的意义早期前端都是比较简单,基本以页面为工作单元,内容以浏览型为主,也偶尔有简单的表单操作,基本不太需要框架。
随着 AJAX 的出现,Web2.0的兴起,人们可以在页面上可以做比较复杂的事情了,然后前端框架才真正出现了。
如果是页面型产品,多数确实不太需要它,因为页面中的 JavaScript代码,处理交互的绝对远远超过处理模型的,但是如果是应用软件类产品,这就太需要了。
长期做某个行业软件的公司,一般都会沉淀下来一些业务组件,主要体现在数据模型、业务规则和业务流程,这些组件基本都存在于后端,在前端很少有相应的组织。
从协作关系上讲,很多前端开发团队每个成员的职责不是很清晰,有了前端的 MV框架,这个状况会大有改观。
之所以感受不到 MV框架的重要性,是因为Model部分代码较少,View的相对多一些。
如果主要在操作View和Controller,那当然 jQuery 这类库比较好用了。
参考《前端 MV框架的意义》1.2、请简述盒模型IE6盒子模型与W3C盒子模型。
文档中的每个元素被描绘为矩形盒子。
盒子有四个边界:外边距边界margin, 边框边界bder, 内边距边界padding与内容边界content。
CSS3中有个box-sizing属性可以控制盒子的计算方式,content-box:padding和bder不被包含在定义的width和height之内。
对象的实际宽度等于设置的width值和bder、padding之和。
(W3C盒子模型) bder-box:padding和bder被包含在定义的width和height之内。
对象的实际宽度就等于设置的width值。
(IE6盒子模型)参考《盒模型》1.3、请你谈谈Cookie的弊端a. 每个特定的域名下最多生成的cookie个数有限制b. IE和Opera 会清理近期最少使用的cookie,Firefox会随机清理cookiec. cookie的最大大约为4096字节,为了兼容性,一般不能超过4095字节d. 安全性问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
web前端面试试题(含答案)
一、先自我介绍一下,说一下项目的技术栈,以及项目中遇到的一些问题
二、从整体中,看你对项目的认识,框架的认识和自己思考。
三、项目中有没有遇到什么难点,怎么解决。
四、如果你在创业公司你怎么从0开始做(选择什么框架,选择什么构建工具)。
五、说一下你项目中用到的技术栈,以及觉得得意和出色的点,以及让你头疼的点,怎么解决的。
六、一个业务场景,面对产品不断迭代,以及需求的变动该怎么应对,具体技术方案实现。
七、你的学习来源是什么。
八、你觉得哪个框架比较好,好在哪里。
九、你觉得最难得技术难点是什么。
十、你见过的最好的代码是什么
十一、网站性能优化
1. http 请求方面,减少请求数量,请求体积,对应的做法是,对项目资源进行压缩,控制项目资源的dns 解析在2到4个域名,提取公告的样式,公共的组件,雪碧图,缓存资源,
2. 压缩资源,提取公共资源压缩,提取css ,js 公共方法
3. 不要缩放图片,使用雪碧图,使用字体图表(阿里矢量图库)
4. 使用CDN,抛开无用的cookie
5. 减少重绘重排,CSS属性读写分离,最好不要用js 修改样式,dom 离线更
新,渲染前指定图片的大小
6. js 代码层面的优化,减少对字符串的计算,合理使用闭包,首屏的js 资源加载放在最底部
十二、js 自定义事件实现
1. 原生提供了3个方法实现自定义事件
2. createEvent,设置事件类型,是html 事件还是鼠标事件
3. initEvent 初始化事件,事件名称,是否允许冒泡,是否阻止自定义事件
4. dispatchEvent 触发事件
十三、angular 双向数据绑定与vue数据的双向数据绑定
1. 二者都是MVVM 模式开发的典型代表
2. angular 是通过脏检测实现,angular 会将UI 事件,请求事件,settimeout 这类延迟,的对象放入到事件监测的脏队列,当数据变化的时候,触发$diget 方法进行数据的更新,视图的渲染
3. vue 通过数据属性的数据劫持和发布订阅的模式实现,大致可以理解成由3个模块组成,observer 完成对数据的劫持,compile 完成对模板片段的渲染,watcher 作为桥梁连接二者,订阅数据变化及更新视图
十四、get与post 通讯的区别
1. Get 请求能缓存,Post 不能
2. Post 相对Get 安全一点点,因为Get 请求都包含在URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的.
3. Post 可以通过request body来传输比Get 更多的数据,Get 没有这个技术
4. URL有长度限制,会影响Get 请求,但是这个长度限制是浏览器规定的,不是RFC 规定的
5. Post 支持更多的编码类型且不对数据类型限制
十五、有没有去研究webpack的一些原理和机制,怎么实现的
1. 解析webpack配置参数,合并从shell传入和webpack.config.js文件里配置的参数,生产最后的配置结果.
2. 注册所有配置的插件,好让插件监听webpack构建生命周期的事件节点,以做出对应的反应.
3. 从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去.
4. 在解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换.
5. 递归完后得到每个文件的最终结果,根据entry配置生成代码块chunk.
6. 输出所有chunk到文件系统.
十六、ES6模块与CommonJS模块的差异
1. CommonJs 模块输出的是一个值的拷贝,ES6模块输出的是一个值的引用
2. CommonJS 模块是运行时加载,ES6模块是编译时输出接口
3. ES6输入的模块变量,只是一个符号链接,所以这个变量是只读的,对它进行重新赋值就会报错
十七、模块加载AMD,CMD,CommonJS Modules/2.0 规范
1. 这些规范的目的都是为了JavaScript 的模块化开发,特别是在浏览器端
的
2. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行
3. CMD 推崇依赖就近,AMD 推崇依赖前置
十八、浅拷贝和深拷贝的问题
1. 深拷贝和浅拷贝是只针对Object和Array这样的复杂类型的
2. 也就是说a和b指向了同一块内存,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝
3. 浅拷贝, "Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象.它将返回目标对象
4. 深拷贝,JSON.parse()和JSON.stringify()给了我们一个基本的解决办法.但是函数不能被正确处理。