彭博采访经历 |第四套(入门级软件工程师)
面试过程:我通过职业页面申请并通过邮件获得回复,安排了 45 分钟的hackerrank codepair 面试(2:1)。
成功通过这一轮后,我不得不通过视频会议面试(2:1)在hackerrank上进行实时编码。
然后,我被要求进行现场面试,这是 2 小时的面试以及在hackerrank 上的编码。
据我说,无法对“为什么选择彭博”之类的问题做出适当的回答导致我被拒绝,所以我建议在面试前对公司进行背景调查。
面试问题:
第一回合:
第一个问题:
#include
int main(int argc, char *argv[])
{
char abc[27];
char *ptr = abc;
strncpy(abc, "abcdefghij",10);
/*
* What are the return types of each expression:
*
* 1. abc
* 2. *abc
* 3. abc[2]
* 4. &abc[3]
* 5. abc+4
* 6. *(abc+5)
* 7. abc[10]
* 8. abc[11]
* 9. ptr
* 10. &ptr
*/
return 0;
}
第二个问题:
编写一个链表类以及附加函数(在末尾添加一个节点)和析构函数。
第二轮:
第一个问题:编写一个函数,将两个节点指针作为参数,并给出它们在二叉搜索树中的最低共同祖先。此外,我被问及空间和时间复杂度。
第二个问题:给定两个单链表形式的数字,使得最重要的 nbit 在头部,例如。 123存储为1->2->3,编写一个函数,将参数作为指向两个表示数字的链表头的指针,并返回指向另一个链表头的指针,该指针表示作为两个数字相加结果的数字作为参数给出。
例如: 1->2->3 , 4->5->6 应该返回 5->7>9。
我还被问及我的解决方案的时间和空间复杂性,以及如果链表是双向链表,我的解决方案将如何变化。
第三轮(现场):
第一个问题:最初给了我一个号码,我应该将其视为终止号码。给定一个连续的数字流,编写一个函数,在达到终止数字时返回第一个唯一数字。当达到终止数时,面试官想要一个 O(1) 中的答案,因此基本上需要预处理。
通过这个问题,我对进程如何工作的了解,我的意思是什么是堆。堆栈,全局变量,局部变量也被检查了。我还被问到哈希映射是如何工作的,它的时间复杂度,它是如何计算的,我还被详细询问了链表和数组以及迭代器取消引用。
除此之外,我还谈到了我最具挑战性的项目,最无聊的项目,为什么我选择计算机科学作为我的领域,为什么彭博等。