24年记录某事业单位研究所前端面经

160 阅读3分钟

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可以声明合并

总结:面试官结合简历面试的题目不难,但是没准备回答的不好。

还有几个问题忘了问的什么了。难度跟这个差不多。