📌  相关文章
📜  BrowserStack 面试经历 |更新鲜

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

BrowserStack 面试经历 |更新鲜

此时,我是孟买 Tier 3 学院计算机科学专业的最后一年学生。我有一些竞争性编程经验和一些开源贡献。我参加过几次黑客马拉松。我的一位前辈向我推荐了软件工程师职位的空缺。

第一轮:线上轮
在线回合是在hackerearth上进行的,这是一个2小时的编码测试,包括3个问题

  1. 100 分:为给定场景设计一个反向代理。您将获得 n 个服务器及其 IP 地址,m 个端点,反向代理具有每个端点的 IP 列表。到达端点的每个请求都以循环方式发送到此 IP 地址。您还可以从服务器监视器获得对反向代理的特殊类型的命中,这表明
    • 特定服务器已关闭,无法接受任何请求
    • 一个特定的服务器现在已经启动并且不能接受任何请求

    一旦服务器恢复正常,它应该以循环方式添加到队列的末尾,对应于它负责的每个端点。
    在 q 查询结束时,会给出每个服务器收到的请求列表。

  2. 50 分:给定一个数字数组,返回 1 是该数组是螺旋排序的,如果不是螺旋排序,则返回 0。对于要螺旋排序的数组,当按照以下顺序排列时,其值必须按升序排列 0, n-1, 1, n-2, 2, n-3……
  3. 50 分:给定一个单词列表,每个单词返回 1 和 0,这取决于它们是否有最多 n 个重复的单个字符

我在这一轮中能够获得完整的 200 分,但根据 HR 使用简历和个人资料进行的筛选,也考虑了获得 120 分的人。
来自孟买周边的入围候选人在现场进行了进一步的轮次,来自其他城市的人则通过视频通话在线进行了轮次。
因为我在孟买,所以我被叫到现场。我们被告知带上自己的笔记本电脑进行机器编码。

第 2 轮:机器编码轮 - I
这是一个 2 小时的回合,有以下问题陈述。在分配的时间结束时,您已经进行了演示并解释了您的实现。

此问题需要您实现日志监视解决方案(类似于 UNIX 中的 tail -f 命令)。但是,在这种情况下,日志文件托管在远程机器上(与您的服务器代码相同的机器)。日志文件处于仅附加模式。
您必须执行以下操作:
1. 一个服务器端程序,用于监视给定的日志文件并能够流式传输其中发生的更新。这将与日志文件在同一台机器上运行。您可以使用任何编程语言来实现服务器。
2. 一个基于 Web 的客户端(可通过 http://localhost/log 等 URL 访问),当更新发生时打印文件中的更新,而不是在页面刷新时打印。该页面应该加载一次,并且应该保持实时更新。用户登陆页面时会看到文件中的最后 10 行。
问题约束
服务器应该将更新推送到客户端,因为我们必须尽可能实时。
服务器不应每次都重新传输整个文件。它应该只发送更新。
服务器应该能够同时处理多个客户端。
网页不应在第一次加载后停留在加载状态,此后也不应重新加载。
您不得使用提供类似尾巴功能的现成库或工具。
我们将评估您的代码质量、可测试性、模块化、极端情况等。

您可以使用您选择的任何语言执行任务并借助互联网。我为此任务使用了 node.js、express.js 并完成了所有功能,但我无法获得可能实现的最有效的实现。
我使用 fs watch 方法进行实时更新,并使用套接字将数据传输到客户端。

第 3 轮:机器编码轮 – II
这又是一个 2 小时的回合,问题陈述如下。在分配的时间结束时,您已经进行了演示并解释了您的实现。

在这个问题中,你必须建立一个关于 IMDb Charts 上列出的前 N 部电影的小型知识库,并提供一种查询机制。
您的程序应该接受 N 作为输入参数并执行以下操作:
从 IMDb 网站获取前 N 部电影的列表,并建立一个内存中的知识库,包括
电影的名字
每部电影的演员姓名
这应该在运行时构建并存储在您选择的合适数据结构中。
提供一个查询接口(命令行就可以)通过演员的名字来查询这个知识库。对于给定的演员和数字 M (< N),它应该返回他们演过的前 M 部电影。
你可以用你选择的任何语言和库来尝试这个问题。您不能使用任何外部 API 从 IMDb 获取电影。

例如,如果 N=3,那么程序应该从 IMDb Charts 中解析前 3 部电影的各个页面,并建立演员的知识库(每页大约有 15-20 个名字)。在查询“Morgan Freeman”和 M=1 时,您应该返回“The Shawshank Redemption”。

我使用Python构建了一个简单的 CLI 界面并使用了漂亮的汤和请求来执行此任务。

在这一轮之后,进行了淘汰,只有在两项任务中都表现出色且接近完成最大功能的人才能被选中进入下一轮。

第四轮:工程经理轮

  • 您是如何找到日志文件的最后 n 行的?如果有更多时间,您将如何有效地做到这一点?
  • 在你简历中列出的实习中,哪个项目最有趣?关于该项目的一些后续问题
  • 你在这次实习中没有学到的东西和你在实习中犯的错误
  • 你如何计算一个非常大的文件中单词的频率?(地图减少)

第五轮:工程总监轮

  • 带我浏览你的简历
  • 你在大学里最享受的一件事是什么?
  • 你周末都干什么 ?
  • 当您决定将一段代码用于生产环境时,您会考虑哪些参数?
  • 一些基于情境的行为问题
  • http 和 https 的区别,什么是 http 标头、http 状态码和 http 用户代理?
  • 您知道或贡献过哪些开源组织?

在这 2 轮之后,进行了进一步的淘汰,选定的人被送往 HR 轮。

第6轮:人力资源轮

  • 你一整天过得怎么样?您如何看待我们的面试过程
  • 为什么选择浏览器堆栈?
  • BrowserStack 的价值主张是什么?
  • 你在 Github 上有多少贡献?你喜欢开源吗?
  • 您的 Codechef 评分是多少?你喜欢竞争性编程吗?
  • 在列出的项目中,哪个是您做过的最有趣的项目,为什么?

在这一轮之后,我们被告知,今天就是这样,结果将在一两天内公布。
两天之内,我接到了 HR 的电话,说他们想延长报价。