前端开发
·2024-04-26#面试#
前程无忧-前端开发实习生(4-25)
1、自我介绍(简单介绍了一下自己,然后介绍了自己的两个项目,简单讲了下用到了什么技术,实现了什么功能,为什么要做这两个项目以及大致的实现过程)
2、项目是自己写的类似demo那种是吧,接口数据是哪来的?
这个是我跟另外一位同学合作完成的,他做的是后端部分,我负责的是前端部分,接口数据是通过向后端发送请求拿到的。
3、熟悉node.js,是自己动手搭建过是吧?
是自己动手搭建过。
4、她走后端路线的话她为什么不用java来搭建服务呢?
她打算考研,所以目前在java上花的时间比较少。这个项目用的是python的django框架来开发的。
5、用过高阶函数吗?你是怎么遍历数组的?你想要过滤掉数组中某些东西,你会采用什么方法?
map,filter,foeEach,应该还有,只说了这两个,当时有点想不起来了。
6、你没有了解过vue2只了解过vue3吗?
vue3用的比较多。简单的解释了一下为什么要用vue3。
7、vue3跟vue2相比,差别在哪里?
首先,vue3有更快的响应速度,底层是基于proxy来实现的,项目运行时不需要打包,直接启动,(还有好多,想到了,面试官没有让继续往下说,直接下一个问题了)
8、它与vue2相比,既然做出了这么大的改变,肯定时解决了一些问题。解决了什么问题?
比vue2的运行速度更快,底层是使用Go语言来实现的,运行级别是纳秒级别,而vue2的底层是使用C 来实现的,运行级别是毫秒级别。
9、说到继承,vue2中存在什么问题吗?
10、有做过状态管理吗?vue3中
做过。Pinia,Vuex都使用过。
哪个项目中用到过?
最近刚完成的大学生能力评价与职位推荐系统中用到了vuex来管理用户的登录状态。
11、用过的组件库有哪些?
Element Plus,VantUI, AntDesignPro都用过
3个你都提到了,你最后在项目中用到的是哪个?
Element Plus,
12、在你的项目中是按需引入的还是全局引入的?
在开发阶段是全局引入的,提交的时候改成了按需引入。
13、你知道vue3的钩子吗?
知道
用过吗?
这个好像答的有问题。应该是hook,我当时说了几个生命周期函数,直到面试结束都没反应过来直接这题答错了。
14、讲一下组件之间通信
父组件向子组件传递数据:采用props,
子组件向父组件传递数据:$emit
除此之外,可以通过-model来实现双向绑定。
顶层组件和底层组件之间:provide和inject
15、v-model是语法糖,那你知道它背后的原理是什么吗?
在vue2中,底层的两个操作分别为:
:value和@input
在vue3中,对应的是modelValue,@update:modelValue
16、看你有ts的经验是吧,简单说一下它的类型
17、研究过template吗?你的web不是写在template里面吗,在编译的时候它是怎样的一个函数,可以简单的讲一下原理吗?
vue3里面的h函数了解吗?简单解释一下其中的原理。
这个确实没有了解过,(今天也是第一次听说)
面试官简单说了下:代码编译的时候,他不是一个个标签,它最后会通过h函数变成一个个虚拟结点在浏览器上运行。
18、有用过自定义插槽吗?
用过,简单解释了一下怎么用的。
你是通过区分namespace来确定显示的内容的是吧。
19、了解事件的循环机制吗?(答的最完整的一道题)
了解。它是浏览器用来处理异步任务的机制。用来管理所有的任务队列,包括宏任务和微任务队列。当遇到异步任务时,会将其放入相应的任务队列中,并继续执行同步代码,直到同步代码执行完毕或遇到下一个异步任务。当当前的宏任务执行完毕后,会按照一定的规则从微任务队列中取出任务执行,直到微任务队列为空;然后再从宏任务队列中取出下一个宏任务执行。
20、让你封装一个倒计时函数,你会怎么做?讲一下其中的关键点。用的哪个函数,
首先,new一个Date(),获取当前事件,然后设置一个定时器,让它每隔一秒自减。
setTimeout函数中,它的时候间隔可能不一定是均匀的1000毫秒,为什么?
它是处理异步问题的一种方法,它具体的结束事件取决于其它任务什么时候完成。
21、了解promise,async/await吗?他们是怎么使用的?async/await是不是也返回一个promise对象,它是怎么返回的?他需要return new promise吗?(这题也答的比较完整)
它们都是处理异步任务的方法。
promise的话,它有一个then方法,接收两个参数,分别表示当前事件不同的状态。根据不同的状态来执行不同的回调函数。但是它也存在一个问题,如果需要处理的异步任务很多的话,频繁的调用then()方法会出现回调函数地狱的问题,这时,可以采用async/await来解决这个问题。它可以使得异步代码的编写和阅读更加接近于同步代码的风格。通过在函数声明前加上async关键字,可以将任何函数转换为返回Promise的异步函数。通过使用.then()和.catch()来处理它们的结果,await关键字只能在async函数内部使用。它可以暂停async函数的执行,等待Promise的解决(resolve),然后以Promise的值继续执行函数。
22、interface,class ,type的区别是什么?
type用于创建类型别名,interface用于定义接口,class用来定义类。
它们的区别主要有以下两点:
(1)type可以表示各种类型,而interface主要用于定义对象的结构和行为。
(2)当需要使用implements关键字来实现一个类时,只能使用interface。
23、你熟悉webpack打包,在页面中我不想使用太多的import,应该怎么做?
可以使用Link标签代替import
24、熟悉vite吗?你在项目中用过吗?在哪个项目中用的?怎么用的?
用过,职位推荐系统中用的是vite,
安装,创建项目,配置(感觉这里有点答非所问)
25、为什么你在这个项目中用的是webpack,另外一个项目中用的是vite?
vite打包速度更快,性能更好,而且项目是vue3的,vite是专门为vue3量身定做的打包配置工具。
26、为什么你在做了这个项目之后,另外一个项目选择了其它的技术?开发的时候你是怎么知道vite就一定比webpack有更好的优势?
通过阅读官方文档,了解了它底层的一些机制,想应用到自己的项目中来验证这一结果。
以上是全部的内容,感觉难度不大,欢迎鱼友们评论~
26
1
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
