📌  相关文章
📜  彭博采访经历 |第 5 套(适用于入门级软件工程师)

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

彭博采访经历 |第 5 套(适用于入门级软件工程师)

我通过彭博的职业部分在线申请。该应用程序适用于彭博伦敦网站的入门级软件工程师。我需要上传我的简历和求职信。我选择的面试语言是 C/C++。

第 1 节:
在开始申请后的几周内,我接到了人力资源部的电话,说他们愿意提前申请我的候选人资格并安排一次电话面试。这是一个1:1的电话采访。电话从面试官自我介绍开始,然后是关于我自己的简短介绍。然后他问我为什么想加入彭博社。他问我以下问题:

1a)指针基础:

#include 
#include 
  
using namespace std;
  
  
int main(int argc, char *argv[])
{
    char    abc[27];
    char    *ptr = abc;
    strcpy(abc, "abcdefgxyz");
    /*
     * What are the types and values of expressions:
     *
  
     * 1. abc
     * 2. *abc
     * 3. abc[2]
     * 4. &abc[3]
     * 5. abc+4
     * 6. *(abc+5) + 2
     * 7. abc[10]
     * 8. abc[12]
     * 9. &ptr// ??? a = &ptr;
     */
     cout << &abc << endl;
       
       
    return 0;
}

1b)支架匹配:
给你一个由括号和其他字符组成的字符串。你必须判断它是否是一个平衡良好的字符串。请参见下面的示例:

/*

"(aa)bb" -> true
"[ aa [ bbb ]" -> false
"aa } bbb { c" -> false
"aa [ bb () ]" -> true
"[aa { ] cc } ]" -> false

*/

1c)网页浏览器设计:
设计并实现一个 Web 浏览器,该浏览器支持在任何给定情况下您可以根据访问次数有效地告诉前 5 个访问的网站的功能。这个问题是 LRU 缓存的一个变体,可以使用映射和双向链表来优化实现。设计模板见下图:

struct Webpage
{
    std::string url;
    size_t numberOfVisits;
};
  
struct History
{
    void visit(const std::string & url)
    {
    // Implement the logic
    }
  
    void printTop5()
    {
          // Implement the logic
    }
};
  
int main()
{
    History h;
    std::cout << "before visits\n";
    h.visit("www.google.com");
    h.visit("nytimes.com");
    h.visit("guardian.co.uk");
    h.visit("dev.ibm.com");
    h.visit("www.google.com");
    std::cout << "after  visits\n";
    h.print();
}

第 2 节:
在这次电话采访之后,我被邀请进行视频采访。本次面试过程为 2:1,采用与上一次面试相同的介绍模式。被问到以下问题:

2a)字符串的行程编码。请参见下面的示例:

aaaaabbbccd => a5b3c2d1
xyz => x1y1z1

2b)合并重叠区间。请参见下面的示例:

[1,3] [2,5] [8,9] => [1,5] [8,9]
[1,3] [2,6] [4,99] => [1,99]

第 3 节:

在视频采访之后,我被邀请参加另一个 2:1 的视频采访。它遵循与之前采访相同的介绍模式。被问到以下问题:

3a)给定一棵二叉树,判断这是否是一个有效的 BST。

// This is BST
//            10
//           /  \
//          5    15
//         / \
//        1   7

// This is not BST
//            10
//           /  \
//          5    15
//         / \
//        1   11

// This is not BST
//            10
//           /  \
//          5    15
//         / \
//        6   7

3b)在 C++ 中实现一个通用哈希图。确保使用模板、良好的散列函数并准备好讨论处理冲突的设计。

第 4 节:

继上述电话和视频面试成功后,我被邀请到伦敦办事处进行现场面试。我获得了签证协助,并提供了两种方式的经济旅行(印度 - 伦敦)以及 2 天 2 晚的酒店住宿。

与我同行的还有大约 10 名来自不同国家和地区的候选人。我们受到了人力资源部的欢迎,并进行了全面的办公室参观。办公空间很棒——也许是业内最好的办公空间之一。我真的很喜欢它。这次旅行持续了大约一个小时。在此之后,我们所有人都与本应接受我们面试的工程师共进早餐。我们预计将在本次会议上进行交流。

我将在以下小节中提供现场面试的详细信息:

4a)第一轮:这是关于算法和数据结构的 3:1 面试。我被问到一个与 1.b 非常相似的问题。如果 '&' 与字符串中的 '&' 匹配,则稍作修改,您将如何修改代码以适应这种情况。您将期望遵循代码模块化,以便如果添加任何要求,您可以轻松地适应它。此外,我们还讨论了 C/C++ 基础——指针、数据类型。此外还有关于堆栈的设计问题——你将如何实现它? – 使用数组或链表,有什么权衡。

4b)第二轮:与工程经理进行 1:1 面试。我们详细讨论了我们的简历——我取得了什么成就,简历中提到的项目有什么缺点。他问了很多行为问题,他想看看我是一个多么优秀的团队合作者。

然后他问了一个设计问题。你在电子交易所工作。全天,您都会收到由产品名称及其股票交易量组成的报价(交易数据)。例如:{名称:沃达丰,音量:20}。如果出现以下情况,您将维护什么数据结构:
*您必须在一天结束时告诉交易量排名前 k 的产品。 (我为此使用了向量和堆)。
*您必须告诉全天交易量排名前k的产品。 (我使用平衡的 BST 和映射来存储每个产品的内存地址)。

4c)第三轮:第三轮由一名人力资源代表进行。她问了有关 HR 团队感兴趣的问题。其中一些列举如下:
*为什么选择彭博?
*您是如何听说彭博的?
*你为什么不在伦敦的其他公司申请?
*您理想的工作条件是什么?
*是什么让你有动力?
*你为什么要离开你现在的公司?
*离开公司你会难过吗?
*你的期望薪水是多少?

第 5 节:
在现场采访之后,我们与伦敦的工程负责人安排了最后一个电话。引用的电话会议的目的是:“看看彭博是否提供了候选人的期望,因此最终这对双方来说都是双赢的局面。”重点主要放在候选人的行为方面。以下是我在面试中记得的一些问题:
*为什么选择彭博?
*您对彭博的期望是什么?
*您为什么选择计算机科学作为您的专业领域?
*您引以为豪的项目是什么?
*你失败的一个项目是什么?
*如果你有机会再次为你失败的项目工作,你会改变什么?
*您目前的组织中最令人沮丧的事情是什么?
*说说你工作过的公司的优缺点?

第 6 节:

在上述面试之后,我接到了 HR 的电话,说他们想给我一个 offer。

专业提示:了解彭博。在所有的采访中都会问你为什么要加入彭博社。了解彭博正在做的一些你感兴趣的项目,并与你的面试官讨论同样的问题。你对加入彭博的热情越高——它就越能增加你被选中的机会。彭博采访除了检查你的技术能力外,还可以查看你是否适合该组织——这意味着你的行为方面将得到相当大的重视。查看以下链接,了解有关彭博技术的信息:
https://www.bloomberg.com/careers/technology/engineering/
https://www.techatbloomberg.com/
https://www.bloomberglabs.com/