BrowserStack 面试经历 |第 7 组(较新)
如下所述,我在 BrowserStack 进行了以下几轮比赛,每一轮都是淘汰赛。
第 1 轮(编码测试):
在线 HackerEarth 测试有 3 个问题,持续 2 小时,总分 200 分。这些问题属于简单/中等级别。
以下所有回合都在现场。
第 2 轮(机器编码-1):
问题陈述:
此问题需要您实现日志监视解决方案(类似于 UNIX 中的tail -f命令)。但是,在这种情况下,日志文件托管在远程机器上(与您的服务器代码相同的机器)。日志文件处于仅附加模式。
您必须执行以下操作:
1. 一个服务器端程序,用于监视给定的日志文件并能够流式传输其中发生的更新。这将与日志文件在同一台机器上运行。您可以使用任何编程语言来实现服务器。
2. 一个基于 Web 的客户端(可通过 http://localhost/log 等 URL 访问),当更新发生时打印文件中的更新,而不是在页面刷新时打印。该页面应该加载一次,并且应该保持实时更新。用户登陆页面时会看到文件中的最后 10 行。
问题约束:
- 服务器应该将更新推送到客户端,因为我们必须尽可能实时。
- 服务器不应每次都重新传输整个文件。它应该只发送更新。
- 服务器应该能够同时处理多个客户端。
- 网页不应在第一次加载后停留在加载状态,此后也不应重新加载。
- 您不得使用提供类似尾巴功能的现成库或工具。
我们将评估您的代码质量、可测试性、模块化、极端情况等。
第 3 轮(机器编码-2):
问题陈述:
您必须实现一个简单的无状态 Web 服务,它允许与两个 Web 浏览器交互: Google Chrome和Mozilla Firefox。
该服务应支持以下端点:
Method Endpoint Parameter(s) Description | |||||||
---|---|---|---|---|---|---|---|
GET | /start | browser, url | Starts | ||||
GET | /stop | browser | Kills the | ||||
GET | /cleanup | browser | Deletes all the browsing session information such as history, cache, cookies, downloads, saved passwords, etc for | ||||
GET | /geturl | browser | Returns the current active tab’s URL. Assume the |
<浏览器> = chrome/firefox
端点的示例用法:
- http://
/start?browser= &url= 应该启动所需的浏览器并在同一浏览器实例中打开 URL。 - http://
/geturl?browser= 应该获取给定浏览器的当前活动标签 URL - http://
/stop?browser= 应该停止给定的浏览器,如果它正在运行 - http://
/cleanup?browser= 应该清理给定浏览器的浏览会话(如果已停止)。
注意事项:
- 浏览器必须在服务器端启动/停止。即,如果服务器在机器 A 上运行,并且从机器 B 发出对 /start 的请求,则浏览器应该在机器 A 上启动。为了进行此分配,假设机器 A 和 B 相同,即您自己的机器。
- 任何依赖Selenium (WebDriver) 协议的工具或库都不应依赖于服务。
- 服务不需要独立于操作系统,即如果您有一台 Windows 机器,则预计该服务可以在 Windows 中正常运行,但不希望它可以在所有操作系统上正常运行。也就是说,如果您提供独立于操作系统的实现,您将获得奖励积分。
- 请记住在点击 /cleanup 之前进行备份,以避免删除您的数据。
第 4 轮(与工程经理的第 1 轮技术):
1) 你最喜欢的实习项目。
2)关于个人项目的问题以及如果我们进行更改您将如何处理它。
3) 优势和劣势。
4)给出一个问题,在数组的开头带上全零,必须在 O(n) 时间和 O(1) 空间内解决它。
5)给出了一个数据结构设计问题,我们可以在 O(1) 时间内查询所有内容。
6) 巨大的文件处理,比如我们有 1 TB 的文件,你必须计算 RAM 有限的单词的出现次数,比如你只有 8 GB 的 RAM。你将如何处理它?
第 5 轮(与工程总监的第 2 轮技术):
1)关于项目。
2) 失败的项目。
3) HTTP 与 HTTPS。
4) HTTP 错误代码。
5) HTTP 标头中的 User-Agent 是什么?
6) 如果你的经理要求你使用 C++ 而你更喜欢Python,你会怎么做?
7) 如果给你一个问题,你的经理太忙了,你必须独立解决,你将如何处理?
8) 如果您必须将系统部署到生产环境中,您将考虑哪些要点?
9) 在构建系统时,您会发送什么样的日志,以便将来有助于监控?
10) 数据库扩展。
第六轮(人力资源面试):
1)解释在一次实习中所做的工作。
2) 你是怎么知道 BrowserStack 的?
3) 为什么选择 BrowserStack?
4) 你使用 GitHub 吗?
5) 你参加竞争性编码比赛吗?
6) 任何你认为失败但你设想并成功的项目?
判决:拒绝。