面经:记录一下我的第一次面试
前言
最近呢在开始投简历啦,所有很久没更新文章啦,今天就来更新一篇关于我的第一次面试吧,在开始第一次面试之前,心里有点点的小紧张嘿嘿,害怕自己怯场,会被面试官鞭打的哑口无言,不过面完发现也还好啦,那么就和大家分享一下我的面试过程吧~
首先就是进行一些简单的自我介绍啦,说一下自己叫什么,来自哪个学校,在读大几,选择的方向,为什么选这个方向......
面试官就开始问一些八股文啦,让我们一起去看看我的第一次面试都问了哪些八股文吧~
正文
面试官看了下我的项目经历就问了关于我项目里面的几个问题(内心偷偷窃喜.....):
你能给我讲讲你的jwt怎么实现的吗?
JSON Web Token鉴权的基本步骤:
- 用户提交用户名和密码给服务器
2.服务器验证成功后生成一个JWT
3.客户端通过本地存储存储JWT
4.每当客户端发送请求时,会在HTTP的Authorization头中包含JWT
5.服务器验证JWT,如果有效,则允许客户端访问
我的项目中的jwt:
1.定义了两个函数:
sign:使用crypto
模块来生成随机密钥,你可以使用crypto.randomBytes()
函数,会生成指定长度的伪随机字节缓冲区,crypto.randomBytes()
函数接受两个参数:第一个参数是要生成的随机字节数量,第二个参数是一个回调函数,该函数在生成完成后被调用,传入可能发生的错误以及生成的Buffer
对象。
verify:验证token
1.接收两个参数ctx和next
2.获取请求头中Authorization字段的JWT token
3.如果jwtToken存在,使用jsonwebtoken的verify验证
4.验证成功,则有效,将token的ID属性附加到上下文ctx中
5.验证失败,返回错误信息
你项目里的富文本编辑器怎么实现的?
我是利用现有的开源富文本编辑器库Quill,它提供了丰富的功能和高度可定制化的选项,我在项目的主要引用步骤:
- 通过
npm install quill
使用 npm 安装 Quill import 'quill/dist/quill.snow.css';
导入 Quill 的 CSS 和 JavaScript 文件- 初始化 Quill 编辑器
下面就是我项目之外问的一些八股文啦
TCP和UDP的区别了解吗?
-
TCP适用于高可靠性的应用,如文件传输;UDP适用于实时应用,视频会议
-
TCP开销较大,UDP开销较小
-
TCP更安全,但UDP要配合加密使用增强安全性
-
TCP连接可靠,UDP无连接不可靠
Http和Https的区别了解吗?
-
http默认端口80,https默认端口443
-
http非加密,https加密,使用SSL/TLS加密
-
https更安全,适合处理敏感信息
-
http更快
Http的请求有哪些?
-
GET:用于请求获取由URL指定的资源
-
POST:用于向指定的资源提交数据
-
PUT:用于替换由 URI 指定的资源
-
DELETE:用于删除由 URI 指定的资源
-
HEAD:类似于 GET 方法,但只返回响应头而不返回实体主体部分
-
OPTIONS:用于查询服务器支持的通信选项
-
PATCH:用于对资源进行部分更新
-
CONNECT:用于建立与由 URI 标识的代理服务器的隧道连接
什么时候选择用get什么时候选择用post,为什么?
使用 GET:
- 当请求只读取数据而不修改服务器上的数据时。
- 当请求的结果可以被缓存时。
- 当请求不需要发送大量数据时。
- 当请求不需要保证安全性时。
使用 POST:
- 当请求需要修改服务器上的数据时。
- 当请求需要发送大量数据时。
- 当请求需要保证安全性时。
- 当请求的结果不应被缓存时。
- GET 适用于安全要求不高、数据量较小、无需修改服务器数据的情况。
- POST 适用于需要修改服务器数据、发送大量数据或需要更高安全性的场景。
你了解cookie吗?(这个我只了解一点点,就面试完后去深入了解了一下)
Cookies 是 Web 浏览器和 Web 服务器之间的一种简单的数据存储机制,用于跟踪用户的状态和偏好设置。由web服务器生成并通过HTTP响应发送给浏览器,浏览器随后将其存储到本地磁盘上,使得服务器能够记住有关用户的特定信息
工作原理:
- 创建 Cookie:当用户访问某个网站时,Web 服务器可以通过 HTTP 响应头中的
Set-Cookie
字段向浏览器发送 Cookie。 - 存储 Cookie:浏览器接收到 Cookie 后,会将其保存在本地。
- 发送 Cookie:当浏览器后续再次访问同一个网站时,它会在 HTTP 请求头中包含
Cookie
字段,将之前接收到的 Cookie 发送给服务器。 - 使用 Cookie:服务器可以根据 Cookie 中的信息识别用户,并相应地定制响应。
最后一个问题啦~不对应该说是两个,嘿嘿
怎么实现数据的双向绑定?
我当时只说了一个v-model,所有就迎来了下面的一个问题,一整个大大的?
在了我的脸上显露出来......
- 首先可以通过创建vue实例,将变量定义在data里
- 接下来就是我当时只想到的v-model
- 使用纯 JavaScript 实现
-
创建观察者模式:
- 实现一个简单的观察者模式,用于跟踪数据的变化并通知订阅者。
-
实现数据代理:
- 使用 Proxy 对象来拦截数据的读写操作,并触发相应的更新。
-
实现指令:
- 定义一个
v-model
指令来处理表单元素和数据之间的双向绑定。
- 定义一个
v-model的实现原理?
- Vue.js 通过
v-model
指令自动添加了.value
绑定和.input
事件监听器。 - 当用户在表单元素中输入数据时,
.input
事件会被触发,从而更新 Vue 实例中的数据属性。 - 当 Vue 实例中的数据属性发生改变时,
.value
绑定会更新表单元素的值。
结语
通过这篇文章分享了我的第一次面试,对自己的第一次面试进行的一个总结,希望能给各位带来帮助
转载自:https://juejin.cn/post/7401060368087498790