您需要了解的热门编程面试问题

您是否正在为下一次编程面试做准备 ? 如果是这样,您就可以在目前需求量很大的领域中担任角色。 编程和编码对于在地球上的每个行业中产生积极的破坏至关重要。 这一切都始于像您这样的人,他们在幕后进行工作,以确保数字基础架构,操作系统和工业应用程序能够正常工作。

以下50多个编程面试问题应该使您对在编程领域可以期望与招聘经理或招聘人员进行的对话类型有所了解。 数据结构仅仅是个开始-可能还会询问您许多问题,包括有关使用编码语言解决逻辑问题的问题。

从序言中解脱出来,让我们开始吧-从任何专业人员都会熟悉的一些最基本的面试问题开始。

您会问什么样的问题?

1.文化与健康

您可能对求职面试并不陌生,或者对破冰船的“文化适应性”问题并不陌生。 在编程访谈中,可能会以更具体的方式询问该类别中的一些问题。 可能会要求您描述您的工作流程,讨论与团队合作的方法或评论您在编码项目期间的组织方式。 例如:

  • 您首先学习哪种编程语言?
  • 您目前有任何认证吗?
  • 您在此过程中必须掌握哪些相关技能?
  • 在复杂的项目中,通常如何保持组织?
  • 您如何使您对这个行业的技能和知识保持最新状态?

您现在已经熟悉了工作要求,因此关于您的教育背景和经验的问题不应该超出您的范围。 鉴于持续存在的编码和计算机科学人才短缺,全世界的技术公司都在重新评估其工作要求 。 如果您要在这样的公司进行面试,那么您将被询问,然后必须证明自己愿意自我创业并积极参与持续学习以保持技能相关性。

但是,每个编程受访者都必须了解一些基本知识。 为了帮助您做好准备,我们的编程面试问题被分为10个相当广泛的类别。 可能并非所有人都与您所追求的职位相关。

是否会问所有这些问题? 绝对不! 但是,在您知道作为程序员的职业是否适合您之前,您需要知道您将负责的主题的广度。 让我们潜入。

2.一般编程和设计问题

不了解这些编码基础知识的编程求职者将不会得到回调。 连续查看您可以回答多少个这些问题而不会放慢速度。

什么是变量?

没有变量,就没有程序。 变量是基于整体条件和程序正在执行的“工作”而在程序内更改的值。 变量是程序中存储或“声明”的值,代表程序的工作数据集。 变量=数据集+算法。

什么是继承?

继承是面向对象编程的基础。 它提供了扩展现有代码以满足新要求的能力,而无需从头开始重写代码。

什么是多态性?

多态性允许编程中的新对象采用现有对象的属性。 提供继承特性的对象称为“基类”或“超类”。

这是程序根据对象的类型或类对对象进行不同处理的能力。 想象一辆汽车与一辆坦克。 多态将是一个为它们共有的系统提供蓝图的系统,并且可以在两种类型的车辆上运行。

什么是指针?

指针包含其他值的内存地址。 与处理指针引用的数据相比,处理指针可以节省时间。 这可能是编写可操纵数据的程序的有效方法。

指针通常在C语言中使用,而在Java中则很少使用。

命名四种类型的存储类。

注册,静态,外部和自动。

  • 寄存器:这些是保存在中央处理单元寄存器中的存储类。
  • 静态:这是一个存储类,其中的变量不变。 它是在编程任务的开始阶段声明的。
  • 外部:一种硬件局部存储类型,例如设备驱动程序。 它们对编译器说:“如果再次需要此变量,请从外部设备读取它以获取最新值。”
  • 自动:一种存储类,其中的块或函数定义了局部变量。

什么是封装?

这是面向对象设计中最重要的概念之一。 它涉及将一组带有一组指令的类捆绑在一起。 在封装中,对象不仅包括其数据,还包括可以使该数据变异的功能。 封装可用于隐藏数据的性质,同时仍促进交互。

命名七种数据类型。

浮点数,整数,字符串,浮点数,实数,字符和布尔值。

命名五种数据结构类型。

链接列表,文件,堆栈,队列,树和图。

特定函数或变量的“声明”和“定义”之间有什么区别?

声明涉及标识符的类型和功能,并描述链接器引用它所需要的内容。 定义描述了编译器与标识符进行交互所需执行的操作。 有时声明提供初始值,有时定义提供值。

解释器和编译器有什么区别?

解释器直接执行命令,而编译器将这些命令(程序)从源代码转换为机器代码。 编译后的程序比解释性语言运行得更快,并且可以大规模使用。

  • 解释性语言示例:基本,Korn Shell,Ruby,Python
  • 编译器语言示例:Java,C ++

面向对象设计的功能是什么?

封装,多态性,继承和抽象。

什么是实时操作系统?

实时操作系统(OS)在数据可用时对其进行处理,而无需缓冲时间。

  • 实时OS的示例:实时控制工厂机械。 不一定是即时的,但基本上是按需的。
  • 非实时操作系统的示例:Windows和macOS。 响应时间并不重要。

准备继续前进吗? 从这里,您可以期望公司的招聘经理开始挖掘编码员需要的一些更专业的知识。

3.算法

算法通常是编码专业人员职业的基础。 您知道它们是推动数据收集,分类和最终在其他过程中变得有用的方法。 您可以预期与算法相关的问题,例如:

命名四种排序算法?

快速排序,插入排序,选择排序和气泡排序。

桶分类算法如何工作?

存储桶排序会创建一个空数组,并将每个对象放在存储桶中。 每个存储桶按顺序排序,然后每个对象返回原始数组。

基数排序算法如何工作?

基数排序允许您使用整数键而不是值来排列数据。 每个数据均按具有相同值和重要位置的数字分组。 换句话说,基数排序对于根据数字分别对它们进行排序很有用。 数字中的每个数字都是一个键。 它可以使用计数排序或存储桶排序。

什么是计数排序算法,什么时候有用?

计数排序算法对每个数据点的实例进行计数并相应地安排它们。 它在唯一值相对较少的数组中最有用。 它可以用于查找最常用的值,最常用的值,唯一值等。

4.数据库

数据库的编码可能涉及使用诸如Python,Java和C#之类的语言来构建和实现基于Web,基于云的移动应用程序,个人和组织可以使用这些应用程序与信息集进行交互。 并非每个编程职业都需要数据库管理系统方面的专业知识,但是熟悉一些主要概念并没有什么坏处。

定义单词“数据库”。 数据库管理系统提供什么样的交互?

数据库是包含数据并允许其使用,访问,更新和处理的任何电子系统。

数据库管理系统(DBMS)允许管理员,应用程序,软件和最终用户与存储在数据库中的数据进行交互。

数据库管理系统如何改善基于文件的系统的功能?

用户可以直接与基于文件的系统进行交互,而不必同时进行。 基于数据的管理在文件系统和正在使用的应用程序编程接口(API)之间提供中介,并且更有可能一次为多个用户提供便利。 但是,这些用户不能同时更改相同的数据。

数据库技术的三种主要类型是什么?

  • 结构/数据 :在编写需要存储,操作或读取数据的程序时很有用-但在不需要完整数据库实现的地方。
  • 导航:导航数据库与层次模型或网络模型关联。 这描述了一个数据库,其中逐个对象被迭代处理。
  • SQL /关系型:代表“结构化查询语言”。 用于检索或更新数据库中的信息。

归一化是用来做什么的?

规范化重组数据以消除冗余并节省磁盘空间。 通过创建多个表并概述它们之间的关系来做到这一点。

DDL和DML有什么区别?

DDL代表“数据定义语言”。 它指定数据库的结构。 DML代表“数据操作语言”,是指如何从所述数据库中检索或修改数据。

为什么需要数据库分区?

分区通过创建单独的,更稳定和更可用的单独的文件系统,提高了效率和数据可用性,并最大程度地减少了数据丢失。 分区允许并行处理或分离需要或多或少频繁访问的分区。

什么是实体-什么是实体集?

实体是离散的对象或数据点,例如人或地点。 实体集对相同类型的实体进行分组。

5.数组

在Java中,实体是类的实例。 例如:Class =“汽车”。 实例/实体=“凯迪拉克CTS”。

数组是编程中最常见的数据结构,也是确定如何访问信息的重要组成部分。 如果您将变量作为基本构建块,则下一步将是数组。

用数组解决问题。

让我们看看您如何知道如何使用数组以及如何解决一些基本问题:

  • 您将如何检查数组是否仅包含数字?
  • 您将如何查找给定数组的所有排列?
  • 在整数数组(1-100)中查找缺失的数字。
  • 在整数数组中,找到重复的数字。
  • 如何在包含多个重复项的数组中查找重复数?
  • 给定一个未排序的整数数组,请找到最大值和最小值。
  • 查找数组中的每对整数,这些整数加在一起等于给定值。

6.树木

以下三个类别(树,图形和列表)在某些基本方式上是相似的,但它们仍需要一些专业知识,您可能需要在面试中调用这些知识。 您对线性和非线性数据结构的了解程度如何?

在Java中,树包含描述如何操作列表的包。

什么是二叉搜索树,它的作用是什么?

二叉树是具有两个“子级”的数据结构,有助于研究分叉的数据。

命名五种树。

二叉树,二叉搜索树,AVL树,B树,B +树。

用树解决问题:

  • 您将如何镜像二叉树?
  • 如何计算给定二叉树中的叶节点数量?
  • 您将如何检查树是否平衡?

7.图

图是由多个节点和边或“顶点”组成的非线性数据结构。 图形可以表示网络体系结构,并且可以部署来解决实际问题。 广义地讲,它们描述了有向或无向的关系。

什么是图的深度优先搜索或遍历?

深度优先搜索(DFS)通过从根节点开始并在回溯之前尽可能地跟随每个分支来搜索图和树。 DFS可以用于检测图中的循环,查找路径以及定位牢固连接的组件。

图的广度优先遍历是什么?

广度优先遍历(BFS)首先检查兄弟节点,然后检查子节点。 BFS可以用于对等网络中以查找最短路径,甚至可以用于搜索引擎中的网络爬虫。

用图解决问题:

给定一个特定的图,您将如何确定它是否循环?

8.清单

列表是可以无序或有序的数据结构。 列表可以包含对象,字符串和整数。 可以列出任何类型的数据。 每条数据都有一个指向列表中下一个数据的指针。

用列表解决问题:

  • 如何检查给定的链表是否包含循环? 您如何找到循环的起点?
  • 您如何反向链接列表?
  • 您如何找到单链表的长度?
  • 如何删除未排序链表中的重复节点?
  • 使用Stack,如何找到两个链表的总和?

9.联网

网络并不是遥不可及的新概念。 但是,随着我们越来越多的技术和行业相互连接,以及5G网络和“物联网”扩展到包含数十亿个设备,对于求职者重新熟悉网络基础知识,这不会感到伤害。

LAN,WAN和VLAN有什么区别?

LAN代表“局域网”,表示在同一位置的设备的高速网络。

WAN代表“广域网”,它描述的是不受地理位置限制或拨出到另一个位置的网络。 WAN可以是公共的或私有的。

VLAN代表“虚拟LAN”(LAN中的LAN),它限制了参与者的数量,但又细分为允许已知实体之间的通信。

OSI和TCP / IP模型之间有什么区别?

OSI使用自下而上的方法进行数据传输,而TCP / IP使用自上而下的数据传输。 OSI有七层,而TCP / IP只有四层。 OSI不是有形的,而TCP / IP是有形的。

什么是DDoS?

DDoS代表“分布式拒绝服务”。 这是一种攻击,外部系统无法控制目标系统的带宽。 旨在使目标服务不可用。

它通常被称为黑客试图窃取信息的手段,但这并不完全准确。

定义QoS?

QoS代表“服务质量”。 这是一组技术,可减少网络延迟和抖动,并通过限制丢失的数据包数量来提高服务可靠性。 除其他外,它为数据传输设置了优先级。

QoS比以往任何时候都重要。 如果程序不需要即时访问网络,则它会收到较低的QoS分数。 要求与其他数据库的低延迟的程序将获得更高的QoS分数。

10.使用编程解决问题

一些编程访谈将建立在某种实际的,动手的或解决问题的演示上,以了解您可以如何即兴地将主要和次要编程概念融合在一起。 请记住,对于任何类型的程序员而言,最重要的基础技能是逻辑思考的能力。

这是涉及随机选择的问题的示例:

如果您有52个数字组成的数组,例如一副纸牌,则很容易随机选择一个。 您的任务是生成一个介于1到52之间的数字,并将其用作数组的索引。 换句话说,得出一种系统,从该系统中,从号码或卡组中随机选择所有号码或卡的可能性均等的号码或卡。

这是一个更困难的变化:

想象一下,您既看不到整个集,也无法存储它。 换句话说,您不会被告知会有多少总数,并且一次只显示一个数字。 您无法存储显示的所有数字,只有看到了集合的最终数字时才会被告知。

如果允许您最多存储两个数字,您是否可以在一次被告知流完成后立即从该一次集合或流中以等概率方式选择一个随机数作为响应?

解决此问题的方法如下:

您只需要存储两个数字:到目前为止看到的数字总数,以及如果要在该点结束的情况下从数字流中选择的当前候选响应。

当显示第一个数字时,您将数到一个。 因此,您的候选答案必须是看到的第一个也是唯一的数字-几率是一个。 如果显示第二个数字,则该数字将成为您的新候选响应,概率为二分之一。 同样,第三个数字将以三分之一的概率成为新的候选响应,依此类推。

因此,当看到每个新数字时,请生成一个随机数,该数字与该点看到的数据点数(N)之间。 如果您的随机数等于N,则保留刚显示的数字作为新的可能答案。 否则,请通过相同的逻辑保留先前保存的答案。

每当您看到新的数据点时,便会执行此选择更新。 当告知您流完成时,保存的值是正确的响应,可以从所有看到的数字中等选择。 不管流停止之前有多少,概率都是N中的1。

以下是一些其他需要解决的问题:

  • 编写算法以在选定的文本中找到给定单词的每个实例。
  • 编写程序以在给定范围内生成随机数。
  • 如何检查字符串是否仅包含数字?
  • 给定两个字符串,找到将字符串1转换为字符串2所需的最小更改数。
  • 如何计算给定字符串中的元音和辅音数量?
  • 给定一个网格,其中每个正方形都有一个数值,您将如何编码一种解决方案,以找到从网格的一侧到另一侧的最低价值的路线?

为编程面试做好准备了吗?

希望您准备好接受面试,找到您梦dream以求的编程工作。 如果没有,您会惊讶于在线提供的一些指南,教程,学习资料和完整的编码课程的质量-包括Codeforces,SphereOnline,HackerRank和其他地方。

考虑到机器人技术,机器学习,无线网络等方面的创新的重要性和需求,您需要进入这个激动人心的领域,以及世界上所有的动力。

希望这一对主要编程概念的广泛概述能激发您对这一激动人心的职业生涯的兴趣。 你在等什么?

翻译自: https://www.javacodegeeks.com/2019/05/programming-interview-questions-need-know.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值