2023面试复盘
面试开场自我介绍、接着是离职原因
一般简单的自我介绍就行,如果你的经历比较辉煌可以多说一点
离职原因一定要表现出你积极向上的态度
7月27号下午2点
New 操作符做了什么:
- 创建一个空的对象
{}
- 将这个空对象的
__proto__
指向构造函数的prototype
属性。这样该对象就可以访问构造函数原型上的属性和方法。 - 将这个空对象作为
this
的上下文调用该函数。如果该函数没有返回对象,则将this
返回。 - 如果函数返回了一个对象,则返回该对象,而不是
this
。
Vue2 数组push、shift的双向绑定是怎么实现的:
作者在vue原型上重写了push()方法,使数组进行操作时可以实现双向绑定
Vue3 的watchEffect 是什么:
数据监听,相比watch方法watchEffect会立即执行一次
http和https的区别:
http:
http明文未加密
http默认是端口号80
优点:便宜,不需要解密,更快
缺点:不安全
https:
https = https + ssl
Ssl加密协议 应用层和传输层加了一个安全层
需要ca证书
https默认端口号443
优点:安全,
缺点:贵、加密解密需要时间,慢
Tcp三次握手和四次挥手:
三次握手:
第一次:客户端向服务端发送一个syn包
第二次:服务端收到syn包,向客户端返回syn+ack包
第三次:客户端收到后回复一个ack包
确立连接
四次挥手:
假如客户端向服务端发起关闭请求,
第一次挥手:他需要向服务端发送一包fin表示自己要关闭连接,然后进入等待状态1,
第二次挥手:服务端收到fin包,会发一个ack包表示进入等待状态,
第三次:此时服务器还能向客户端发送数据,发送完数据再发送一个fin包
第四次挥手:客户端收到ack包,进入超时等待状态,经过超时等待后,关闭连接,服务端收到ack包。立即关闭连接
Web1.x ,web2.0,web3.0:
1.0 可读,如各新浪等门户网站,需要有专门的编辑人员发文章上去,只有很少的留言功能
2.0 互动性,可以自己发信息,例如微博,脸书,抖音,小红书,用户不仅是平台的使用者也是内容的贡献者
3.0 去中心化,2.0时代的自己发送的信息都依托于平台,信息泄露什么的,3.0自己的就是自己的,一个账号走天下
Webpack的loader 有哪些:
1、file-loader:把⽂件输出到⼀个⽂件夹中,在代码中通过相对 URL 去引⽤输出的⽂件。
2、url-loader:和 file-loader 类似,但是能在⽂件很⼩的情况下以 base64 的⽅式把⽂件内容注⼊到代码中去。
3、source-map-loader:加载额外的 Source Map ⽂件,以⽅便断点调试。
4、image-loader:载并且压缩图⽚⽂件。
5、babel-loader:将ES6转化为ES5。
6、css-loader:加载 CSS,⽀持模块化、压缩、⽂件导⼊等特性。
7、style-loader:把 CSS 代码注⼊到 JavaScript 中,通过 DOM 操作去加载 CSS。
8、eslint-loader:通过 ESLint 检查 JavaScript 代码。
原文链接:https://blog.csdn.net/weixin_47450807/article/details/124051856
网站优化:
优化点一:网站速度优化
网站速度优化整体资源优化
减少http请求,资源压缩,cdn加速,路由、图片懒加载,预加载等等
首屏优化:懒加载,图片懒加载,预加载
利用第三方检测工具,检测页面性能,针对具体比较耗时的资源优化
优化点二:seo优化
Ssr服务端渲染,Vue官方介绍的ssr操作起来比较复杂,可以试用Nuxt.js,基于vue的ssr框架,可以方便的创建服务端渲染项目
页面内容尽量丰富,标签尽可能语义化,每个页面最好有<h1></h1><h2></2>这样的标签,
7月29日
什么是闭包:
因为作用域的原因函数外的不能访问函数内的变量,闭包的作用就是让函数外也能访问函数内的变量,闭包通过返回一个引用内部变量的函数来实现
闭包像一个隔离区,可以防止变量污染,封装公用方法,缺点是会造成内存泄露
如何解决闭包内存泄露问题:
闭包使用后,将引用闭包的变量赋值为null
常见的内存泄露有哪些:
全局变量、闭包、setTimeout等没有清除的定时器,变量引用的DOM使用后没有及时清除,没用清除的时间监听,console.log的变量
websocket断网怎么办:
- 客户端向服务器定时发送一条心跳消息。
- 服务器在接收到客户端发送的心跳消息后,立即回复一条响应消息。
- 客户端在一定时间内未收到服务器的响应消息,则认为连接已断开,需要重新连接。
缓存:
强制缓存:强制缓存在规定时间内缓存存在,就不重新下载
协商缓存:文件没有被修改过,就不重新下载
盒模型:
w3c盒模型:包括margin、padding、border、content,宽高 = content
IE盒模型:包括margin、padding、border、content,宽高 = padding + border + content
2023年8月18日
时隔二十天终于迎来了第三次面试
盒模型:
盒模型有两种:w3c标准盒模型和IE怪异盒模型
说说css选择器的优先级
important > 行内选择器 > id选择器 > class选择器 > 标签选择器 > 通配符选择器
一个id选择器的权重是100,十一个class选择器加一起能大于一个id选择器吗?
不能
js的数据类型有哪些
基本数据类型:number,string,null,undefined,boolbren
引用数据类型:object,Array,function
怎么判断数据类型
typeof() 可以用来判断基本数据,bull的时候等于object,array也是object
instanceof() 判断一个类型返回 true或flass
Object.propotype.toString.call()
contructor()
Array.isArray() 判断是否是数组
你说的这几个方法那个是最全面的
Object.propotype.toString.call()
ES6 用过那些方法接口
let、const、new Set、improt、export、... 解构、模版字符串、 new Map、object.key()、object.value()、for of、assign、promise、class
promise.all()中有一个错误会怎么样
当所有任务都返回成功时返回成功,只要有一个返回失败就会返回失败
深拷贝、浅拷贝
直接赋值,assgin(), ...有多层时都是浅拷贝
深拷贝可以用JSON.parse(JSON.stringify()),缺点是朋友null。undefined等会报错
递归一层一层赋值,缺点麻烦
map最简单的方法
数组去重
新建一个空数组,遍历旧数组,判断当前遍历值是否在新数组中,没有就加入,
...new Set()
本地存储
cookies, sessionstorage,localstorage,indexdeDB
sessionstorage在多个tab项可以通用吗
vue2、vue3的双向绑定原理
obj.definpropoty()能劫持数组吗,
vue2重写了数据相的方法
路由有哪些模式
hash:hashchange事件
histry:popState事件
点击a标签的时候histry模式下会触发popState吗
不能
vue数据通讯有哪些方法
props、emit、ref、nventbus、$attr、$prent、$child、插槽、prviode/inject、vuex、pinia
vue3能用ref调用子组件方法吗
需要先在子组件导出才能用
2023年8月22号
0.5像素的边框怎么实现
使用css3的缩放
手机端为什么有的1px看起来会比较粗
因为手机分辨率的不同,所展示的像素点不同
怎么写一个倒计时
setinterval
倒计时有误差是什么原因
定时其实异步任务,在执行之前回先执行同步任务,同步任务执行完之后才会去任务队列中找异步任务,并且微任务还要排在宏任务前面
如何解决误差
查看:https://blog.csdn.net/weixin_40381947/article/details/130966839
ios和安卓系统的时间问题
因为时区的处理方式差异可能导致时间上有问题,js可以采用第三方插件处理时间比如dayjs、momentjs,避免使用本地时间,采用服务器时间等
平时遇到过什么问题,如何解决
1.早期的微信分身不能获取本地图片,解决方法是调用微信jssdk,使用微信方法
2.第一次写小程序的时候测试的时候卡顿,原因是本地资源太多,使用setData太多,解决办法是静态资源放cdn,减少setData
3.官网的seo无法达到预期效果,将咨询页单独做服务端渲染
有什么目标
有机会的话想做前端负责人
公司项目中做出过哪些贡献
1.需求评审给组员分配任务
2.给同事答疑解惑,进行培训
3.对新开的项目技术选型,搭建合适的框架
4.给官网做seo
对项目做过哪些优化
减少http请求、减少重构回流、利用缓存、资源优化,代码压缩,静态资源压缩,静态资源cdn,按需加载,懒加载,第三方检测工具
图片懒加载怎么实现:给所有图片一个默认图片,给img标签设置一个自定义属性,用来存放真是图片地址,当它出现或者将要出现在屏幕中时将url换成自定义属性的图片地址
怎么知道图片有没有出现在屏幕中:监听滚动距离和img距离窗口顶部的距离,通过差值判断图片位置
2023年8月24日
创业公司,基础问的少,主要问的经验方面,做过哪些项目,B端的多还是C端的多,用的哪些技术栈
基础问了几个
箭头函数和匿名函数
minxins
vue和react生命周期
如何异步调用
重复请求如何处理
2023年8月25日
hr先问一些不着边际的东西
然后技术
项目搭建
做过哪些优化处理
2023年8月26日
一面主要是聊经验,项目经验带队经验,代码规范之类的
二面总经理、主管面和HR,问一下基础,职业规划,对人员管理的看法,代码规范的看法云云,薪资要求等等
还问了你个问题就是你能给我们公司带来什么
2023年9月20日
意外的面试,新的公司已经入职,之前投递的公司打了电话面试
问了性能优化,和包管理工具原理的问题
总结:不管是面试还是平时都要经验复盘、总结,有些问题可能你听过了解过,可是过了一段时间就忘了,等再次遇见相同的问题就只能拍大腿了。所以一定一定要做记录,不管是写到小本本上还是写到电脑上,最好是云上可以随时访问的。不知要在学习写代码上,平时为人处世也应该复盘,比如今天参见了一场什么会议,会上表现怎么样,哪里发挥不好,下次应该怎样发挥等等。甚至是跟对象相处的事也可以总结一下。