程序员面试问题的10大Java程序和编码问题的答案

392 阅读12分钟

Java编码面试问题的答案
Java编码面试题大多是一些编程练习,要求在任何核心Java或J2EE面试中在有限的时间内用java编程语言解决。无论你是有2年经验还是4年经验, 你申请的Java 编程工作 总会有一些编码面试问题 。事实上,与Java编码有关的问题在Java面试中越来越受欢迎,原因有二:首先,与回答基于事实的问题相比,破解Java编码面试问题很难,比如为什么Java中的字符串是不可变的为什么Java中的main是静态的

第二,在Java面试中流行编码问题的原因是需要优秀的开发人员在项目中做大量的编码工作,而不是做一些维护工作。

由于Java是任何服务器端应用程序的前线语言,随着业务流程的复杂性和对性能的需求不断增加,很明显,对Java程序员的编码技能要求与日俱增,这实际上意味着Java编码问题是任何核心Java面试问题列表中的首位。

这些编码面试问题是从各种Java编程面试中收集的,来自朋友和同事,可以作为一个很好的起点,在出现在任何Java面试之前刷新你的编码技能。这些基础的Java程序和逻辑问题也可以成为学习编程和提高你在Java中解决问题的能力的良好资源。

10个Java编程和编码面试问题的答案

以下是我列出的10个Java编码面试问题和答案,在参加任何Java面试之前,这些问题都是很好的准备。正如我所说的,Java编码问题主要是基于编程、逻辑分析和解决问题的技能,是任何艰难的Java面试问题列表中的佼佼者,所以最好能在第一时间把它做对。

无论如何,你可能会自己解决这些Java编码问题并找到答案,但如果你被卡住了,做一个谷歌,你可以得到许多替代方法来解决这些问题。有时知道不止一种方法来解决任何编程问题或Java编码问题也有助于给面试官留下深刻印象。这个列表主要包含面试时问的基本程序。

1.写一个Java程序来替换字符串中的某些字符,如
public String replace(String str, char ch)
这是一个棘手的Java编码面试问题,在我朋友最近参加的一次笔试中被问到。这个Java编码问题可以通过多种方式解决,例如使用charAt()或substring()方法,但任何方法都会带来一些后续问题,例如,你可能被要求写两个版本来解决这个编码练习,一个使用递归,另一个使用迭代。

他们还可能要求你为这个函数写JUnit测试,即处理null、空字符串等。顺便说一下,这个编程问题在技术面试中很常见,不仅是Java,还有C、C++或Scala,但了解API肯定有助于快速产生更好的解决方案。

2.写一个Java程序来打印100以内的斐波那契数列?
这是在Java编程语言中受欢迎的编码面试问题之一。尽管写斐波那契数列的程序是基本的Java程序之一,但并不是每个Java开发者都能在面试中答对。

同样的,面试可以要求通过使用递归或迭代来解决这个编程面试问题。这道Java编程题也考验你解决问题的能力,如果你能想出一个独创的解决方案,那可能会有帮助。请看这里,在Java中完整的斐波那契数列的代码例子

3.FizzBuzz问题:编写一个Java程序,打印出1到50的数字。但对于3的倍数打印"Fizz "而不是数字,对于5的倍数打印 "Buzz"。对于3和5的倍数,打印"FizzBuzz"

这也是经典的编程问题之一,在任何Java编程或技术面试中都会被问到。这个问题是非常基本的,但对于不会编码的程序员来说是非常棘手的,这就是为什么它被用来区分会编码和不会编码的程序员。

这里有一个解决FizzBuzz 问题的Java程序样本。

public class FizzBuzzTest{
 
    public static void main(String args\[\]){
    
        for(int i = 1; i <= 50; i++) {
            if(i % (3\*5) == 0) System.out.println("FizzBuzz");
            else if(i % 5 == 0) System.out.println("Buzz");
            else if(i % 3 == 0) System.out.println("Fizz");
            else System.out.println(i);
        } 
    } 

}

4.用Java写一个比较器,根据两个员工的姓名、部门和年龄进行比较?
这是一个纯粹的基于Java的编码练习。为了解决这个Java编码或编程面试问题,你需要知道什么是Java中的比较器,以及如何使用Java中的比较方法对对象进行排序。排序是技术面试中最有逻辑性和实用性的问题之一,对Java对象进行排序的能力是在Java中编码所必须的。

本文通过解释如何在Java中使用Comparable和Comparator对对象进行排序,帮助你解决这个Java编码问题。请记住,比较 器有compareTo()方法,用于根据对象的自然顺序进行排序,例如,数字的数字顺序和字符串的字母顺序,而比较器 可以定义任何任意的排序方式。

一个好的后续问题也可能是Java中比较器 和可比较 器 的区别,所以要做好准备。你也可以看看这些Java面试课程,以便更好地准备,它包括所有重要的主题和问题,为你的下一次Java面试做快速准备。

5.在Java中设计一个自动售货机,根据四种面值的硬币来售卖物品,如果没有物品则退回硬币。 (解决方案)
这种Java编码面试题出现在笔试中,我相信如果你答对了,你就几乎通过了面试。这类Java解决问题的问题并不容易,你需要在2到3个小时内设计、开发和编写JUnit测试,只有优秀的Java开发人员,有实际的编码经验,才能解决这种Java编程问题。

对你有帮助的是,即使在面试前也要不断练习你的编码技能。

请看这个Java的编程练习,让你自己去做。我个人喜欢问一些编程问题,以测试你的面向对象的设计技能,如设计ATM机,设计停车场或实现交通信号控制器的逻辑。

Vending Machine Java Design Program

6.写一个Java程序来检查一个数字是否是阿姆斯特朗?
另一个流行的Java逻辑编码面试题,它是基于编程逻辑的。为了回答这个编程问题,你需要知道什么是阿姆斯特朗数字,但这不是一个问题,因为问题可能指定,甚至提供输入和输出的样本。

要证明的关键是检查一个数字是否是阿姆斯特朗 的逻辑。在大多数情况下,你不能使用由逻辑定义的实用方法,你需要通过使用基本的运算符和方法自己产生逻辑。

顺便说一下,这也是基本的编程问题之一,我已经提供了一个解决方案。我建议看到这个在Java中寻找Armstrong Number的Java程序 来回答这个编码问题

7.写一个Java程序来防止Java中的死锁?
一些编程或编码的面试问题总是基于Java编程语言的基本特征,如多线程、同步 等。由于编写防止死锁的代码对Java开发人员来说非常重要,因此需要并发结构知识的编程问题成为Java面试中的热门编码问题。

如果四个条件是真的,如互斥、无等待、循环等待和无抢占,就会发生死锁。如果你能打破这些条件中的任何一个,你就能创建出防死锁的Java程序。

避免死锁的一个简单方法是对锁的获取和释放施加一个顺序。你可以进一步查看如何在Java中修复死锁,以回答这个Java编程问题与Java编码。

Top 10 Java Programs & Coding Interview Questions Answers for programmers

8.在不使用API函数的情况下编写Java程序来反转字符串?
另一个经典的Java编程或编码练习,大多在2至5年的Java面试中被问及。尽管很简单,但要回答这个编码问题并不容易,特别是如果你不经常编码。最好事先准备好这个编程问题,以避免在面试时出现任何尴尬。我建议你看看这篇文章,它显示了如何在Java中使用递归来反转字符串

9.写一个Java程序来寻找一个数字是否是素数?(解决方案)
还有一个基本的Java程序,它进入了面试环节。这是最简单的编码问题之一,也是一个非常受欢迎的Java编程练习。这类逻辑问题的魅力在于,它们可以真正测试出编码员、程序员或开发人员的基本编程技能。不仅仅是解决问题,你还可以检查他们的编码风格和思维过程。

10.如何在Java中不使用第三个变量来交换两个数字?
这个Java程序可能只需要四行代码,但它是值得准备的。大多数程序员在写这个程序的解决方案时都会犯同样的错误,例如,整数溢出,他们往往忘记整数在超过极限时可以溢出,而这个极限并不大。回答这些编程问题的可靠方法是使用XOR技巧来交换数字,正如那篇博文中提到的。

11.创建一个Java程序,在Java中一次性找到链表的中间节点?
任何编程问题的清单如果没有来自链表、数组和字符串的问题都是不完整的,这三者构成了Java面试中的大部分编码问题。解决这个问题的诀窍是要记住,链表的最后一个节点指向null,你可以用速度来交换内存。

Java programs from Interviews

有时,你的方法对达成双指针的解决方案真的很重要,通过采取上述的合理步骤,你可以听起来更聪明,是一个问题解决者,而且是真正的。这个编程问题的快速解决方案可以在这里找到。

12.如何在Java中找到一个链表是否包含一个周期? (解决方案)
另一个编程问题是基于一个链表的。顺便说一下,这个编码问题比前面的问题要棘手一些,但这也可以用两个指针的方法来解决。如果链表有一个循环,那么快指针将抓住慢指针或者指向空。

13.在Java中使用wait、notify和notifyAll方法实现Producer Consumer设计模式?
与死锁相关的编程面试问题类似,这也是用来测试程序员在Java中编写无错误的并发程序的能力。如果你以前没有使用过wait和notify,这些编码问题可能会很难,你会在不同的方面混淆自己,比如要检查哪个条件,应该在哪个锁上同步,等等。我建议按照这里 来回答这个基于多线程的编程面试问题。

14.用Java写一个程序来计算一个数字的阶乘?
这道Java编码面试题也是基于初学者的基本Java程序清单。像往常一样,你最好记住如何计算阶乘以及如何使用循环和递归方法调用进行编码解决。关于这个编程问题的完整代码解决方案,请参阅计算阶乘的Java程序

15.如何用Java设计一个交易头寸聚合器或投资组合管理软件?

这是另一个有趣的面向对象的设计问题,是对Java程序的要求。在这个程序中,你需要创建一个核心的Java应用程序,它可以实时计算交易头寸。

实时交易将被送入系统,包括买入和卖出,它需要实时更新仓位。仓位是指某一账户持有某家公司的多少股份。你需要同时支持多个账户和多个交易符号。你可以自己尝试这个问题,但如果你被卡住了,你可以看看我的解决方案,在Java中创建贸易聚合器,一步一步的指导。

以上是一些Java编码面试问题 和答案,这些问题经常出现在Java编程面试中。我在我的博客文章中加入了一些链接,讨论了这些Java编码问题的答案,但你也可以通过谷歌自己找到答案。请分享你在Java面试中被问到的编程、逻辑、解决问题或编码相关的问题?

其他Java和编码面试问题来自Java67博客

感谢你阅读本文,到目前为止。如果你喜欢这些Java编程编码面试问题,那么请与你的朋友和同事分享它们。如果您有任何问题或建议,请留言。