蔚来测试开发
1️⃣一面-技术面
- 项目里用了redis,具体用途
中间件缓存 高效数据库存取、应用响应
使用场景:数据缓存(用户信息、页面数据)、页面缓存
- 对maven了解什么,哪些命令
初始化项目:通过 mvn archetype:generate 创建新的 Maven 项目,选择合适的模板(archetype)来初始化项目。
构建项目:使用 mvn clean install 来构建项目,将所有依赖下载并安装到本地仓库。
管理依赖:在 pom.xml 中声明项目依赖,Maven 会自动下载和管理它们。
发布和部署:使用 mvn deploy 将构建的产物发布到远程仓库。
- 对测试了解什么
测试目的、测试方法、测试流程、测试分类、问题定位、问题追踪、测试工具
- 单元测试 集成测试 冒烟测试的区别,具体用于什么
- 算法题:给定target、数组,找数组里有没有两数相加等于target
遍历->hashmap记录var-to-key->need=target-nums[i]->查字典
- 针对写好的算法,设计测试用例
- 在 WF项目中,发现导出的视频音画不同步 是怎么回事
音频/视频解码时延迟
问题:视频和音频的解码处理可能存在不同的延迟,特别是当视频文件包含高分辨率或长时间视频时,解码处理的延迟可能导致视频帧和音频帧不同步。
解决方法:可以在导出时调整音频和视频的缓冲区大小或延迟时间,确保它们同步解码
- 遇到过哪些挑战或难题?如何解决的?
在 WF 项目中,我们曾经遇到过一个性能瓶颈问题:平台在高并发情况下,视频处理模块的响应时间大幅上升,影响了用户体验。
性能分析:我们使用 JMeter 和 Prometheus 进行了压力测试,并监控了数据库和应用服务器的资源使用情况。发现数据库查询和文件存储是瓶颈的关键所在。
优化数据库:通过分析慢查询日志,我们对数据库查询进行了优化,添加了索引并重构了部分查询逻辑。
缓存优化:针对频繁查询的数据,我们引入了 Redis 缓存,将热点数据存储在 Redis 中,减少数据库的访问频率。
分布式部署:我们增加了应用服务器的实例,并使用负载均衡来分摊请求负载,提升了整体的系统吞吐量。
2️⃣二面-技术面
- 数组和链表区别
- git用过哪些命令
- git add .:添加所有更改到暂存区。
- git commit -m "commit message":提交暂存区中的更改并附带提交信息。
- git push origin main:将本地分支的更改推送到远程仓库。
- git pull origin main:从远程仓库拉取最新的代码到本地分支。
- git clone [url]:克隆远程仓库到本地目录。
- git :查看仓库的当前状态,显示哪些文件被修改但尚未添加到暂存区,以及哪些文件已经在暂存区准备提交。
文件操作
1.git diff:比较工作区和暂存区的差异。
2.git log:查看提交日志。
3.git show [commit]:显示指定提交的详细信息。
撤销与恢复
- git reset [commit]:回退版本,移动HEAD指针到指定的提交。
- git revert [commit]:撤销之前的提交,创建一个新的提交来撤销之前的更改。
- git restore [file]:恢复或撤销文件的更改。
- 其他常用命令git stash:临时保存工作区的更改,以便稍后恢复。
- git stash pop:恢复最近一次保存的工作区更改。
- git -v:查看远程仓库的详细信息。
- git fetch []:从远程仓库获取最新的提交,但不会自动合并到本地分支。
分支操作
git branch:列出所有本地分支。
git checkout -b [branch]:创建并切换到新的分支。
git checkout [branch]:切换到指定的分支
git merge [branch]:将指定分支合并到当前分支
- 给你一个搜索框,怎么测试,设计测试用例
功能:ui界面 文字输入显示是否文字溢出 提示界面 点击查询调转
性能:弱网 响应 资源占用
兼容:浏览器 设备(移动端、pc)
安全:SQL注入测试 跨站脚本攻击XSS
- 会前端吗,vue生命周期
生命周期指的是从创建一个 Vue 实例开始,到它被销毁的整个过程。每个 Vue 实例都有一系列的生命周期钩子函数,这些钩子函数可以让我们在 Vue 实例的不同阶段执行自定义的代码。
Vue 实例的生命周期大致可以分为 四个阶段:
- 创建阶段:Vue 实例被初始化,数据和事件监听器设置,模板编译。
- 挂载阶段:将模板渲染为真实的 DOM,并将其插入到页面中。
- 更新阶段:当数据变化时,Vue 会重新渲染视图。
- 销毁阶段:销毁 Vue 实例,清理事件监听器,销毁组件实例。
创建阶段 1.beforeCreate:实例初始化之后,数据观测和事件/生命周期钩子设置之前被调用。此时,数据、事件、计算属性、方法等尚未设置。
应用场景:通常不用于开发中,除非需要了解 Vue 实例创建过程的最早阶段。
created:实例已经创建,数据和事件已经初始化,data、computed、methods 和事件监听器都已经设置完毕,DOM 尚未挂载。
应用场景:可以在此阶段执行一些初始化操作,如异步请求数据、定时器设置等。
挂载阶段
beforeMount:挂载开始之前被调用,相关的 render 函数首次被调用。
应用场景:在这里你可以进行一些即将挂载的准备工作,但通常不会做太多操作。
mounted:Vue 实例挂载到 DOM 后被调用。此时,组件的 DOM 已经被渲染完成,可以访问 DOM 元素。
应用场景:可以在此执行一些依赖 DOM 的操作,例如获取 DOM 元素的尺寸,或者进行一些外部库的初始化等。
更新阶段beforeUpdate:当数据更新时,视图更新前被调用。此时可以访问到更新前的数据和 DOM。
应用场景:通常不需要手动操作,除非需要在数据更新前执行某些清理工作或优化操作。
updated:当数据更新后,视图更新完成时调用。此时,组件的 DOM 已经更新,您可以对 DOM 做进一步的操作。
应用场景:用于操作更新后的 DOM,或进行一些需要重新计算的操作。
销毁阶段
beforeDestroy:组件销毁前调用。此时,实例仍然有效,可以执行一些销毁前的清理工作。
应用场景:可以用于清除定时器、取消网络请求,或者移除全局事件监听器等。
destroyed:组件销毁后调用。此时,组件实例已经被销毁,所有的监听器、子组件、事件等都已被清除。
应用场景:通常用于做一些最后的清理工作。
- 算法题:口述判断()字符合法性