前言
先介绍一下自己的情况吧

文章转载,下面用第一人称:

内蒙古呼和浩特某大学毕业,专科,计算机多媒体专业毕业 16年出来工作,工作经验四年,之前主要做平面相关,自己喜欢瞎折腾,从17年开始研究前端,然后公司内部转岗到开发部门工作,算下来前端经验也快三年之久。

年底由于种种原因想换一份工作,但由于太忙,没认真搞简历,也没怎么复习基础,导致很多本来会的都没敢往简历上写。于是写了一个简版的简历挂在Boss直聘上,准备年过完再认真筹备这件事情。 令我意外的是,近一个月收到多家公司的面试邀请。

因此总结一波2020年最新面试题,希望对大家有所帮助!后面的答案为自行整理,如有疏漏,欢迎指正!
2020 前端面试 | 第二波面试题总结
面试总结

  • 重视基础和原理
  • 重视基础和原理
  • 重视基础和原理

以下面试均为电话面试
一面

  • 原型
构造函数是一种特殊的方法,主要用来在创建对象时初始化对象。每个构造函数都有prototype(原型)(箭头函数以及Function.prototype.bind()没有)属性,
这个prototype(原型)属性是一个指针,指向一个对象,这个对象的用途是包含特定类型的所有实例共享的
属性和方法,即这个原型对象是用来给实例对象共享属性和方法的。每个实例对象的__proto__都指向这个
构造函数/类的prototype属性。面向对象的三大特性:继承/多态/封装关于new操作符:1. new执行的函数, 函数内部默认生成了一个对象2. 函数内部的this默认指向了这个new生成的对象3. new执行函数生成的这个对象, 是函数的默认返回值ES5例子:
function Person(obj) {this.name = obj.namethis.age= obj.age
}
// 原型方法
Person.prototype.say = function() {console.log('你好,', this.name )
}
// p为实例化对象,new Person()这个操作称为构造函数的实例化
let p = new Person({name: '番茄', age: '27'})
console.log(p.name, p.age)
p.say()ES6例子:
class Person{constructor(obj) {this.name = obj.namethis.age= obj.age}say() {console.log(this.name)}
}let p = new Person({name: 'ES6-番茄', age: '27'})
console.log(p.name, p.age)
p.say()

关于原型的继承我们借助寄生组合继承

function Person(obj) {this.name = obj.namethis.age = obj.age
}
Person.prototype.add = function(value){console.log(value)
}
var p1 = new Person({name:"番茄", age: 18})function Person1(obj) {Person.call(this, obj)this.sex = obj.sex
}
// 这一步是继承的关键
Person1.prototype = Object.create(Person.prototype)
Person1.prototype.play = function(value){console.log(value)
}
var p2 = new Person1({name:"鸡蛋", age: 118, sex: "男"})

闭包

首先说明什么是闭包,闭包简单来说就是函数嵌套函数,内部函数引用来外部函数的变量,从而导致垃圾回收
机制没有把当前变量回收掉,这样的操作带来了内存泄漏的影响,当内存泄漏到一定程度会影响你的项目运行
变得卡顿等等问题。因此在项目中我们要尽量避免内存泄漏。

原型链

原型链实际上在上面原型的问题中就有涉及到,在原型的继承中,我们继承来多个原型,这里再提一下实现完美
继承的方案,通过借助寄生组合继承,PersonB.prototype = Object.create(PersonA.prototype)
这是当我们实例化PersonB得到实例化对象,访问实例化对象的属性时会触发get方法,它会先在自身属性上查
找,如果没有这个属性,就会去__proto__中查找,一层层向上直到查找到顶层对象Object,这个查找的过程
就是原型链来。

vuex

vuex是一个专为vue.js应用程序开发的状态管理器,它采用集中式存储管理应用的所有组件的状态,并且以相
应的规则保证状态以一种可以预测的方式发生变化。state: vuex使用单一状态树,用一个对象就包含来全部的应用层级状态mutation: 更改vuex中state的状态的唯一方法就是提交mutationaction: action提交的是mutation,而不是直接变更状态,action可以包含任意异步操作getter: 相当于vue中的computed计算属性

  • vue-router
vue-router是vuex.js官方的路由管理器,它和vue.js的核心深度集成,让构建但页面应用变得易如反掌<router-link> 组件支持用户在具有路由功能的应用中 (点击) 导航。 通过 to 属性指定目标地址<router-view> 组件是一个 functional 组件,渲染路径匹配到的视图组件。<keep-alive> 组件是一个用来缓存组件router.beforeEachrouter.afterEachto: Route: 即将要进入的目标 路由对象from: Route: 当前导航正要离开的路由next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。介绍了路由守卫及用法,在项目中路由守卫起到的作用等等

深拷贝浅拷贝

浅拷贝:浅拷贝通过ES6新特性Object.assign()或者通过扩展运算法...来达到浅拷贝的目的,浅拷贝修改
副本,不会影响原数据,但缺点是浅拷贝只能拷贝第一层的数据,且都是值类型数据,如果有引用型数据,修改
副本会影响原数据。深拷贝:通过利用JSON.parse(JSON.stringify())来实现深拷贝的目的,但利用JSON拷贝也是有缺点的,
当要拷贝的数据中含有undefined/function/symbol类型是无法进行拷贝的,当然我们想项目开发中需要
深拷贝的数据一般不会含有以上三种类型,如有需要可以自己在封装一个函数来实现。

Vue通信

1.props和$emit
2.中央事件总线 EventBus(基本不用)
3.vuex(官方推荐状态管理器)
4.$parent和$children
当然还有一些其他办法,但基本不常用,或者用起来太复杂来。 介绍来通信的方式,还可以扩展说一下使用
场景,如何使用,注意事项之类的。

你在工作终于到那些问题,解决方法是什么

经常遇到的问题就是Cannot read property ‘prototype’ of undefined
解决办法通过浏览器报错提示代码定位问题,解决问题Vue项目中遇到视图不更新,方法不执行,埋点不触发等问题
一般解决方案查看浏览器报错,查看代码运行到那个阶段未之行结束,阅读源码以及相关文档等
然后举出来最近开发的项目中遇到的算是两个比较大的问题。

webpack配置入口出口

module.exports={//入口文件的配置项entry:{},//出口文件的配置项output:{},//模块:例如解读CSS,图片如何转换,压缩module:{},//插件,用于生产模版和各项功能plugins:[],//配置webpack开发服务功能devServer:{}
}
简单描述了一下这几个属性是干什么的。
描述一下npm run dev / npm run build执行的是哪些文件
通过配置proxyTable来达到开发环境跨域的问题,然后又可以扩展和他聊聊跨域的产生,如何跨域
最后可以在聊聊webpack的优化,例如babel-loader的优化,gzip压缩等等

webpack3和webpack4区别

1.modewebpack增加了一个mode配置,只有两种值development | production。对不同的环境他会启用不同的配置。2.CommonsChunkPluginCommonChunksPlugin已经从webpack4中移除。
可使用optimization.splitChunks进行模块划分(提取公用代码)。
但是需要注意一个问题,默认配置只会对异步请求的模块进行提取拆分,如果要对entry进行拆分
需要设置optimization.splitChunks.chunks = 'all'。3.webpack4使用MiniCssExtractPlugin取代ExtractTextWebpackPlugin。4.代码分割。使用动态import,而不是用system.import或者require.ensure5.vue-loader。使用vue-loader插件为.vue文件中的各部分使用相对应的loader,比如css-loader等6.UglifyJsPlugin现在也不需要使用这个plugin了,只需要使用optimization.minimize为true就行,production mode下面自动为trueoptimization.minimizer可以配置你自己的压缩程序

二面

  • 陈述输入URL回车后的过程
1.读取缓存: 搜索自身的 DNS 缓存。(如果 DNS 缓存中找到IP 地址就跳过了接下来查找 IP 地址步骤,直接访问该 IP 地址。)
2.DNS 解析:将域名解析成 IP 地址
3.TCP 连接:TCP 三次握手,简易描述三次握手客户端:服务端你在么? 服务端:客户端我在,你要连接我么? 客户端:是的服务端,我要链接。 连接打通,可以开始请求来
4.发送 HTTP 请求
5.服务器处理请求并返回 HTTP 报文
6.浏览器解析渲染页面
7.断开连接:TCP 四次挥手关于第六步浏览器解析渲染页面又可以聊聊如果返回的是html页面
根据 HTML 解析出 DOM 树
根据 CSS 解析生成 CSS 规则树
结合 DOM 树和 CSS 规则树,生成渲染树
根据渲染树计算每一个节点的信息
根据计算好的信息绘制页面

  • 陈述http
基本概念:HTTP,全称为 HyperText Transfer Protocol,即为超文本传输协议。是互联网应用最为广泛的一种网络协议
所有的 www 文件都必须遵守这个标准。http特性:HTTP 是无连接无状态的
HTTP 一般构建于 TCP/IP 协议之上,默认端口号是 80
HTTP 可以分为两个部分,即请求和响应。http请求:HTTP 定义了在与服务器交互的不同方式,最常用的方法有 4 种
分别是 GET,POST,PUT, DELETE。URL 全称为资源描述符,可以这么认为:一个 URL 地址
对应着一个网络上的资源,而 HTTP 中的 GET,POST,PUT,DELETE
就对应着对这个资源的查询,修改,增添,删除4个操作。HTTP 请求由 3 个部分构成,分别是:状态行,请求头(Request Header),请求正文。HTTP 响应由 3 个部分构成,分别是:状态行,响应头(Response Header),响应正文。HTTP 响应中包含一个状态码,用来表示服务器对客户端响应的结果。
状态码一般由3位构成:1xx : 表示请求已经接受了,继续处理。
2xx : 表示请求已经处理掉了。
3xx : 重定向。
4xx : 一般表示客户端有错误,请求无法实现。
5xx : 一般为服务器端的错误。比如常见的状态码:200 OK 客户端请求成功。
301 Moved Permanently 请求永久重定向。
302 Moved Temporarily 请求临时重定向。
304 Not Modified 文件未修改,可以直接使用缓存的文件。
400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized 请求未经授权,无法访问。
403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因。
404 Not Found 请求的资源不存在,比如输入了错误的URL。
500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。大概还有一些关于http请求和响应头信息的介绍。

说说Vue原理

Vue是采用数据劫持配合发布者-订阅者模式,通过Object.defineProperty来()来劫持各个属性的getter和setter
在数据发生变化的时候,发布消息给依赖收集器,去通知观察者,做出对应的回调函数去更新视图。具体就是:
MVVM作为绑定的入口,整合Observe,Compil和Watcher三者,通过Observe来监听model的变化
通过Compil来解析编译模版指令,最终利用Watcher搭起Observe和Compil之前的通信桥梁
从而达到数据变化 => 更新视图,视图交互变化(input) => 数据model变更的双向绑定效果。

Vue路由守卫有哪些,怎么设置,使用场景等

常用的两个路由守卫:router.beforeEach 和 router.afterEach每个守卫方法接收三个参数:to: Route: 即将要进入的目标 路由对象from: Route: 当前导航正要离开的路由next: Function: 一定要调用该方法来 resolve 这个钩子。在项目中,一般在beforeEach这个钩子函数中进行路由跳转的一些信息判断。
判断是否登录,是否拿到对应的路由权限等等。

数组去重

第一种: 通过ES6新特性Set()
例如: var arr = [1, 2, 3, 1, 2]; var newArr= [...new Set(arr)]

第二种:封装函数利用 {} 和【】
function uniqueEasy(arr) {if(!arr instanceof Array) {throw Error('当前传入的不是数组')}let list = []let obj = {}arr.forEach(item => {if(!obj[item]) {list.push(item)obj[item] = true}})return list
}

当然还有其他的方法,但本人项目中一般使用以上两种基本满足

  • Set,Map解构
ES6 提供了新的数据结构 Set。
它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

对数组排序

第一种方法利用sort方法
第二种利用冒泡排序

说一说js是什么语言

JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。js语言是弱语言类型, 因此我们在项目开发中当我们随意更该某个变量的数据类型后
有可能会导致其他引用这个变量的方法中报错等等。

原型

JavaScript中的对象都有一个特殊的 prototype 内置属性,其实就是对其他对象的引用
几乎所有的对象在创建时 prototype 属性都会被赋予一个非空的值,我们可以把这个属性当作一个备用的仓库
当试图引用对象的属性时会出发get操作,第一步时检查对象本身是否有这个属性,如果有就使用它,没有就去原型中查找。一层层向上直到Object.prototype顶层基于原型扩展描述一下原型链,什么是原型链,原型的继承,ES5和ES6继承与不同点。

ES6新特性

1.ES6引入来严格模式变量必须声明后在使用函数的参数不能有同名属性, 否则报错不能使用with语句 (说实话我基本没用过)不能对只读属性赋值, 否则报错不能使用前缀0表示八进制数,否则报错 (说实话我基本没用过)不能删除不可删除的数据, 否则报错不能删除变量delete prop, 会报错, 只能删除属性delete global[prop]eval不会在它的外层作用域引入变量eval和arguments不能被重新赋值arguments不会自动反映函数参数的变化不能使用arguments.caller (说实话我基本没用过)不能使用arguments.callee (说实话我基本没用过)禁止this指向全局对象不能使用fn.caller和fn.arguments获取函数调用的堆栈 (说实话我基本没用过)增加了保留字(比如protected、static和interface)2.关于let和const新增的变量声明3.变量的解构赋值4.字符串的扩展includes():返回布尔值,表示是否找到了参数字符串。startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
5.数值的扩展Number.isFinite()用来检查一个数值是否为有限的(finite)。Number.isNaN()用来检查一个值是否为NaN。
6.函数的扩展函数参数指定默认值
7.数组的扩展扩展运算符
8.对象的扩展对象的解构
9.新增symbol数据类型10.Set 和 Map 数据结构 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。Map它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
11.ProxyProxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。Vue3.0使用了proxy
12.PromisePromise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。特点是:对象的状态不受外界影响。一旦状态改变,就不会再变,任何时候都可以得到这个结果。
13.async 函数 async函数对 Generator 函数的区别:(1)内置执行器。Generator 函数的执行必须靠执行器,而async函数自带执行器。也就是说,async函数的执行,与普通函数一模一样,只要一行。(2)更好的语义。async和await,比起星号和yield,语义更清楚了。async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果。(3)正常情况下,await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象。(4)返回值是 Promise。async函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了。你可以用then方法指定下一步的操作。
14.Class class跟let、const一样:不存在变量提升、不能重复声明...ES6 的class可以看作只是一个语法糖,它的绝大部分功能ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
15.ModuleES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";。import和export命令以及export和export default的区别

Css3新特性

1.过渡 transition
2.动画 animation
3.形状转换 transform
4.阴影 box-shadow
5.滤镜 Filter
6.颜色 rgba
7.栅格布局 gird
8.弹性布局 flex
等等还多...

说一说你用过的UI框架

Element-UI Vant Antd

说一说什么是跨域,怎么解决

因为浏览器出于安全考虑,有同源策略。也就是说,如果协议、域名或者端口有一个不同就是跨域,Ajax 请求会失败。
为来防止CSRF攻击
1.JSONPJSONP 的原理很简单,就是利用 <script> 标签没有跨域限制的漏洞。通过 <script> 标签指向一个需要访问的地址并提供一个回调函数来接收数据当需要通讯时。<script src="http://domain/api?param1=a&param2=b&callback=jsonp"></script><script>function jsonp(data) {console.log(data)}</script>JSONP 使用简单且兼容性不错,但是只限于 get 请求。
2.CORSCORS 需要浏览器和后端同时支持。IE 8 和 9 需要通过 XDomainRequest 来实现。
3.document.domain该方式只能用于二级域名相同的情况下,比如 a.test.com 和 b.test.com 适用于该方式。只需要给页面添加 document.domain = 'test.com' 表示二级域名都相同就可以实现跨域
4.webpack配置proxyTable设置开发环境跨域
5.nginx代理跨域
6.iframe跨域
7.postMessage
这种方式通常用于获取嵌入页面中的第三方页面数据。一个页面发送消息,另一个页面判断来源并接收消息

说一说前端性能优化方案

三个方面来说明前端性能优化
一: webapck优化与开启gzip压缩1.babel-loader用 include 或 exclude 来帮我们避免不必要的转译,不转译node_moudules中的js文件其次在缓存当前转译的js文件,设置loader: 'babel-loader?cacheDirectory=true'2.文件采用按需加载等等3.具体的做法非常简单,只需要你在你的 request headers 中加上这么一句:accept-encoding:gzip4.图片优化,采用svg图片或者字体图标5.浏览器缓存机制,它又分为强缓存和协商缓存
二:本地存储——从 Cookie 到 Web Storage、IndexedDB说明一下SessionStorage和localStorage还有cookie的区别和优缺点
三:代码优化1.事件代理2.事件的节流和防抖3.页面的回流和重绘4.EventLoop事件循环机制5.代码优化等等

说一说SessionStorage和localStorage还有cookie

共同点:都是保存在浏览器端、且同源的
不同点:1.cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。2.存储大小限制也不同,cookie数据不能超过4K,sessionStorage和localStorage可以达到5M3.sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,本地存储,因此用作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭4.作用域不同sessionStorage:不在不同的浏览器窗口中共享,即使是同一个页面;localstorage:在所有同源窗口中都是共享的;也就是说只要浏览器不关闭,数据仍然存在cookie: 也是在所有同源窗口中都是共享的.也就是说只要浏览器不关闭,数据仍然存在

说一说你用过的css布局

gird布局,layout布局,flex布局,双飞翼,圣杯布局等

Promise是什么,解决了什么,之前怎么实现的

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
解决来之前在请求中回调请求产生的回调地狱,使得现在的代码更加合理更加优雅,也更加容易定位查找问题。

说说浏览器缓存

缓存可以减少网络 IO 消耗,提高访问速度。浏览器缓存是一种操作简单、效果显著的前端性能优化手段
很多时候,大家倾向于将浏览器缓存简单地理解为“HTTP 缓存”。
但事实上,浏览器缓存机制有四个方面,它们按照获取资源时请求的优先级依次排列如下:Memory Cache
Service Worker Cache
HTTP Cache
Push Cache缓存它又分为强缓存和协商缓存。优先级较高的是强缓存,在命中强缓存失败的情况下,才会走协商缓存实现强缓存,过去我们一直用 expires。当服务器返回响应时,在 Response Headers 中将过期时间写入 expires 字段,现在一般使用Cache-Control 两者同时出现使用Cache-Control 协商缓存,Last-Modified 是一个时间戳,如果我们启用了协商缓存,它会在首次请求时随着 Response Headers 返回:每次请求去判断这个时间戳是否发生变化。从而去决定你是304读取缓存还是给你返回最新的数据

三面HR谈薪水,问一些公司方面待遇方面,为啥要离职之类的。这个就要看你怎么说来,说得好薪资多点。说不好薪资就要被压一些,重点就是不要说上家公司的坏话,可以谈谈你日后的发展方向,准备专精于某个方面,例如数据可视化之类的

结尾
面试题还在持续总结中,以上是部分总结的面试题,如果答案有错误请指出方便修正。
❤️ 看完帮个忙
如果你觉得这篇内容对你挺有启发,我想邀请你帮我个小忙:

  1. 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)

2020年,web前端还好找工作吗?​www.zhihu.com

作者:只会番茄炒蛋
链接:https://juejin.im/post/6844904062257725447
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

sis最新ip地址2020_2020 前端面试 | 第一波面试题总结相关推荐

  1. sis最新ip地址2020_2020年12月版 最新IP数据库 号段归属地 省市区镇村行政区划

    IP地址数据库-最新 最新IP地址数据库(qqzeng-ip) 2020年12月版 743518 条数据 基于:国内基于省市区以及运营商 国外基于国家 主要大城市以及主要运营商 版本: 全球旗舰版   ...

  2. sis最新ip地址2020入口一_2020年5G手机哪款性价比最高,销量排行榜最新推荐,2020年双十一5G手机机型选购攻略...

    2020年双十一华为手机推荐,华为手机机型大全: 脑筋急转弯:2020年双十一华为手机推荐,华为手机机型大全​zhuanlan.zhihu.com 2020双十一值得入手的小米手机,小米手机型号大全, ...

  3. sis最新ip地址2020入口一_2020青骄第二课堂登录入口官网链接 青骄第二课堂登录平台网址最新_见多识广...

    2020青骄第二课堂在线登录平台入口在哪?怎么登录?很多家长不知道,下面小编就给大家汇总了青骄第二课堂在线登录平台入口以及登录网址和手机登录入口,我们一起来看看吧! 青骄第二课堂登录入口首页: 青骄第 ...

  4. 最新IP地址的分类与记法

    最新IP地址的分类与记法 1.IP地址共32bit(位),以点分十进制的方法表示(如x.x.x.x).其中每一个x位8bit,取值范围(00000000-11111111),对应的十进制取值范围是(0 ...

  5. 最新IP地址数据库 全球IP数据库 国内IP数据库 国外IP数据库 CIDR掩码 2018年1月版...

    最新IP地址数据库(qqzeng-ip) 2018年 1月 最新发行版 351756条数据 基于:国内基于省市区以及运营商 国外基于国家 版本: 全球旗舰版  国内精华版 国外拓展版英文版 掩码版 字 ...

  6. 最新的IP归属地数据库-最新IP地址数据库

    最新IP地址数据库(加微:tcg0531) 2021年 11月 最新发行版 864224条数据 基于:国内基于省市区以及运营商 国外基于国家 大部分城市 运营商 版本: 全球旗舰版 国内精华版 国外拓 ...

  7. 2020前端面试(一面面试题)

    2020前端面试(一面面试题) ​ CSS方面 calc, support, media各自的含义及用法? @support主要是用于检测浏览器是否支持CSS的某个属性,其实就是条件判断,如果支持某个 ...

  8. 前端面试常见面试题及答案

    前端面试常见面试题及答案 h5新特性 ES6新特性 vuex的理解,组成以及原理介绍 前端常用框架 h5新特性 html5总的来说比html4多了十个新特性,但其不支持ie8及ie8以下版本的浏览器 ...

  9. 百度糯米android面试题,前端面试—CSS面试题汇总

    前端面试-CSS面试题汇总 博客说明文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 1.flex常见面试题 Flex 是 Flexible ...

  10. 前端关于html的面试题,关于java:前端面试HTML面试题汇总

    前端面试-HTML面试题汇总 博客阐明 文章所波及的材料来自互联网整顿和集体总结,意在于集体学习和教训汇总,如有什么中央侵权,请分割自己删除,谢谢! 1.语义化 为什么要语义化? a. 为了在没有CS ...

最新文章

  1. SAP MM 某项目上产品层次的设计
  2. Table布局及其它布局
  3. micropython esp8266+ssd1306(OLED) 显示中文(示例)
  4. 数字信号处理学习笔记(一)|离散傅里叶变换
  5. Python3字符串split和join代码示例
  6. 化工原理期中考,流体
  7. ​AAAI 2022 | 基于强化学习的视频弹幕攻击
  8. 程序员编程能力和年龄的关系
  9. WAS:WAS 6.1/7.0上EJB客户端开发
  10. AT24C04、AT24C08、AT24C16系列EEPROM芯片单片机读写驱动程序
  11. LM393双电压比较器集成电路引脚图及功能_工作原理及应用电路
  12. html5的header元素作用,html5header标签怎么用?html5header标签的作用介绍-
  13. Namesilo域名注册流程
  14. 2022年全球市场软件无线电平台总体规模、主要企业、主要地区、产品和应用细分研究报告
  15. 解决outlook不能访问hotmail邮箱的问题
  16. 七牛首席布道师:Go不是在颠覆,就是在逆袭
  17. Password Management: Hardcoded Password
  18. 环境变量的作用,为什么要设置环境变量
  19. linux git 命令备忘
  20. 在刀尖舞蹈的今日头条,为什么要冒险“催熟”抖音?

热门文章

  1. 2018第九届蓝桥杯C++省赛B组题目汇总
  2. 层次分析法(AHP)详细步骤
  3. chrome浏览器性能分析
  4. matlab double 取值,matlab定积分计算结果为表达式,我只想得到数值。用double(ans)也没用,不知道还有没有其他方法!...
  5. CSS学习1(内联样式,内部样式,外部样式,选择器)
  6. JavaScript判断数组是否包含某元素
  7. 怎么把ide改成ahci_阳光明媚-将IDE模式更改为AHCI模式的方法(不用重装系统)
  8. 一些比较舒服的rgb配色 (含rgb值,可参考)
  9. matlab 最小二乘解超定方程,matlab 超定方程 最小二乘解
  10. ERP管理软件哪一家好?比较好的ERP管理系统软件推荐