快手 Agent 岗一面:CSS 能力边界与插入幂等
本场面试题
- CSS 里面能写脚本吗?
- Java 接口向数据库新增数据时,怎样做到幂等?
面经与参考答法
快手 Agent 岗一面:CSS 能力边界与插入幂等
公司为快手,一面。作者自述投递岗位写 Agent,并在反问时获知工作涉及 Vue 前端和 Java 后端;这只反映该次交流,不能推广为全公司技术栈。具体正式岗位名、部门、面试日期与时长均未注明。
以下问题根据候选人公开自述选录,经历未获外部认证。原帖未提供完整现场答案;短答与例子均为编辑教学补充,不代表候选人实际作答、项目实现或企业标准答案。
选录原文清晰的 CSS 能否写脚本、数据库新增幂等两题。Vue“拖动轴”未说明具体控件,多个表合并也未给表结构和合并语义,均保留原话但不重建题目;“其他小问题”不算可识别问题。
(1)CSS 里面能写脚本吗?
浏览器把 CSS 作为声明式样式语言解析,不把 JavaScript 语句当 CSS 规则执行。选择器、伪类和动画能表达一部分随状态变化的样式;请求接口、计算业务状态或任意事件处理通常交给 JavaScript。预处理器或脚本生成 CSS,也不等于 CSS 本身运行了脚本。 教学例子:鼠标悬停时改变颜色可用 CSS;点击按钮后查询业务数据,再决定显示什么内容,需要相应的脚本和应用逻辑。这个例子没有恢复原帖未给条件的“拖动轴”。
(2)Java 接口向数据库新增数据时,怎样做到幂等?
先定义一次逻辑操作的稳定标识,在明确作用域内由数据库唯一约束或原子账本争取唯一执行权,并在同库事务中一起提交业务数据与处理结果。相同请求重试复用已有结果,不同内容复用同一键应冲突;先查询再无约束插入会有竞态,换成 Java 语言也不会自动消除。 教学例子:同一创建请求因响应丢失而重发,两次携带同一操作键;只有一个事务创建记录,另一个返回已保存结果。具体业务表结构原文未给,这里不假定存在某个字段。