热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

记一次对p站开发人员的面试

记一次对p站开发人员的面试-作者:davidwalsh译者:前端css和js干货来源:davidwalsh无论您对成人网站的立场如何,都无法否认成人网站行业对推动网络发展产生

作者:davidwalsh 译者:前端css和js干货 来源:davidwalsh

无论您对成人网站的立场如何,都无法否认成人网站行业对推动网络发展产生了巨大影响的事实。 从突破浏览器的视频限制到通过WebSocket推送广告从而躲过广告拦截器的检测,必须聪明地在网络的前沿进行创新。
最近有幸采访了最大的成人网站P站的网络开发人员。 我想了解如何改进 Web API,以及在成人网站上工作是什么感觉。
注意:成人行业竞争非常激烈,所以有一些他们不方便回答的问题。

1.成人网站显然会显示大量图形内容。 在开发过程中,您是否使用了大量图像和视频占位符? 开发内容离最终产品还有多远?

我们在开发网站时实际上不使用占位符! 重要的是代码和功能。 一开始肯定会有一点学习曲线,但我们都很快就习惯了。

2.当涉及到流和第三方广告脚本时,您如何在站点功能开发过程中模拟如此重要的动态资源?

对于开发,播放器分两个部分,基础播放器实现核心功能并触发事件,开发是在一个干净的房间里面完成的。为了集成到网站,我们希望这些第三方脚本和广告能够运行,以便我们能够尽早在流程中发现问题。在特殊情况下,我们将与广告商合作,允许我们手动触发通常是随机的事件。

3.一个普通页面可能至少有一个视频、GIF 广告、一些摄像师预览以及其他视频的缩略图。 您如何衡量页面性能以及如何尽可能保持页面性能? 有什么技巧可以分享吗?

我们使用一些评测系统。

  • 我们的播放器周期性向我们报告有关视频播放性能和一般使用的指标
  • 用于一般站点性能监测的第三方 RUM 系统。
  • WebpageTest 私有实例,用于在AWS 数据中心编写测试脚本。 我们主要使用它来查看在某段时间可能发生的事情。通过他我们还能查看“瀑布图”。

4.假设前端最重要和最复杂的功能是视频播放器。 比如在视频前加入广告、标记视频的精彩瞬间、更改视频速度和其他功能,如何保持它的性能、功能和稳定性?

我们有一个专业的视频播放器团队,他们的首要任务是不断监控性能和效率。 为此,我们几乎使用了所有可用的东西; 浏览器性能工具、网页测试等。我们所做的任何更新都通过可靠的QA确保稳定性和质量。

5.专门的视频团队有多少人? 团队中有多少前端开发人员?

我想说,考虑到产品的规模,团队规模接近平均水平。

6.在您从事成人网站工作期间,您如何看待前端格局的变化? 哪些新的 Web API 使工作更轻松?

我确实在前端的各个方面都看到了很多进步;

  1. 从纯 CSS 到使用 LESS 和 Mixins,再到具有媒体查询和图片标签的灵活网格系统,以适应不同的分辨率和屏幕尺寸
  2. jQuery 和 jQueryUI正在慢慢淡出,所以我们将转向更高效的面向对象框架vanilla JS 。
  3. 我们喜欢新的 IntersectionObserver API,它对于加载图像的方式更有效
  4. 我们也开始使用画中画 API,在我们的一些页面上放置浮动视频,主要是为了获得用户对反馈。

7.展望未来,有没有您希望更改、改进甚至创建的 Web API?

其中一些我们希望改变或改进; Beacon、WebRTC、Service Workers 和 Fetch:

  • Beacon:一些 IOS 问题,它不能很好地处理 pageHide 事件
  • Fetch:没有下载进度,也没有提供拦截请求的方法
  • WebRTC:如果分辨率不够大,即使是屏幕共享,联播层也会受到限制
  • Service Workers:调用 navigator.serviceWorker.register 不会被任何service worker的 Fetch 事件处理程序拦截

8.在过去几年中WebVR 一直在改进,WebVR 在当前状态下有多大用处?成人网站为支持 VR 内容付出了多少努力? 触觉在您网站上的 WebVR 中是否有作用?

我们正在研究 webXR,作为最大的分发平台,我们需要支持创作者和用户,因为他们想体验我们的内容。 我们仍在探索在这些新媒体中,内容和平台应该是什么样的。

我们是第一个支持VR、计算机视觉和虚拟表演者的平台,并将继续推动新技术。

9.每个页面上都有这么多不同类型的媒体和内容,桌面与移动设备的最大考虑是什么?

功能主要受操作系统和浏览器类型限制。 就完全不同的功能集而言,iOS 与 Android 是一个很好的例子。

例如,一些 iOS 移动设备不允许我们在全屏模式下使用自定义视频播放器,它们强制使用本机 QuickTime 播放器。 当我们开发新功能时,必须考虑到这一点。 然而,Android 给了我们完全的控制权,我们可以将我们的功能应用到全屏模式。

HLS中的自适应流也是另一个例子,IE和Edge对HLS流质量很挑剔,处理不当时,视频会不断地卡顿并产生伪影。

10.您工作的成人网站的当前最低浏览器支持是多少? Internet Explorer 是否已被淘汰?

很长一段时间我们支持 IE ,但最近放弃了对 IE11 之前的任何浏览器的支持。 同时,我们也停止使用 Flash视频播放器。 我们主要关注 Chrome、Firefox 和 Safari。

11.您能否分享一些有关典型成人网站技术栈的信息? 服务器和前端? 你在使用哪些库?

我们的大多数网站都使用以下内容作为基本技术栈:

  • nginx
  • PHP
  • MySQL
  • Memcached 和/或 Redis
  • 在适当的地方使用其他技术,如 Varnish、ElasticSearch、NodeJS、Go、Vertica。

对于前端,我们主要使用 vanilla Javascript,我们正在慢慢放弃jQuery,我们才刚刚开始使用框架,主要是 Vue.js

12.从局外人的角度来看,成人网站通常看起来非常相似:大量视频缩略图、聚合视频内容、摄像头表演、广告。 作为从事这些工作的人,如何脱颖而出?

我们非常努力地在不同层面赋予每个品牌一些独特性; 内容库、用户体验和功能集,以及许多不同的算法。

13.在为您当前的雇主申请和面试之前,您对可能在成人网站上工作有什么想法? 你有过犹豫吗? 如果是这样,你的包袱是如何放下的?

它从来没有真正困扰过我,最终是如此吸引人。 数以百万计的人可能与我所从事的功能进行交互真的很鼓舞人心。我第一次做的东西上线了,我非常自豪,我确实告诉我所有的朋友都去看看!

14.就最终产品而言, 告诉朋友、家人和熟人您在成人网站上工作是否会带来耻辱? 告诉人们您在成人网站上工作是否有任何犹豫?

我很自豪能在这些产品上工作,我身边的人都知道并为之着迷。 它总是令人惊奇谈话、笑话的来源,而且真的很有趣。

15.在成人网站工作时气氛是否有所不同?

这里的气氛非常轻松和友好。 我没有发现这里工作文化与其他地方有任何重大差异,空间上这里比我以前工作过的任何地方都大得多。

16.作为前端开发人员,您与哪些团队合作最密切? 最常见的日常沟通方式有哪些?

我们与后端开发人员、QA 测试人员和产品经理合作——大部分时间我们只是走到彼此的办公桌前交谈。 如果没有,聊天(MS Teams)会经常使用。 然后是电子邮件。

17.最后,作为在成人网站上工作的前端开发人员,您有什么想分享的吗?

作为创造用户广泛使用的产品的一部分,真的很令人兴奋。 随着技术的发展,我们通常处于技术发展的最前沿,这使其充满乐趣和挑战性。

18.面试结束

我发现我们的采访真的很有启发性。 我有点惊讶他们在开发功能和设计时没有使用图像占位符。 很高兴看到 P站继续通过 WebXR、WebRTC 和 Intersection Observer 推动网络的发展。 我也很高兴看到他们认为当前的Web API集,足以放弃 jQuery。

我真的希望我能够从他们那里得到更具体的技术技巧; 尤其是性能优化和hacks技巧。 我相信在他们的源代码背后有很多知识需要学习!如果是你会问什么问题?


推荐阅读
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • 本问题探讨了在特定条件下排列儿童队伍的方法数量。题目要求计算满足条件的队伍排列总数,并使用递推算法和大数处理技术来解决这一问题。 ... [详细]
  • 优雅实现 jQuery 折叠展开下拉菜单
    本文介绍了一种使用 jQuery 实现的优雅折叠和展开效果的下拉菜单,通过简单的 HTML 结构和 CSS 样式,结合 jQuery 脚本,可以轻松创建出美观且功能强大的下拉菜单。 ... [详细]
  • 本文介绍了如何使用JavaScript和jQuery实现页面元素随着滚动条的移动而相应变化位置的功能,提供了一段简洁的代码示例。 ... [详细]
  • 基于JQuery实现的评分插件
    本文介绍了一个使用JQuery创建的交互式评分控件。当用户将鼠标悬停在星星上时,左侧的星星会变为实心,右侧保持空心,并显示对应的评分等级;移开鼠标后,所有星星恢复为空心状态。 ... [详细]
  • 本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文将详细介绍多个流行的 Android 视频处理开源框架,包括 ijkplayer、FFmpeg、Vitamio、ExoPlayer 等。每个框架都有其独特的优势和应用场景,帮助开发者更高效地进行视频处理和播放。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 深入解析ES6至ES8的新特性与应用
    本文详细介绍了自2015年发布的ECMAScript 6.0(简称ES6)以来,JavaScript语言的多项重要更新,旨在帮助开发者更好地理解和利用这些新特性进行复杂应用的开发。 ... [详细]
author-avatar
保卫祖国666
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有