📜  BrowserStack 面试经历 |第 7 组(较新)

📅  最后修改于: 2022-05-13 01:58:23.708000             🧑  作者: Mango

BrowserStack 面试经历 |第 7 组(较新)

如下所述,我在 BrowserStack 进行了以下几轮比赛,每一轮都是淘汰赛。

第 1 轮(编码测试):
在线 HackerEarth 测试有 3 个问题,持续 2 小时,总分 200 分。这些问题属于简单/中等级别。

以下所有回合都在现场。

第 2 轮(机器编码-1):

问题陈述:

此问题需要您实现日志监视解决方案(类似于 UNIX 中的tail -f命令)。但是,在这种情况下,日志文件托管在远程机器上(与您的服务器代码相同的机器)。日志文件处于仅附加模式。

您必须执行以下操作:

1. 一个服务器端程序,用于监视给定的日志文件并能够流式传输其中发生的更新。这将与日志文件在同一台机器上运行。您可以使用任何编程语言来实现服务器。

2. 一个基于 Web 的客户端(可通过 http://localhost/log 等 URL 访问),当更新发生时打印文件中的更新,而不是在页面刷新时打印。该页面应该加载一次,并且应该保持实时更新。用户登陆页面时会看到文件中的最后 10 行。

问题约束:

  1. 服务器应该将更新推送到客户端,因为我们必须尽可能实时。
  2. 服务器不应每次都重新传输整个文件。它应该只发送更新。
  3. 服务器应该能够同时处理多个客户端。
  4. 网页不应在第一次加载后停留在加载状态,此后也不应重新加载。
  5. 您不得使用提供类似尾巴功能的现成库或工具。

我们将评估您的代码质量、可测试性、模块化、极端情况等。

第 3 轮(机器编码-2):

问题陈述:

您必须实现一个简单的无状态 Web 服务,它允许与两个 Web 浏览器交互: Google ChromeMozilla Firefox。

该服务应支持以下端点:

Method
Endpoint
Parameter(s)
Description
GET/startbrowser, urlStarts which has the open inside it.
GET/stopbrowserKills the .
GET/cleanupbrowserDeletes all the browsing session information such as history, cache, cookies, downloads, saved passwords, etc for
GET/geturlbrowserReturns the current active tab’s URL. Assume the has exactly one window and multiple tabs.

<浏览器> = chrome/firefox

= 任何有效的 URL,例如:http://www.browserstack.com

端点的示例用法:

  • 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) 任何你认为失败但你设想并成功的项目?

判决:拒绝。