风行✅
- 业务领域: 网络视频点播、OTT 智能大屏生态、短剧内容运营、家庭大屏文娱
- 技术栈: Vue 3、React、TypeScript、Node.js、OTT WebApp、HLS.js、Webpack/Vite
- 团队规模: 前端团队约100人
- 办公地点: 北京(总部)、上海、深圳
- 公司性质: 互联网文化传媒企业
- 薪资水平: 校招14-22万,社招18-38万
岗位类型
- OTT 大屏前端开发工程师 - 负责智能电视/机顶盒大屏 Launcher、视频播放器与遥控器焦点交互
- Web 业务前端开发工程师 - 负责风行网 PC 门户、移动 H5 专题页及短剧分发平台研发
- 全栈开发工程师 - 负责 Node.js 中间层、视频分发数据统计及运营活动低代码配置平台
技术特色
- 智能电视 OTT 空间按键焦点系统: 攻坚遥控器上下左右(D-Pad)空间导航算法、焦点移动记忆与按键响应防抖。
- 低端设备与大屏内存极限压榨: 针对 TV 芯片算力偏弱、内存(1G/2G)受限场景,深度实施 DOM 极简复用、图片内存释放与纹理降噪。
- 多码率流媒体自适应播放: 针对家庭 Wi-Fi 波动场景,基于 HLS.js 打造无缝切流与缓冲防卡顿体验。
面试流程概览
校园招聘
- 简历筛选 → 在线笔试(计算机基础 + 算法) → 技术一面 → 技术二面 → HR面试
- 总流程约2-3周
- 难度: 3/5星
- 通过率: 约18%
社会招聘
- 简历筛选/HR初步沟通 → 技术一面(开发经验与组件设计) → 技术二面(计算机基础、系统设计与算法) → HR面试
- 总流程约2周
- 难度: 3.5/5星
- 通过率: 约15%
题库
P0 必考知识点
如何准确获取元素距离视口顶部以及文档顶部的绝对距离?
答案
核心结论
- 距离视口(Viewport)顶部:首选现代浏览器标准 API
element.getBoundingClientRect().top,直接返回元素相对于当前视口上边缘的像素距离。 - 距离文档(Document)顶部:使用
getBoundingClientRect().top + window.scrollY(或document.documentElement.scrollTop),将视口相对距离与页面已滚动的垂直偏移量相加。
规范代码与兼容实现
// 1. 获取距离视口顶部
function getOffsetToViewport(element) {
return element.getBoundingClientRect().top
}
// 2. 获取距离整个文档 (Document) 顶部的绝对偏移
function getOffsetToDocument(element) {
// 现代方案:视口偏移 + 页面滚动距离
const rect = element.getBoundingClientRect()
const scrollTop = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop
return rect.top + scrollTop
}
// 传统递归 offsetTop 方案(理解原理备用)
function getOffsetToDocumentTraditional(element) {
let actualTop = element.offsetTop
let current = element.offsetParent
while (current !== null) {
actualTop += current.offsetTop
current = current.offsetParent
}
return actualTop
}
面试官视角
考查候选人对 DOM 盒模型尺寸与位置属性的掌握。面试官常追问:频繁在 scroll 事件中调用 getBoundingClientRect() 或 offsetTop 是否会触发强制同步布局(Forced Synchronous Layout / Reflow)?正确防范是结合 requestAnimationFrame 限频读写分离,或用 IntersectionObserver 替代滚动距离监听。
智能大屏(OTT TV)与 Web 前端遥控器焦点导航系统如何设计?
答案
核心结论
与移动端触控或 PC 鼠标点击不同,智能电视通过红外/蓝牙遥控器的上下左右(D-Pad)按键进行空间导航。核心架构包含空间几何寻路算法(Spatial Navigation)、DOM 焦点拦截管理与长按键加速防抖。
核心设计维度
- 键盘事件拦截:
- 全局监听
window.addEventListener('keydown'),拦截遥控器键值(KeyUp=38, KeyDown=40, KeyLeft=37, KeyRight=39, Enter=13)。
- 全局监听
- 空间方向几何计算(Spatial Navigation):
- 提取所有具备可聚焦属性(
data-focusable="true")的元素坐标矩形rect = el.getBoundingClientRect()。 - 当按“右”键时,在当前焦点右侧半平面过滤候选节点,计算两元素中心点欧氏距离与投射夹角加权值,选取代价最小的节点作为下一个焦点。
- 提取所有具备可聚焦属性(
- 焦点样式与按键防抖:
- 聚焦元素添加高亮类名
.focused,并执行transform: scale(1.08)放大放大动画。 - 快速长按遥控器时触发节流,避免连续触发无效渲染造成 TV 端掉帧。
- 聚焦元素添加高亮类名
延伸阅读
考察重点速览
- 必考知识点: DOM 定位与尺寸 API、强制重排重绘原理、计算机网络与 HTTP 状态码、前端组件拆分原则。
- 高频面试题: 元素相对视口/文档距离计算、Webpack/Vite 模块热重载原理、活动页高复用组件拆分、数组去重算法。
- 编程挑战: 数组去重与排序、深度遍历与广度遍历算法、实现空间焦点碰撞检测。
备考建议
针对性准备策略
- 扎实巩固计算机底层基础: 风行技术二面非常注重计算机通识(进程与线程区别、操作系统内存管理、数据库索引与常用算法)。
- 结合大屏/多端特色答题: 了解智能电视前端特点、音视频播放性能瓶颈及遥控器交互逻辑。
推荐准备资源
差异化准备建议
- 校招生: 重点复习数据结构、图论、进程线程基础及 JavaScript 语法底座。
- 社招生: 突出中大型音视频平台性能调优、组件化架构设计与跨端工程化经验。