热门标签 | 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技巧。 我相信在他们的源代码背后有很多知识需要学习!如果是你会问什么问题?


推荐阅读
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 在Java中,我会做这样的事情:classPerson{privateRecordrecord;publicStringname(){record().get(name);}p ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 一、路由首先需要配置路由,就是点击good组件进入goodDetail组件配置路由如下{path:goodDetail,component:goodDetail}同时在good组件中写入如下点击事件,路由中加入 ... [详细]
  • scrapy 采集入为库 mysql 数据库,只更新一个字段 提示这个语法错误?
    就是查询有没有这个字,如果查到这个字就更新这个字的bsmc字段表是news_topic插入代码如下: ... [详细]
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社区 版权所有