the first 论被到职的无奈

跟平常一样乐乐呵呵的下班,忽然间被告诉办公地点要搬到几十公里外的新办公区(仅仅是外包同学),听到这个可怜的音讯心里哇凉哇凉的。这可咋办呢?前一个月闲的无聊投过一些简历,后果面试反馈是根底不行。害离搬中央还有半个月工夫,真的是工夫紧工作重呀。登时感觉压力山大,自身工作乐乐呵呵该下班下班该上班上班,leader都明确示意让我再找工作机会了,没方法上号吧!

上号(BOSS直聘)

对于没有学历的我,流下了没学历的泪水。对于投简历的策略我采取的是广撒网政策哈哈哈,无论是外包还是正式,大公司or小企业,约了面试就行这个后果就是一天可能会排四五个面试,对此,还在下班的我只能偷摸搬着电脑到楼下视频面~~~

后期筹备

因为上次找工作还是一年多之前,所以前端面试题也都忘的差不多了。并且这次面试工夫也比拟缓和只能边面试边记录面试题了,很仓促的感觉呀

面试ing

大大小小面了几十个,总结了一下的几个面试题:

1.js数据类型
值类型(根本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symboly援用数据类型:对象(Object)、数组(Array)、函数(Function)
2.宏工作和微工作
宏工作:(macro)task,能够了解是每次执行栈执行的代码就是一个宏工作(包含每次从事件队列中获取一个事件回调并放到执行栈中执行)。w微工作:microtask,能够了解是在以后 task 执行完结后立刻执行的工作。也就是说,在以后task工作后,下一个task之前,在渲染之前。具体见:https://zhuanlan.zhihu.com/p/78113300
3.继承的几种形式及优缺点
1. 原型链继承实现形式:将子类的原型链指向父类的对象实例长处:可继承构造函数的属性,父类构造函数的属性,父类原型的属性毛病:无奈向父类构造函数传参;且所有实例共享父类实例的属性,若父类共有属性为援用类型,一个子类实例更改父类构造函数共有属性时会导致继承的共有属性发生变化2. 构造函数继承实现形式:应用call或者apply更改子类函数的作用域,使this执行父类构造函数,子类因而能够继承父类共有属性长处:可解决原型链继承的毛病毛病:不可继承父类的原型链办法,构造函数不可复用3. 组合继承实现形式:综合应用构造函数继承和原型链继承长处:可继承父类原型上的属性,且可传参;每个新实例引入的构造函数是公有的毛病:会执行两次父类的构造函数,耗费较大内存,子类的构造函数会代替原型上的那个父类构造函数
4.什么是闭包
“闭包就是可能读取其余函数外部变量的函数。例如在javascript中,只有函数外部的子函数能力读取局部变量,所以闭包能够了解成“定义在一个函数外部的函数“。在实质上,闭包是将函数外部和函数内部连接起来的桥梁。”
5.数组去重
1. 利用ES6 Set去重2. 利用for嵌套for而后splice去重3. 新建一个空数组,循环遍历旧数组判断如果新数组中没有就放进去4. 利用sort排序,而后在比照相邻的两个数5. hasOwnProperty判断是否存在6. 应用递归去重...
6.get和post的区别
1. 传送形式:get通过地址栏传输,post通过报文传输2. 传输长度:get有长度限度,post无限度3. 缓存:get申请能够被缓存,post不能够被缓存4. 编码:get申请只URL编码,post反对多种编码方式5. 历史记录:get申请的记录会留在历史记录中,post申请不会留在历史记录6. 字符限度:get只反对ASCII字符,post没有字符类型限度
7.vue生命周期
beforeCreate:在实例初始化之后、进行数据侦听和事件/侦听器的配置之前同步调用。created:在实例创立实现后被立刻同步调用。beforeMount->onBeforeMount:在挂载开始之前被调用。mounted->onMounted:在实例挂载实现后被调用。beforeUpdate->onBeforeUpdate:在数据产生扭转后。updated->onUpdated:在数据更改导致的虚构 DOM 从新渲染和更新结束之后被调用。beforeDestroy->onBeforeUnmount:在卸载组件实例之前调用。在这个阶段,实例依然是齐全失常的。destroyed->onUnmounted:卸载组件实例后调用。调用此钩子时,组件实例的所有指令都被解除绑定,所有事件侦听器都被移除,所有子组件实例被卸载。
8.localStorage和sessionStorage和cookie
共同点:都是保留在浏览器端、且同源的不同点:cookie 数据始终在同源的 http 申请中携带(即便不须要)sessionStorage 和 localStorage 不会主动把数据发送给服务器,仅在本地保留存储大小限度也不同,cookie 数据不能超过 4K,同时因为每次 http 申请都会携带 cookie、所以 cookie 只适宜保留很小的数据,如会话标识。sessionStorage 和 localStorage尽管也有存储大小的限度,但比 cookie 大得多,能够达到 5M 或更大数据有效期不同,sessionStorage:仅在以后浏览器窗口敞开之前无效;localStorage: 始终无效,窗口或浏览器敞开也始终保留,因而用作持久数据;cookie:只在设置的 cookie 过期工夫之前无效,即便窗口敞开或浏览器敞开作用域不同,sessionStorage 不在不同的浏览器窗口中共享,即便是同一个页面; localstorage 在所有同源窗口中都是共享的;cookie 也是在所有同源窗口中都是共享的
9.vue2和vue3区别
1. vue2和vue3双向数据绑定原理产生了扭转。vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 联合 公布订阅模式的形式来实现的。2. 生命周期钩子应用不同。具体见第七条3. vue3的template反对多个根标签,vue2不反对4. vue3引入了tree-shaking性能,按需打包体积更小
10.call apply bind的区别
相同点:三个函数都会扭转this的指向(调用这三个函数的函数外部的this)不同点:bind会产生新的函数,(把对象和函数绑定死后,产生新的函数)call和apply不会产生新的函数,只是在调用时,绑定一下而已。call和apply的区别,第一个参数都是要绑定的this,apply第二个参数是数组(是函数的所有参数),call把apply的第二个参数单列进去。
11.单页面性能优化
1. 缩小http申请2. 非核心代码异步申请3. 优化图片,压缩图片4. 将脚本置底
12. vue2中data为什么不是个函数?
重点解释:各个组件中的数据不受影响vue组件是可复用的vue实例,一个组件被创立好之后,就可能被用在各个中央,而组件不论被复用了多少次,组件中的data数据都应该是互相隔离,互不影响的.基于这一理念,组件每复用一次,data数据就会被复制一次,之后,当某一处复用的中央组件内data数据被扭转时,其余复用中央组件的data数据不受影响。
13. 解释promise原理
为了解决回调地区的问题,说到底,Promise 也还是应用回调函数,只不过是把回调封装在了外部,应用上始终通过 then 办法的链式调用,使得多层的回调嵌套看起来变成了同一层的,书写上以及了解上会更直观和简洁一些。Promse.all在解决多个异步解决时,只有全副返回才执行thenPromse.race就是赛跑的意思,意思就是说,Promise.race([p1, p2, p3])外面哪个后果取得的快,就返回那个后果,不论后果自身是胜利状态还是失败状态Promise.any() 接管一个Promise可迭代对象,只有其中的一个 promise 胜利,就返回那个曾经胜利的 promise 如果可迭代对象中没有一个 promise 胜利(即所有的 promises 都失败/回绝),就返回一个失败的 promise
14. webpack打包
用的不太多,临时没有总结汗
15.防抖和节流
函数防抖(debounce):当继续触发事件时,肯定时间段内没有再触发事件,事件处理函数    才会执行一次,如果设定的工夫到来之前,又一次触发了事件,就从新开始延时节流:函数节流(throttle):当继续触发事件时,保障肯定时间段内只调用一次事件处理函数  节流艰深解释就比方咱们水龙头放水
16.eval作用
把字符串参数解析成 JS 代码并运行,并返回执行的后果
17.判断是否是数组
1.Array.isArray(arr)2.arr instnceof Array3.arr.constructor === Array4.Object.prototype.toString.call(arr) === ‘[object Array]’
18.左侧固定左边自适应
1.css实现左侧固定,右侧自适应布局2.左侧float定位,右侧margin-left:左侧的宽度3.左侧absolute,右侧margin-left:左侧宽度4.flex布局5.table-cell表格布局
19.Json.stringfy毛病(问了好几遍)
1.如果蕴含function,undefined,Symbol这几种类型,不可枚举属性,键值会隐没。2.转换的数据中蕴含Date对象,JSON.Stringify序列化之后,会变成字符串。
20.js中let和var的区别
1.作用域不同:var是函数作用域,let是块作用域。在函数中申明了var,整个函数内都是无效的,而let因为是块作用域,所以如果在块作用域内定义的变量,在其里面是不可被拜访的2.let不能在定义之前拜访该变量,然而var能够3.let不能被从新定义,然而var是能够的4.let是ES6新增的命令,之前是没有的
21.什么是跨域以及产生起因
跨域是指a页面想获取b页面资源,如果a、b页面的协定、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址所进行的拜访口头都是跨域的,而浏览器为了平安问题个别都限度了跨域拜访,也就是不容许跨域申请资源
22.回流跟重绘
回流:当 render tree 的一部分或全副的元素因扭转了本身的宽高,布局,显示或暗藏,或者元素外部的文字构造发生变化 导致须要从新构建页面的时候,回流就产生了重绘:当一个元素本身的宽高,布局,及显示或暗藏没有扭转,而只是扭转了元素的外观格调的时候,就会产生重绘。例如你扭转了元素的background-color....因而得出了一个论断:回流必然触发重绘,而重绘不肯定触发回流
23.解释下http和https
https协定须要到CA申请证书,个别收费证书较少,因此须要肯定费用。http是超文本传输协定,信息是明文传输,https则是具备安全性的ssl/tls加密传输协定。http和https应用的是齐全不同的连贯形式,用的端口也不一样,前者是80,后者是443。http的连贯很简略,是无状态的;HTTPS协定是由SSL/TLS+HTTP协定构建的可进行加密传输、身份认证的网络协议,比http协定平安。
24.keep-alive
keep-alive是什么?keep-alive是一个形象组件:它本身不会渲染一个DOM元素,也不会呈现在父组件链中;应用keep-alive包裹动静组件时,会缓存不流动的组件实例,而不是销毁它们。什么中央用?有时候咱们不心愿组件被从新渲染影响应用体验;或者处于性能思考,防止多次重复渲染升高性能。而是心愿组件能够缓存下来,维持以后的状态。这时候就能够用到keep-alive组件。keep-alive的生命周期首次进入时:created > mounted > activated;退出后触发 deactivated再次进入:会触发 activated;事件挂载的办法等,只执行一次的放在 mounted 中;组件每次进去执行的办法放在 activated 中
25.异步和同步
同步异步 , 举个例子来说,一家餐厅吧来了5个客人,同步的意思就是说,来第一个点菜,点了个鱼,好, 厨师去捉鱼杀鱼,过了半小时鱼好了给第一位客人,开始下位一位客人,就这样一个一个来,按程序来雷同,异步呢,异步的意思就是来第一位客人,点什么,点鱼,给它一个牌子,让他去一边等吧,下一位客人接着点菜,点完接着点让厨师做去吧,哪个的菜先好就先端进去同步的长处是:同步是依照程序一个一个来,不会乱掉,更不会呈现下面代码没有执行完就执行上面的代码,毛病:是解析的速度没有异步的快;异步的长处是:异步是接取一个工作,间接给后盾,在接下一个工作,始终始终这样,谁的先读取完先执行谁的, 毛病:没有程序 ,谁先读取完先执行谁的 ,会呈现下面的代码还没进去上面的就曾经进去了,会报错;
26.css权重
第一优先级:无条件无限的属性只须要在属性前面应用! important。它会笼罩页面内任何地位定义的元素款式。IE6不反对该属性。第二优先级:在HTML中给元素标签加style,即内联款式。该办法会造成CSS难以治理,所以不举荐应用。第三优先级:有一个或多个id选择器来定义。例如,#id{margin: 0}会笼罩.classname{margin: 3px}第四优先级:有一个或多个类选择器、属性选择器、伪类选择器定义。如.classname{margin:3px}会笼罩div{margin: 6px}第五优先级:有一个或多个类型选择器定义。如div{margin: 6px}笼罩*{margin: 10px;}第六优先级:通配选择器,如*{margin: 6px;}
27.this指向
1.一般函数->window2.对象函数调用->调用的这个对象3.构造函数->新创建的这个对象4.箭头函数->函数里面的环境
28.route router区别
route对象示意以后的路由信息,蕴含了以后 URL 解析失去的信息。蕴含以后的门路,参数,query对象等router对象是全局路由的实例,用来更改路由
29.New操作符具体干了什么?
1.创立了一个空对象:并且this变量引入该对象,同时还继承了函数的原型2.设置原型链:空对象指向构造函数的原型对象3.执行函数体:批改构造函数this指针指向空对象,并执行函数体4.判断返回值:返回对象就用该对象,没有的话就创立一个对象复制代码

总结

这次仓促的找工作历时两周,最终兜兜转转也拿到的了称心的薪资。不过如果条件容许的话,还是应该多面几家并且做好短缺的筹备,我这次就没反面试题啥的,全靠临场发挥,在面试中积攒教训。

记录这次面试,咱们明年再战哈哈