微软Java面试问题![]() 对于Java面试,微软询问关于数据结构、算法、概念等方面的问题。面试官从不问只与Java有关的问题。面试官也可以问问题数组,链表,堆栈,队列,字符串,模式,二叉树等。面试也可以问一些软件设计和测试方面的问题。 对于Java Microsoft面试,我们还应该对我们以前工作过的项目有适当的了解。您应该了解代码的流程、数据库如何与项目连接、表结构、主键、外键等。微软Java面试的前30个问题如下: 1)如何检查二叉树是否是BST ?为了检查二叉树是否为BST,我们只需检查左子节点是否小于当前节点。我们还检查右子节点是否大于当前节点。对于BST二叉树,左子结点的值应该更小,而右子结点的值应该更大。 2)如何在无限大小的排序数组中找到一个元素?为了从一个无限排序的数组中找到一个元素,我们将下标设置在位置100。如果我们需要找到的元素小于索引,则对最后100项执行二进制搜索。否则,我们将索引设置在位置200。我们将索引设置为100,直到项目更大。 3)编写一个程序,找到最长的子字符串,不重复字符。LongestSubString.java 输出: ![]() 4)如何反转大小为n的链表?链表的每个元素都存储下一个元素或节点的地址。为了反转链表,我们需要在链表的每个节点中存储上一个节点的地址。我们可以通过使用递归或迭代来反转链表。我们使用以下步骤来反转一个链表:
5)如何从字符串中删除重复项?有多种方法可以从字符串中删除重复项。我们可以通过简单地在字符数组中只添加不同的字符来做到这一点,使用BST,通过使用排序,通过使用哈希,通过使用unordered_map STL方法,用法indexOf ()方法。下面是一个从字符串中删除重复项的简单示例。 RemoveDuplicates.java 输出: ![]() 6)如何合并两个未排序的数组?有两种方法可以将两个未排序的数组以排序的方式合并。在第一种方法中,我们简单地连接两个数组,然后使用任何排序技术对它们进行排序。第二种方法,我们对两个数组排序,然后合并它们。让我们来理解合并两个未排序数组的第一种方法: MergeUnsortedArrays.java 输出: ![]() 7)我们有两个链表,基本上代表两个大数字。编写一个函数,查找两个数字的和并将其存储到第三个列表中。8)编写一个算法,从给定的中序和前序遍历构建树。
9)编写逻辑,从一个由连续字符组成的字符串中找到最长字符串的长度。FinalConsSubString.java 输出: ![]() 10)数组中除了两个元素外,每个元素都有一个副本。写逻辑找到这两个元素。我们可以很容易地从数组中找到这两个元素,使用for循环迭代它,并检查是否elementE是否显示在数组的其余元素中。如果未找到该元素,则简单地将其存储在另一个数组中并在屏幕上显示。 让我们实现上述理论的逻辑。 FindUniqueElements.java 输出: ![]() 11)编写逻辑,从三个数组中找到公共元素。FindCommonElements.java 输出: ![]() 12)像数据类型一样,我们可以对对象进行类型转换吗?解释一下。是的,我们可以在Java中进行类型转换和对象。基本上有两种方法来类型转换一个对象,即,向上转型而且向下类型转换。 向上转型一种类型的对象类型转换在哪子类对象类型转换为父类对象。它也被称为泛化或不断扩大的. 语法: 向下类型转换是另一种类型的对象类型转换,其中父类引用对象赋给子类对象。在Java中,向下类型转换在有限的场景下是可能的。 语法: 要了解关于对象类型转换的更多信息,点击这里. 13)我们如何判断一个链表是否包含一个循环或循环?我们使用两个指针,即,快而且慢在遍历链表时。慢指针和快指针在每次迭代中分别移动两个和一个节点。如果链表包含一个循环,两个指针将在迭代过程中在同一点相遇。 如果两个指针都指向null,则链表中不包含任何循环或循环。 14)在单例中什么是双重检查锁定?Singleton的双重检查锁定是一种确保在应用程序生命周期中只创建Singleton类的单个实例的方法。双重检查锁定意味着代码在使用和不使用锁的情况下对Singleton类的现有实例进行两次检查,以确保创建的Singleton实例不超过一个。 15)我们在Java中使用瞬态变量的场景是什么?瞬态变量是Java中一种特殊类型的变量,在反序列化过程中用默认值初始化。在序列化时,暂态变量的值未序列化。 为了防止任何对象被序列化,我们使用瞬态变量.方法可以轻松地创建瞬态变量瞬态关键字。 16)用Java解释volatile。在Java中,挥发性是用于解决变量可见性问题的关键字。这是使类线程安全的另一种方式。线程安全意味着多个线程可以毫无问题地使用一个方法或一个类实例。 17)我们可以重写Java中的私有方法吗?我们不能重写私有方法,因为我们不能像访问非私有方法那样访问私有方法。方法重写只能在子类中进行,我们不能访问子类中的私有方法。 18)用Java解释HashTable和HashMap的区别。
19)给出任意两个方法的名称,我们可以覆盖一个对象作为HashMap中的键。equals()和hashcode()是我们可以覆盖的两个方法,用于将对象用作HashMap中的键。 20)在Java中区分LinkedList和ArrayList。
|