24年找工作不易,竟然有个面试机会,裸面凭借回忆记录一下。有问题请指正,水平有限。
1、自我介绍(略过)
2、问做项目如何处理屏幕分辨率适配的问题
当时回答的是设置百分比高度,由于自己做的项目是那种heaader和footer固定然后内容自适应的,然后回答的高度计算啥的。
常见的前端分辨率适配方法包括使用CSS媒体查询来设置不同设备的样式,使用rem vw单位来适配字体大小,使用Viewport单位来设置元素的大小和位置等。
3、看我的简历上写着jQuery和H5开发问我对这方面熟悉不熟悉。问遇到的难点?
jq是确实干的比较少然后时间隔着挺远了,说不是很熟,遇见的难点更多是对应的easyUi框架的问题,jq本身文档还是比较全的。老框架在兼容项目时遇到的一些问题很难通过网上查询来解决。
4、问我Vuex和Pinia的区别?
当时我都蒙了,简历上压根也没写pinia自己也没用过,就说了下Vuex都有哪些属性,然后面试官问那个方法是可以异步的。回答的错了应该是actions(真是都忘了)。
state用于存放的数据状态,不可以直接修改里面的数据。
mutations定义的方法动态修改Vuex 的 store 中的状态或数据。
actions可以理解为通过将mutations里面处里数据的方法变成可异步的处理数据的方法,简单的说就是异步操作数据。view 层通过 store.dispath 来分发 action。
getters类似vue的计算属性,主要用来过滤一些数据。
modules项目特别复杂的时候,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。
而pinia Vue2和Vue3都支持,这让我们同时使用Vue2和Vue3的小伙伴都能很快上手。
pinia中只有state、getter、action,抛弃了Vuex中的Mutation。
pinia中action支持同步和异步,Vuex不支持
良好的Typescript支持,毕竟我们Vue3都推荐使用TS来编写,这个时候使用pinia就非常合适了 无需再创建各个模块嵌套了,Vuex中如果数据过多,我们通常分模块来进行管理,稍显麻烦,而pinia中每个store都是独立的,互相不影响。
pinia支持插件来扩展自身功能。
5、既然问到了异步,想请你讲讲同步和异步事件以及执行顺序
(当时回答的还行)
js是是一门单线程的语言,考察的是事件循环机制,所有的任务都可以分成同步任务和异步任务,而异步任务又分为宏任务和微任务,其中定时器等为宏任务,async和promise等为微任务,执行顺序是先执行微任务再执行宏任务。
然后他问我什么是Promise,我说Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)
最后他问我promise为什么可以.then 我没回答出来不太理解他想问什么。。。异步不就是可以then么
6、ts中interface和type的区别?
官方推荐用 interface,其他无法满足需求的情况下用 type。
相同点: 1、都可以描述object和function。
type Point = {
x: number;
y: number;
};
type SetPoint = (x: number, y: number) => void;
interface Point {
x: number;
y: number;
}
interface SetPoint {
(x: number, y: number): void;
}
2、都可以被继承
不同点: 1、type可以定义基本类型的别名,可以声明联合类型 2、interface可以声明合并
总结:面试官结合简历面试的题目不难,但是没准备回答的不好。
还有几个问题忘了问的什么了。难度跟这个差不多。