第一次面大厂,无笔试、手写题,整个过程30分钟不到,可能临近午饭的原因,或者是我太菜,没必要问了,最终没通过这次面试。面试最大问题是计网基础不牢
介绍项目
- 上来直接让我先介绍项目,通过介绍项目延伸出了各种考点(大厂好像都这样从项目入手)。我的项目是一个前后端分离的个人博客项目,另外两个都是纯前端,估计没啥看点都没问。
登录怎么实现?
我一个朋友面同样岗位的时候也被问到了登录方式,所以如果项目中有涉及登录的话很有必要全面了解下
- 我的项目是通过token方式,这种方式是客户端第一次登录时,服务器会生成一个 token(一个头+载体形式的字符串作为身份象征,详情可查 JWT 令牌)返回给客户端,保存在客户端,下次登录时会携带token请求登录,服务器验证token是否匹配即可
- 除了 token,还有 session 登录、SSO 单点登录、OAuth 登录方式,有兴趣可以跳转到详解前端登录方式
token存在哪?
- 可以存在cookie、localStorage、sessionStorage里,我选择的是长期有效的 localStorage,而 cookie 存储容量较少且不安全,sessionStorage 页面关闭时就会被清除
通过token存在哪引出了后面的缓存方面的问题
谈谈缓存方式
最好结合http头 cache-control 谈谈
- 强缓存
- 协商缓存
说说你知道的请求头有哪些
-
对请求头的确不太了解,答成了请求方式 get、post、head 那些,后来顺势就问了我登录时用的 get 还是 post,区别在哪(常见考点)
-
通用头
- Cache-Control:指定缓存机制(强缓存、协商缓存等)
- Data:时间
- …
-
请求头
-
Accept 开头的有好几个
-
Accept:指定客户端能接收的内容类型
-
Accept-Charset:浏览器可接受的字符编码集
-
…
-
-
响应头
-
Content 开头的好几个
-
Content-Encoding:响应体语言
-
Content-Length:响应体长度
-
get、post的区别
- 1 的参数放在 url 中(www . xxxx . com?参数=xxx),而 2 的参数放在请求头中
- 1 会被浏览器主动缓存,而 2 不会(可以手动设置)
- 1 只能进行 url 编码,而 2 支持多种
- 1 的参数长度有限制(因为 url 长度是有限制的),2 不会
- …
你的项目什么时候用 es5 什么时候用 es6?
想了想,这应该是考 es5/6 的区别
- 首先我概述了下。es6有了很多新特性,比es5方便
- 然后说了几点 es6 的新东西比如箭头函数,考官顺势就问我箭头函数了,同时牵涉了 this
箭头函数和this
具体如何问的我忘了,有几个重要的点得答出来
- 箭头函数
- 写法简便
- 是没有自己的 this 的,或者说是从外层继承的
- this
- this 是在运行时定义的!!!
既然你有的项目用vue2,有的用vue3,那这个大版本更新了解吗?
当时的确除了组合式api都没了解过(这个也没了解多深),同时没意识到文件结构、vue实例化也可以说,后来差了些资料发现这些点虽然简单但也可谈一谈
那 vue 相较于原来的原生 js 和 jqury 有什么优势?(经典考题)
- 首先要说的必然是 mvvm 模型, 然后结合数据驱动试图、组件化两个关键字谈谈
项目怎么打包的?
当时没意识到考什么,先说了 npm build,后来引导了一下发现是要问 webpack,显然不会,然后略过,接着问 es6 如何转 es5,我说是babel,但不了解细节,然后也没细问
虽然简历上没写会这两个,还是问了
还有些细节忘了,最后简单交流了下,面试就结束了
如果觉得对你有帮助的话,点个赞呗~
反正发文又不赚钱,交个朋友呗~
如需转载,请注明出处foolBirdd