前言
前段时间一直忙着面试和背面经,就没怎么写文章。这段时间那是非常的煎熬,一直面试一直挂,有些感觉面试的还不错,八股和编程题都答上来了,时间也面了一个小时,但最终还是挂了,一度陷入了自我怀疑中。调整了几天索性直接狠下心放弃小厂直接投大公司,周一的时候接到了海康的面试邀约,激动的心颤抖的嘴,一轮技术面一轮hr面,最后成功拿下,既在意料之外又在情理之中。
自我介绍
自我介绍就是套用网上的一些模板然后稍微修改了一下,那毕竟要按照自己的真实情况来写,感觉好像也没啥太大的亮点,可能比别人更有优势的就是有一份实习经验吧
面试官老师好,我叫xxx,东华理工大学25届软件工程专业大三在读,想应聘贵公司的前端实习生。低年级的时候,我通过B站来自主学习、打了些比赛,拿过传智杯省三,奖学金也拿了一些,专业人数670人,成绩排名前5%。寒假的时候在杭州的一家公司进行远程实习,使用uniapp独立开发小程序项目,个人比较喜欢前端,也能用node写后端,最近正在学习aigc。chatgpt火了之后,对AIGC非常感兴趣,所以学习了python、prompt enginneer、wtf学院的langchain课程等,并且在github上给wtf学院的ai开源项目做过贡献,拿到过该项目的contributor。平时写项目的时候会用一些AI工具提升编程效率比如copilot和通义千问,不过一般不会去用,因为目前还处于一个学习阶段,遇到问题还是需要自己去多思考,过度依赖ai工具会产生惰性。
阅读过js相关的书籍,并在掘金上写过相应的文章,遵从费曼学习法,喜欢分享自己的学习心得。平时主要使用vue,熟悉vue全家桶开发。遇到问题时会使用浏览器和gpt查询解决办法,也会去阅读官方文档和MDN。
我觉得未来最大的机会和风口是AI, 随着大模型的不断发展,会对很多行业产生冲击,所以未来我会持续去学习大模型的使用,并和前端与之结合,以上就是我的自我介绍,谢谢。
提问环节
快排
一开始就是一道算法,面试官这道题原本问的是写一个排序算法,我说了常见的冒泡和选择,然后他问我还知不知道其它的排序方法,比如快排,我一听就知道他就是想考我快排,但是我确实不会,就含糊了几句就过去了,本来以为这个都不会铁定挂了,但是并没有,可能因为我有实习经验的原因,所以本身也没几道八股。这里我给出的排序方法是阮一峰老师写的阮氏快排
,我觉得这种要更好理解一些,写起来也比传统的原地排序要更简洁。
/**
* 快速排序:
* @param arr 需要进行快速排序的数组
* @returns {*[]|*}
*/
const quickSort = function (arr) {
if(arr.length < 2) return arr;
// 随机选择0~arr.length之间选一个基准值
const pivot = Math.floor(Math.random() * arr.length)
// 声明两个数组,分别用于存放比基准值小的数据和比基准值大的数据
let minArr = [];
let maxArr = [];
// 根据基准值填充数组
for(let i = 0; i < arr.length; i++){
// 大于基准值就放maxArr里
if(arr[i] >= arr[pivot] && i !== pivot){
maxArr.push(arr[i]);
}
// 小于基准值就放minArr里
if(arr[i] < arr[pivot] && i !== pivot){
minArr.push(arr[i])
}
}
// 分别对基准值划分出来的数组递归调用快速排序,然后合并数组
return [...quickSort(minArr), arr[pivot], ...quickSort(maxArr)];
}
vue路由传参
当时觉得海康也是大厂,考的肯定比较难,就一直再看比较难的题目,比如跨域和性能优化等,结果把简单的给忽略了,当时听到这个题目先是惊喜,惊喜于它的简单,接着是惊吓,因为自己忘了。。。路由传参有两种方法
- 一种是用
path
进行页面跳转用query传参
import { useRouter } from 'vue-router'
const router = useRouter()
// 在页面跳转的时候传递的参数会以?拼接在url后面
router.push({path: '/noteList', query: {title: title}})
- 另一种是用
name
跳转用param传参
,但是这种方法在配置路由的时候要在后面加上/:
import { useRouter } from 'vue-router'
const router = useRouter()
// 传递的参数以/拼接在url后面,但是配置路由的时候要加上参数的名字
// 比如:path: '/noteList/:title',
router.push({name: 'noteList', params: {title: title}})
promise.all
Promise.all()
方法接受一个可迭代对象(通常是数组,这个数组里面的元素全都是promise对象)
作为参数,返回一个新的 Promise 对象。这个新的 Promise 对象在可迭代对象中所有的 Promise 对象都成功时才会成功,一旦有一个 Promise 对象失败就会立即失败。
面试官就这个问题还延伸了一点,让我想一个实际的场景,不仅考我知不知道它的用法,还要会用,我当时脑子灵光一闪就想到了打游戏,打游戏的时候必须要所有的小关卡都通过了这关才算过,只要有一个失败了那最终的结果就是失败的,机智如我啊。
vue2和vue3的区别
面试了这么多次,这个问题是经常被问道的,出现的频率那是非常之高。看了很多文章,发现这篇总结归纳的是相对来说全面一些的Vue3和Vue2的区别
常规聊天
可能因为我之前有一份实习,所以八股就没怎么问,基本上就问了上面这些,差不多一只手就能数的过来,剩下的都是聊一些实习的收获啊、为什么离职啊、为什么选择前端啊等等常规的问题,最后就是聊了一下公司的业务以及使用的技术栈,然后技术面就这样愉快的结束了,之后的hr面也是常规聊天,毕竟hr不可能和你聊八股和算法。
结尾
可能我运气比较好,然后加上有实习经验,海康的面试相对于其他人来说就相对比较简单,不过还是一分耕耘一分收获,如果没用之前的三个月实习和十余次的面试经验,也收获不到这份果实。不过这只是开始,后面还有很长的一段路要走呢~ 加油吧
原文链接:https://juejin.cn/post/7349107210658299940 作者:金色的暴发户