啦啦啦
前端开发
·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有更好的优势? 通过阅读官方文档,了解了它底层的一些机制,想应用到自己的项目中来验证这一结果。 以上是全部的内容,感觉难度不大,欢迎鱼友们评论~
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP