📌  相关文章
📜  Qualcomm FTE 软件工程师面试经验|在校园

📅  最后修改于: 2021-11-17 10:06:00             🧑  作者: Mango

“高通公司于 2021 年 8 月 14 日访问了我们的园区,招聘全职员工担任软件工程师角色”。它仅对 B.Tech 和 M.Tech 的电路分支(CSE、ECE、EEE)开放,最低 CGPA 截止值为 6.9。已有超过 250 名学生申请了该职位。

注意:由于大学关闭,整个过程都是虚拟的。

在线测试:这是一个基于 MCQ 的测试,分为 3 个部分。它完全是关于 C/C++ 代码输出、数据结构、调试、操作系统、OOP 和一些关于组合学的问题。难度级别为中难度。它是在 HirePro 平台上进行的 – 视频监制。 45 名学生被选中进行技术轮次。

技术轮的数量因学生而异,根据我们的表现,最少 2 轮到最多 4 轮。我只有 2 轮技术回合。我的一些朋友有3个,有些有4个。

第 1 轮(技术):这一轮在 Microsoft Teams 上进行。面试官和我分享了一个 HackerRank 代码对链接。

这一轮持续了大约1小时10分钟。面试官人很好。

他让我自我介绍,然后问了我的实习项目,这是在三星暑期实习的一部分。在充分讨论之后,他开始提出一些关于操作系统的问题,我已经回答了。问题是:-

  • 为什么需要磁盘调度以及有哪些不同类型的磁盘调度算法。
  • 作为后续问题,我被要求实现最佳磁盘调度算法并讨论其效率
  • 他问我关于计算机系统中存在的不同类型的记忆? (我的回答是缓存内存、RAM、二级内存和寄存器内存)他问了另一个关于缓存工作的后续问题,关于不同类型的缓存以及关于 LRU 缓存实现中使用的数据结构。

然后他问我最喜欢的编程语言是什么!!我告诉他们这是 C++。然后他问了一些深入的问题。问题是:-

  • 什么是不同类型的指针?
  • 不稳定的关键字
  • C++程序的内存分配
  • 创建一个单例类(使用私有析构函数和静态对象创建完成)。
  • new 和 delete 关键字(动态内存分配)

正如我提到的数据结构和算法是我最喜欢的主题,他对此提出了很少的问题。 (必须运行提供的 HackerRank 代码对链接中的所有代码)。

  • 给定一个字符串形式的句子,反转其中的单词并打印句子(https://www.geeksforgeeks.org/reverse-words-in-a-given-string/)
  • 创建一个链表并对包含整数的列表进行排序。讨论了各种排序技术,最后进行了归并排序,因为它是对链表进行排序而不是快速排序的最佳选择。 (https://www.geeksforgeeks.org/merge-sort-for-linked-list/) (https://www.geeksforgeeks.org/why-quick-sort-preferred-for-arrays-and-merge-sort -for-链表/)
  • 关于递归和在递归期间完成的内存分配的讨论(调用堆栈内存)以及动态编程。

面试官问我有没有什么问题。我问过我在高通担任软件工程师的工作,也问过骁龙。我还问过高通是如何引领无线通信革命的,以及如何开发 4G 和 5G,这是过去十年来最好的事情。本轮以感谢信结束。

第 2 轮(技术):这也是在 Microsoft Teams 上。这是我接受过的最艰难的技术面试之一,如果不是最艰难的。这一轮持续了大约1小时50分钟。面试官很好。这次面试是关于我作为一名计算机科学专业的学生所学的全部内容。虽然时间很长,但这是一次了不起的经历。

面试官介绍了自己,让我也做同样的事情。然后他彻底询问了我的简历。他询问了我的领导能力和一些更正式的问题。

然后他带着一些关于计算机网络的问题开始了实际的技术面试。问题是:-

  • OSI 模型以及所有 7 层的示例。
  • TCP/IP 模型和许多关于它的后续问题。
  • 什么是交换机、集线器和路由器?它们与 TCP/IP 模型的哪一层相关?
  • 什么是端口寻址?
  • IP 地址和 MAC 地址之间的区别,它们如何帮助 2 个不同网络之间的通信。
  • 进程间通信和后续问题,如管道、FIFO、消息队列、信号量以及有关创建和工作的一些代码。

我告诉他,我在 IPC 和 Socket 编程方面做了很多工作。所以,他询问了 IPC,对我印象深刻并感谢我向他解释了如何使用 IPC 创建聊天系统)。

然后他在操作系统中提问。问题是:-

  • 什么是死锁、自旋锁及其区别?
  • 互斥锁和信号量之间的区别。
  • 线程并要求编写伪代码以在线程上实现死锁。
  • 进程和程序的区别
  • 多线程进程中的线程内存分配
  • 内存管理以及为什么需要分页(我已经解释了连续内存分配中的碎片等问题)

然后他在计算机架构中问了几个问题:-

  • 计算机系统中有哪些不同的字节序?编写一个 C++ 代码来显示我们系统的字节序是大还是小。 (https://www.geeksforgeeks.org/little-and-big-endian-mystery/)
  • 计算机系统中的总线及其类型是什么?

我被问到关于数据结构c++ 的问题:- (应该在提供的代码对链接中编码。我们需要为一些问题编写适当的工作代码,为一些问题编写伪代码)

  • 动态分配内存(堆内存),然后是栈内存和堆内存的区别。
  • 写一段C++代码来实现栈溢出和堆内存溢出。
  • 什么是传递值和传递引用?编写代码来实现它并解释它的内存级别工作。
  • 给定一个字符串中删除多余的空格和反向字符串中的奇数定位的话。
  • 给定一个链表,例如1->2->3->4->——>n将最后一个节点改为第一个节点,然后返回链表。即返回n->1->2->3->—->n-1。
  • 给定一个以名称形式表示并按字典顺序排列的名称链表,在名称列表中的正确位置插入一个新名称。
  • 给定二进制形式的编码字符串,将其转换为十进制形式。例如,如果字符串是“a10101b001c11”,那么输出应该是“a21b1c3”,因为十进制形式的 10101 = 21、001 = 1 和 11 = 3。
  • 给定二叉搜索树的 Preorder 数组,给定 bst 的其他排列有多少将形成与给定预序相同的 BST。 (这是一个绝妙的问题,需要对BST概念有很好的了解和一些数学工作。答案是选择那些值小于树根的排列,即 pre[0],然后将它们全部排列到紧邻 pre[0],所有大于 pre[0] 的元素都排在前面选择的较小元素之后。例如 4, 1, 3, 2, 5, 7,6, 8, 11, 10 是前序,因此在 bst 的前序中,所有小于 root 的较小元素即 4 将首先出现,然后是大于 root 的元素。因此排列 1, 3, 2, 5, 7, 6, 8, 11, 10 以这样的方式,所有小元素形成一个组,然后所有大元素。因此回答(n-1)p(elements < pre[0]) 。在这个例子中,它将是10-1p3 = 9p3其中 p 是置换符号 p)。

最后一个问题是一个关于 3 个灯泡和 3 个开关的谜题,并找到正确的一对 (https://www.geeksforgeeks.org/puzzle-7-3-bulbs-and-3-switches/)

我问了一些简单的问题,因为我很累。我几乎正确回答了向我提出的每一个问题,面试官也非常乐于助人。如果我们被困在某个地方,他们会给出想法。

HR 电话:-等待了一个小时后,我接到了 HR 的电话,并被告知我在 2 轮技术轮中做得非常好,我不会再有任何其他轮次了。电话在一些正式的人力资源问题后结束。

一个小时后,我被告知我被选中了。总共有12名学生被选中。

笔记:-

  • 信心是关键。
  • 因为我正在实习,所以我准备面试的时间非常少。
  • 因此,我有效地利用了我的时间并努力彻底修改所有概念并练习编码。
  • 与面试官交谈有很大帮助。也不要在面试中虚张声势,这无济于事。认真对待简历。
  • 此外,在准备时与您的朋友讨论这将有很大帮助。

特别感谢我的 DSA 教授 K. Ramesh 先生让我了解编码的美妙,也感谢我的朋友们。感谢 GfG 在我的成功中发挥了关键作用。