英伟达面试问题及答案
英伟达是领先的高端GPU制造商,主要开发集成电路。为求职者做好准备,练习回答英伟达最可能遇到的面试问题非常必要。因此,我们在此提供英伟达面试中最常被问到的问题。
什么是易变变量?
它是编程语言中的一个关键字。volatile关键字的目标是防止编译器优化可能以编译器无法预测的方式更改的对象。
因为它们的值可以随时被当前代码范围之外的代码更改,所以声明为volatile的对象不会被优化。
C++中的存储类是什么?
存储类可以用来描述变量或函数的特性。这些特性包括作用域、可见性和生命周期,使我们能够跟踪特定变量在程序运行期间的存在时间。C++中有五个存储类:auto、register、extern、static和mutable。
什么是多态性?什么是虚函数?
虚函数是一种特殊的函数,它返回基类和派生类之间函数的最派生版本。这种能力被称为多态性。虚函数的主要目的是运行时多态性。
什么是纯虚函数?
纯虚函数是在基类中没有定义的函数。它的定义只在派生类中。
递归函数调用中发生了什么?缺点是什么?
递归函数使用“调用栈”。程序调用的函数放在调用栈的顶部。这类似于一个书架。每个元素一次添加一个。然后,每当您准备好移除某些内容时,您总是移除顶部的项目。
递归重复调用函数,因此,方法调用的开销很大,这在处理器时间和内存空间方面是昂贵的。
函数指针及其用途
一个存储函数地址的变量,该函数稍后可以通过该函数指针调用,称为函数指针。函数指针指向代码,而不是数据。通常,函数指针存储可执行代码的开头。
C++中的许多面向对象编程范例都是使用C语言中的函数指针实现的,例如多态性和虚函数。
堆内存和栈内存的区别是什么?
以下是堆内存和栈内存的区别。
栈内存只被一个执行线程使用,而所有应用程序组件都使用堆内存。
对象的引用总是存储在栈内存和堆空间中,无论何时创建。栈内存中只有局部基本变量和对堆空间中对象的引用变量。
其他线程无法访问栈内存,而存储在堆中的对象可以全局访问。
解释二叉树遍历中先序、后序和中序的用例。
先序树遍历用于创建树的副本。后序用于删除树,中序按递减顺序给出节点。
什么是进程、线程?什么是多线程?
程序在其执行模式下称为进程。线程是在进程上下文中创建的独立执行单元。当多个线程同时在一个进程中执行时,我们称之为多线程。
什么是套接字、管道和进程间通信?
管道是两个或多个连接或互连进程之间的一种通信方式。它可能是子进程和父进程之间的通信,也可能在一个进程内进行。一个进程写入管道,另一个进程从管道读取以进行通信。
套接字提供两个进程之间的双向点对点通信。名称可以绑定到套接字,套接字是通信端点。一个或多个进程可以连接到一个套接字。
两个或多个进程相互通信的情况称为“进程间通信”。这些进程可以位于同一台计算机上,也可以位于通过网络连接的不同计算机上。
什么是内核,列出其职责?
内核是操作系统的核心。操作系统的内核处理所有操作。内核负责设备管理、资源管理、内存管理、I/O通信和中断处理。
什么是中断?
中断是由计算机程序或连接到它的设备发出的信号。操作系统 (OS) 必须停止以决定下一步该做什么。中断会暂时暂停或终止服务或当前进程。
你会使用什么门来制作一个全加器?
制作全加器需要2个半加器和一个或门。
什么是CPU流水线?它是如何工作的?
通过流水线从处理器累积指令的过程称为CPU流水线。它使得能够系统地存储和执行指令。
通过将传入的指令分成一系列由不同处理器单元执行的顺序步骤,并并行处理指令的不同部分,流水线试图使处理器的每个部分都忙于某些指令。
HTTP GET和HTTP POST的主要区别是什么?
在GET方法中,我们不能发送大量数据;而是发送有限的数据,因为请求参数附加到URL。在POST方法中,可以发送大量数据,因为请求参数附加到正文。POST方法比GET方法更安全。
除了这些问题外,英伟达还会问人力资源、谜题和编码方面的问题。