前端小白人生第一次面试,没怎么准备,感觉好像还OK?(虽然很多东西没答出来)
Part1 自我介绍
提前十分钟在记事本先写的,按照从哪来,会什么,什么优势来介绍的。说得不太连贯也比较短。。。下次一定好好准备
Part2 介绍一下项目、难点以及如何解决
按照简历写的粗略介绍了一下核心的项目。难点与解决说了三个:
①实现话题侧边栏的响应式显示。
解决:设置页面窗口监听器监听页面宽度,到一定的阈值修改布尔值状态从而改变前端组件的展示。
②AI回答的流式输出。
解决:由于获取AI回答的接口是在聊天框组件实现的,气泡组件是聊天框组件的子组件,因此使用props父子组件传值在每次获取一部分AI回答结果时向气泡子组件传递数据,气泡组件根据每一次接收父组件传值来更新元素。
③不同话题对应不同知识库的切换。
将话题包装为一个对象,包含话题名称与对应知识库名称,发起提问时传递话题对象参数,获取当前话题对应知识库并提交接口发起提问。(属于是有点没什么说乱扒了)
Part3 项目提问
①窗口监听器的监听频率是多少?
第一个问题就给问倒了,调用的是window.addEventListener()方法,完全没想过这个问题。。。。
查了一下addEventListener的监听频率,才发现不对劲儿啊,这玩意不就是事件发生时触发么?当监听到页面变化时触发监听,哪有频率可言???不知道是不是被坑了,反正当时脑抽啥也没想出来
②知不知道帧的概念?如果说是60帧的话那一帧是多少毫秒?
答了1/60秒,好像勉勉强强过关??还好游戏打的多)
Part4 算法and数据结构
①set和array的区别
一开始没反应过来是问的集合与数组,还以为是问的哪个js方法,慌麻了。面试官提醒才反应过来。答了set元素唯一性不可重复,array可重复。
Array 是一个有序的、可变的数据结构,其中的元素通过索引(从 0 开始)访问。
Set 是一个无序的、唯一值的集合。它不允许重复的元素。Array 提供了丰富的方法和属性,例如 push、pop、splice 等用于操作数组的方法,以及 length 属性用于获取数组的长度。
Set 提供了一些用于集合操作的方法,如 add、delete、has,但相对较少并且专注于集合的唯一性。
没说到有序性和基本的接口举例,这一part估计也是寄了。
②冒泡排序和快速排序的区别
从算法时间复杂度,大概怎么实现说了一下。
可以再说一下稳定性(冒泡稳定,快排不稳定,相等元素可能会被交换),和空间复杂度(冒泡不需要额外空间,快排需要logn的栈空间)
③算法题:如何能确定一个点是否在矩形的边界上?其他几何形状呢?
矩形想着映射到一个坐标系中列出边界区间去判断,其他形状就想不出来了。。。。
好像看到可以用作点的水平射线检查射线与几何形状交点的个数,奇数则成立。但是也看不懂算法,求助各位牛友们
Part5 问题反问
看了公司是ai方向的,问了涉及哪方面ai?问了一下公司的前端主要技术栈。
总结
面试过后才知道自己的不足,准备得太少了。后面应该要优化一下自我介绍,深挖项目,找出若干个难点以及解决方案并对hr可能问的一些问题做准备。对基础知识需要再更加深入的理解,还有算法题!不刷真的麻了。。。