记录一下我最近面试css1漏掉的知识点。bootstrap如何实现移动端PC端自适应媒体查询2.flex布局父容器:(记住常用属性)display:flexflex-direction:row|行反转|栏目|column-reverseflex-wrap:nowrap|包装|wrap-reversejustify-content:flex-start|弹性端|中心|间隔|空间周围对齐项目:flex-start|弹性端|中心|基线|拉伸3。多行文字和单行文字省略单行:宽度:100px;溢出:隐藏;空白:nowrap;文本溢出:省略号;多行:1.width:100px;溢出:隐藏;文本溢出:省略号;显示:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:垂直;line-clamp属性用于控制显示多少行文本。注意:display属性必须在框被分割之前定义。box-orient属性指定盒子子元素应该水平对齐还是垂直对齐。2.:afert在末尾添加背景图然后添加省略号3.插件js:1.$和dom对象通过$符号$(document)转换2.jq链调用原理return实现链调用(你可以阅读jq源码)3.$this和this的区别$(this)表示jquery封装的当前对象。这表示javascript提供的当前对象。4、websocket基于什么协议?协议6.canvas和svg的区别canvas可以保存.png.jpg格式的图片,依赖于分辨率,不支持事件处理器,适用于图片密集型游戏(经常重绘)svg是矢量图,不依赖于解析,支持事件处理器,适合大型渲染应用,不适合游戏应用7.xss、csrf攻击XSS(Cross-SiteScripting,跨站脚本攻击)是一种代码注入攻击。攻击者在目标网站注入恶意代码,当受害者登录网站时恶意代码就会被执行。这些脚本可以读取cookies、sessiontoken或其他网站敏感信息,钓鱼和欺诈用户,甚至发动蠕虫攻击等。XSS的本质是恶意代码不被过滤,与网站正常代码混合;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。由于直接在用户终端执行,恶意代码可以直接获取用户信息,并利用这些信息冒充用户向网站发起攻击者自定义请求。Xss解决方案:严谨代码加验证编码CSRF(Cross-siterequestforgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,并在第三方网站中,发送跨站请求到被攻击的网站。利用受害者在被攻击网站获取的注册凭证绕过后台用户验证,达到冒充用户对被攻击网站进行操作的目的。典型的CSRF攻击流程:受害者登录站点A,并保留登录凭证(Cookie)。攻击者诱导受害者访问B站点,B站点向A站点发送请求,浏览器默认会携带A站点的cookie信息。A站点收到请求后,核实请求,确认是受害者的凭据,误认为是无辜受害者发送的请求。SiteA代表受害者执行了SiteB的请求。攻击完成,攻击者冒充受害者在受害者不知情的情况下完成攻击。csrf解决方案:加验证码(体验不好)确定请求来源:检测Referer(不安全,Referer可以改)使用Token(主流)SamesiteCookie属性8.cookie和session的区别后台)可以同源policybecross-domain9.jsonp,cors,iframe跨域的解决方法10.css3的新特性增加了选择器,伪类,style属性11.如何防止音频播放资源被flash12盗用.How实现微博还剩多少个字符,汉字,英文表达,正则校验,转Unicode13。构造函数的原型,在查找对象的属性或方法时,如果在自身上找不到,就去原型中找,直到undefined为止。newPet(instance)--(__proto__)---->Pet.prototypeprototype主要用于实现继承(原型继承)15.实现继承的几种方式16.原型继承和新建继承的优缺点原型继承:核心:使用父类的实例作为子类的原型的缺点:父类增加了一个新的原型方法/原型属性,可以被子类访问。一旦父类发生变化,其他一切都会发生变化。构造继承:核心:将父类的实例属性复制给子类缺点:方法定义在构造函数中,只能继承父类的实例属性和方法,不能继承原型属性/方法,不能实现函数重用,每个子类都有父类实例函数的副本,影响性能17.如何做缓存browser如何实现缓存1.localstorage2.vuekeep-alive对cache-control、etag、expires、last-modified的理解和使用18.window.proformance的理解19.Event-loopThread的理解和执行,宏任务(macro-task):包括整体代码脚本,setTimeout,setInterval,微任务(micro-task):Promise,process.nextTickfirst执行微任务再执行宏任务20.数组去重数组扁平化21.字符串拼接方法1."+"2.以数组为中介连接字符串与join3.es6:模板字符串``22.几种方式闭包和垃圾回收的23.node.js和npm的优点是什么理解es61。遍历器(iterator)2.生成器yield生成器(generator)是ES6标准引入的一种新的数据类型。生成器看起来像一个函数,但可以返回多次。generator和function的区别是generator是通过function*定义的(注意多出来的*号),而且除了return语句外,还可以使用yield多次返回。生成器还有另一个巨大的好处,那就是将异步回调代码转换为“同步”代码。3、asyncawaitasync函数返回一个Promise对象,可以使用then方法添加回调函数。函数在执行时,一旦遇到await,会先返回,等待异步操作完成,然后在函数体中执行下面的语句。async函数内部return语句返回的值会成为then方法回调函数的参数。async中的代码是同步的4.Promise状态变化Contents中的同步和异步Promise构造函数是同步执行的,而promise.then中的函数是异步执行的。5.promise和async的关系6.箭头函数和普通函数的区别①箭头函数是匿名函数,不能作为构造函数,不能使用new②箭头函数不绑定参数,使用rest参数代替③箭头函数不绑定this,它会捕获其上下文的this值作为自己的this,任何方法(call、apply、bind)都不能改变它的this点④箭头函数没有原型属性⑤箭头函数不能作为Generator函数,并且yield关键字不能使用7.filterreducefilterfilter:array.filter(callback[,that]);对于回调,您可以指定数组元素的值“value”、数组元素的数字索引“index”以及存储数组元素的数组对象“arrayObj”。对于每个数组元素,callbak返回true的元素将生成一个新数组,callcak不返回true的元素将被跳过并且不包含在新数组中。变量数据=[1,4,7,12,21];varresult=data.filter(function(value){返回值%2===1;});控制台日志(结果);reduce常见用法:数组求和乘法varsum=arr.reduce((x,y)=>x+y);varmul=arr.reduce((x,y)=>x*y)高级用法:(1)计算数组中每个元素出现的次数(2)数组去重(3)将二维数组转为一维-dimensional(3)将多维数组转换为一维(数组展平)(4)、对对象中的属性求和8.Object.assign()Object.assign方法用于合并对象,复制对象的所有可枚举属性源对象(source)到目标对象(target)。Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。请注意,如果目标对象具有与源对象同名的属性,或者如果多个源对象具有同名属性,则后面的属性将覆盖前面的属性。如果只有一个参数,Object.assign会直接返回那个参数。如果参数不是对象,会先转为对象,再返回。由于undefined和null不能转化为对象,如果作为参数使用会报错。如果undefined和null不在第一个参数中,则不会报错。Object.assign复制的属性是有限的。只复制源对象的属性(不是继承的属性),不复制不可枚举的属性(enumerable:false)。vue1.vue实例的理解每个Vue.js应用程序都是通过构造函数Vue创建一个Vue根实例来启动的:1.2.在实例化Vue时,需要传入一个options对象,它可以包含数据、模板、挂载元素的Options、方法、生命周期钩子等。1.3.可以扩展Vue构造函数以创建具有预定义选项的可重用组件构造函数varMyConponent=Vue.extends({})1.4。所有的Vue.js组件其实都是扩展的Vue实例2.vue双向数据绑定数据劫持defineProperty采用数据劫持结合发布订阅者模式,通过Object.defineProperty()劫持每个属性的setter和getter,发布一个数据变化时向订阅者发送消息,并触发相应的监听回调。当将普通Javascript对象作为其数据选项传递给Vue实例时,Vue将遍历其属性,使用Object.defineProperty将它们转换为getters/setters。getters/setters对用户是不可见的,但在内部它们让Vue跟踪依赖关系,在访问和修改属性时通知更改。三、Publish-Subscriber模式对Observer编译Watcher的理解4、SlotSlot是Vue实现的一套内容分发API,
