Appearance
感悟
自我介绍
面试官你好,我叫鲍瑞瑞,目前是就读于北京邮电大学的25届硕士生。我是在大学期间做python网页爬虫实验的时候接触到前端领域,之后便一直在该领域学习和探索。包括本科毕设做的视频剪辑网站开发,以及在去年和今年有过两段实习经历,去年是在中国教育在线做的toB的人才招聘系统,今年是在字节跳动懂车帝部门,主要做的ai大模型相关的项目。然后自己平时也会做一些有意思的小项目小游戏,在github以及netlify上托管。并且在持续更新自己的技术博客,也会关注前端领域技术革新。对,大概就是这样。
实习收获
- 主动联系各方解决问题
有些工作属于自己,但可能需要其他同事配合或者是咨询之类的,必须自己主动去联系沟通。因为大家都有自己的工作做,几乎不可能会主动问我需要啥帮助,即使我是新人或者实习生。
- 工程化规范化开发流程
作为前端开发者,大致需要参与的完整流程是
- 需求评审
- 技术评审
- 开发(业务基于prd,ui基于figma)
- 跟测
- 上线
- 维护
- llm接入
该功能所需的各类api虽然具备,但划分的很多也很细,比如有IMCore,tts,asr,流式播放器等,在具体业务上的具体实现还要与业务耦合,把他们梳理起来还是挺复杂的。
最终的核心流程大致是这样:
- 初始化IMCore
- 监听asr,开启录音
- 监听客户端asr反馈,即客户端收到录音再反馈到前端webview
- 调用IMCore send query给llm
- 监听客户端收到大模型回复,透传给webview
- 处理流式回复(与业务紧密耦合)【比如调用客户端流式播放器播放语音】
- 销毁asr
- 销毁IMCore
整体的通信是 webview <=> 客户端 <=> 第三方api
区分键盘模式,具备md格式解析与历史记录等
- Sdk封装和设计理念
设计并实现了基于IMCore的沉浸式对话插件
sdk与业务方解耦,设计sdk只考虑入参和相应出参,或者说是方法暴露。
即使sdk的设计与调用sdk业务方都是我自己,也要保存二者的解耦,sdk的逻辑纯粹。
- 3d方向
3d数字人面部模型驱动方案实现
这一块是新方向的探索,团队内没什么参考,为了与大语言模型回复对齐,采纳的52节点blendshape方案。在程序侧这里的处理,先做大模型回复与3d数字人模型面部节点的映射,再用Threejs动画混合器驱动。
由于llm的回复是流式的,在动画播放处做了特殊处理,封装了3d数字人类,内置队列缓存以及序列播放的机制,保证面部动画的有序播放。
AI代码助手
AI代码助手其实是大数据模型的产物,比你自己更懂你的其实是大数据,所以AI助手在代码开发中是有着很多场景的,一些简单逻辑或者是规范化的书写的提示,AI能做的比较到位。
但对于复杂函数逻辑或者业务逻辑,AI的理解往往有所偏差。可以部分采纳或者不采纳。
防抖节流
使用防抖或者节流完全取决于短时间内事件触发条件和环境是否会变化
举例搜索输入框场景
输入字符触发热点相关搜索,在短时间内输入字符会变化,相关热点搜索的获取就取最后一次触发,做防抖
而点击右侧搜索button,在短时间内搜索词不会变化,则取第一次触发,做节流