Java面试问题:如何破解前15个问题

采访2月27日更新,二千零一十四

“Java异常处理中抛出和抛出的区别是什么?”

你盯着问你这个问题的人想,我应该知道!但在那一刻,你记不清了,然后因为没有为面试做准备而在精神上踢自己。

好东西,这只是一个假想,你肯定能够回答这个问题,当时间到来的时候更多!

典型的雇佣Java程序员的公司正在寻找一个能在入门级Java课程中传授的高级程序员。面试官问的问题不一定是难缠的问题,但这是为了引出一个候选人对主题的更深层次的了解。我们建议你彻底学习Java在接受采访之前,这篇文章将给你一个特别的窥视Java面试问题15大问题在面试中可能会遇到这样的问题。

让我们从简单的问题开始,到稍微难一点的问题。

1。什么是JVM?为什么Java被称为“平台无关编程语言”?

HTMLD项目JVM或者Java虚拟机,是一个接受并执行“字节码”的解释程序。

Java被称为“平台无关语言”,因为它主要工作在“编译一次”的概念上。到处跑”。下面是在Java中建立平台独立性的一个循序渐进的步骤:

  • Java编译器输出名为字节码的不可执行代码。
  • 字节码是一种高度优化的计算机指令集,可以由Java虚拟机(JVM)执行。
  • 转换成字节码使程序更容易在各种平台上执行,因为我们所需要的只是为特定平台设计的一个JVM。
  • 不同平台的JVM配置可能不同,他们都能理解同一组字节码,从而使Java程序“与平台无关”。

2。JDK和JRE有什么区别?

当被问到典型Java面试问题大多数启动Java开发人员与JDK和JRE混淆。最终,他们决定“任何事都可以做,只要我的程序运行!!'如果你想从编程中谋生谋生,那就不太对了。

“JDK”是Java开发工具包。即。,JDK是一组软件,可以用来开发基于Java的软件。

“JRE”是Java运行时环境。即。,JRE是Java虚拟机的一个实现,它实际上执行Java程序。

通常情况下,每个JDK包含一个(或多个)JRE以及各种开发工具,如Java源编译器,捆绑和部署工具,调试器,开发图书馆,等。

三。“static”关键字是什么意思?

我们相信你一定很熟悉Java基础.既然我们已经确定了最初的概念,让我们看看特定于语言的产品。

静态变量与一个类相关联,而不是与该类的对象相关联。例如:

public class explainStatic public static string name=“look i am a static variable”;}

我们还有另一个类,在其中我们打算访问刚刚定义的静态变量。

公共类应用程序公共静态void main(string[]args)system.out.println(explainstatic.name)

我们不创建类explainStatic的对象来访问静态变量。我们直接使用类名本身:explainstatic.name

4。Java支持的数据类型是什么?什么是自动装箱和拆箱?

这是Java面试中最常见也是最基本的问题之一。.当你被问到这件事时,你应该把它放在指尖上。Java支持的八种原始数据类型是:

  • Byte:8位有符号二的补整数。最小值为-128,最大值为127(含127)
  • Short:16位有符号二的补整数。最小值为-32768,最大值为32767(含)。
  • Int:32位有符号二的补整数。最小值为-2147483648,最大值为2147483647(含)
  • 长:64位有符号二的补整数。最小值为-9223372036854775808,最大值为9223372036854775807(含)
  • 浮标
  • 双重的

自封箱Java编译器带来了对原始类型(int)的自动转换。飘浮,double等)转换为它们的对象等价物或包装类型(integer,飘浮,double等)以便于编译。

拆箱:包装器类型自动转换为其原始等价物的过程称为取消装箱。

5。StringBuffer和String有什么区别?

字符串对象是不可变的。即,不能更改存储在字符串对象中的值。请考虑以下代码段:

string myString=“你好”;myString=myString+“客人;

当您打印mystring的内容时,输出将是“hello guest”。虽然我们使用了相同的对象(mystring),在内部,进程中创建了一个新对象。这是性能问题。

StringBuffer/StringBuilder对象是可变的:StringBuffer/StringBuilder对象是可变的;我们可以更改存储在对象中的值。这实际上意味着字符串操作追加如果使用StringBuffer/StringBuilder对象而不是字符串对象执行,则效率会更高。

string str=“对你的薪水感到满意。”'str+=“因为增量是一个神话”;StringBuffer strBuf=新建StringBuffer();附加(strbuf.append);系统.out.println(strbuf);

代码段的输出将是:对你的薪水感到满意。因为增量是一个神话。

6。Java中的函数重载和重载是什么?

这是一个非常重要的概念面向对象编程是每个Java程序员必须知道的。

骑马:重写是发生在从另一个类继承的类中的函数类型。覆盖功能“替换”从基类继承的函数,但这样做的方式是,即使它的类的一个实例通过多态性假装为不同的类型,也会被调用。可能有点过头了。下面的代码片段应该能更好地解释问题。

public class car public static void main(string[]args)car a=new car();汽车B=新法拉利();//车辆参考,但是法拉利的物体a.start();//运行汽车版start()b.start();//运行法拉利版本的start()class car public void start()system.out.println(“这是任何汽车的通用启动”);}}类法拉利扩展汽车public void start()system.out.println(“让我们启动法拉利,出去参加一个很棒的派对”);}

超载:重载是定义多个同名方法的操作,但参数不同。它与覆盖或多态性无关。Java中的函数可以通过两种机制重载理想:

  • 改变参数的数目。
  • 更改数据类型。
class calculatearea void area(int length)system.out.println(length*2);void area(int length,int width)system.out.println(length*width);public static void main(string args[])calculateArea obj=new calculateArea();obj.面积(10);//正方形的面积obj.面积(20,20);//矩形的面积

7。什么是建设者?Java中的构造函数重载和复制构造函数?

构造器构成OOP的基础,首先。

Constructor:拥有构造函数的唯一目的是创建类的实例。它们是在创建类的对象时调用的。以下是Java构造函数的一些显著特征:

  • 构造函数可以是公共的,私人的,或受到保护。
  • 如果在类中定义了带参数的构造函数,您不能再使用默认的无参数构造函数–必须编写一个。
  • 当类被实例化时,它们只被调用一次。
  • 它们必须与类本身具有相同的名称。
  • 它们不返回值,也不必指定关键字void。
  • 如果不为类创建构造函数,Java通过使用所谓的默认无参数构造函数帮助您。
public class boss string name;boss(string input)//这是构造函数name=“our boss也称为:”+输入;}public static void main(string args[])boss p1=新boss(“super man”);}

构造函数重载:传递不同数量和类型的变量作为参数,这些变量都是类的私有变量。示例代码段可以如下所示:

public class boss string name;boss(string input)//这是构造函数name=“our boss也称为:”+输入;}boss()name=“我们的老板是个好人。我们不叫他名字。”}public static void main(string args[])boss p1=新boss(“super man”);boss p2=新boss();}

复制构造函数:复制构造函数是一种类型的构造函数,它从同一类的另一个对象构造类的对象。复制构造函数接受对自己类的引用作为参数。

注意:Java不支持复制构造函数。然而,来自C/C++背景当被问及Java复制构造函数时,经常会感到困惑。

8。什么是Java异常处理?错误之间的区别是什么?未选中的异常和选中的异常?

任何不正常的事情都是例外。异常是Java中向调用方法指示发生异常情况的惯用方式。

在Java中,例外是对象。当你抛出异常时,你扔一个物体。你不能将任何对象作为异常抛出,但是-只有那些类从可丢弃的对象。throwable是整个类家族的基础类,在java.lang中声明,程序可以实例化并抛出。下面是一个分层异常类结构:

爪哇8

  • 未选中的异常继承自RuntimeException(从异常扩展)。JVM对runtimeexception的处理方式不同,因为应用程序代码不需要显式地处理它们。
  • 已检查异常从异常类继承。客户机代码必须处理Try-Catch子句中的已检查异常,或者必须抛出这些异常,才能让超级类捕获这些异常。由较低的类(子类)引发的选中异常会强制调用类(父类)上的协定来捕获或抛出它。
  • 错误(错误家族成员)通常是因为更严重的问题,例如内存不足错误(OOM)这可能不太容易处理。

在设计大型应用程序时,异常处理需要特别注意。所以我们建议你花点时间提高你的Java技能.

9。Java异常处理中的抛出和抛出有什么区别(记住这个Queston?)

投掷:throws子句列出了方法可能引发的异常类型,从而警告调用方法–“dude”。您需要处理我可能引发的异常列表。“除了类型为error或runtimeexception的异常,所有其他例外或其任何子类,必须在throws子句中声明,如果问题中的方法不实现try…catch块。因此,下一个顶级方法的责任是处理混乱。

public void mymethod()抛出prexception..,这意味着调用函数的超级函数应该能够处理此异常。public void callee()try mymethod();}catch(preexception ex)…处理异常…}

使用投掷:如果用户想要抛出显式异常,经常定制,我们用掷球。throw子句可以用于代码中任何您认为需要将特定异常抛出到调用方法的部分。

尝试如果(年龄>100)抛出新的AgeBarexception();//自定义异常else….catch(agebarexception ex)…处理异常…..}

10。字节流和字符流有什么区别?

每个程序员处理文件操作。要生成用户报告,通过邮件发送附件并从Java程序中溢出数据文件。在处理Java问题时,对文件操作的正确了解变得更为重要。

字节流:读写二进制数据,字节流被合并。程序使用字节流来执行字节输入和输出。

  • 执行input stream操作或outputstream操作通常意味着具有一个循环,该循环读取输入流并一次写入一个字节的输出流。
  • 您可以使用缓冲的I/O流来减少开销(每个这样的请求产生的开销通常会触发磁盘访问,网络活动,或者其他一些相对昂贵的操作)。

字符流:字符流使用字符而不是字节。在Java中,字符按照unicode(每个字符都允许一个唯一的数字)约定存储。在这种储藏室里,角色独立于平台,程序独立,语言独立。

11。什么是fileinputstream和fileoutputstream?用一个读写文件的例子来解释。

MySQL与MySQL文件输入流:它包含来自文件的输入字节并实现输入流。

文件输出流:它用于将数据写入文件并实现输出流。

public class filehandling public static void main(string[]args)throws ioexception fileinputstream inputstream=new fileinputstream(“input.txt”);fileoutputstream outputstream=new fileoutputstream(“output.txt”,true);字节[]缓冲区=新字节[1024];//对于较大的文件,我们指定一个缓冲区大小,该缓冲区大小为data int bytesread定义块大小;同时((bytesread=inputstream.read(buffer))!=-1)outputstream.write(缓冲区,0,ByTeRad);inputstream.close();outputstream.close();}

12。什么是文件阅读器和文件编写器?用一个读写文件的例子来解释。

FileReader:FileReader类使以字符流的形式读取文件的内容成为可能。它的工作原理与fileinputstream非常相似,除了fileinputstream读取字节,而文件阅读器读取字符。文件阅读器用于读取文本,换言之。根据字符编码方案,一个字符可能对应一个或多个字节。FileReader对象还允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用文件或blob对象指定要读取的文件或数据。

如何写得更好FileWriter:此类用于写入字符文件。文件编写器的创建不依赖于已存在的文件。创建对象时,文件编写器将在打开文件进行输出之前创建该文件。它的write()方法允许您将字符或字符串写入文件。文件编写器通常由更高级别的编写器对象(如BufferedWriter或PrintWriter)包装,提供更好的性能和更高的水平,更灵活的数据写入方法。

文件编写器的用法可以解释如下:

文件文件=新文件(“filewrite2.txt”);filewriter fw=新的filewriter(文件);对于(int i=0;i<10;i++)fw.write(“soham就是太棒了:”+i);FHUSEH();}

结合使用的FileWriter和FileReader的用法如下:

国际会计准则;filereader fread=new filereader(“xanadu.txt”);filewriter fwrite=new filewriter(“characteroutput.txt”);同时((c=fread.read())!=-1)写入(c);

13。两者有什么区别ArrayList和LinkedList?

请特别注意,这可能是最常见的面试问题之一。

我们不打算在这个问题中陈述每一个的属性。我们要寻找的是差异。两个独立的主要区域如下:

动态数组 链表
随机存取。 顺序访问。控件从第一个节点遍历以到达索引节点。
只能添加对象。 LinkedList是使用彼此链接的节点实现的。每个节点都包含上一个节点链接,下一个节点链接,和价值,其中包含实际数据

14。用示例说明迭代器和枚举接口之间的区别。

  • 迭代器允许调用方在迭代期间使用定义良好的语义从基础集合中移除元素。
  • 迭代器实际上添加了一个枚举没有的方法:remove()。

十四

鉴于,在枚举的情况下:

14B

15。“simpledateformat”的用法是什么?如何使用它以“yyyy/mm/dd hh:mm:ss”格式显示当前系统日期?

SimuleDead格式是Java开发人员广泛使用的一种具体的类,用于解析和格式化日期。这也用于将日期转换为字符串,反之亦然。

实际上,每个企业级Java应用程序总是使用SimuleDead格式来处理用户日期。当然,我们不希望Java面试者对语法有绝对的吸引力。但这门课的基本知识是强制性的。

public class currentsystemdate public static void main(string[]args)simpledateformat sysform=new simpledateformat(“yyyy/mm/dd hh:mm:ss”);日期curdate=新日期();system.out.println(sysform.format(curdate));}

复习你的Java知识的最好方法是打开日食编写大量的代码和示例程序。养成记住语法和应用最佳编码标准的习惯。

还有你的15强!祝你面试顺利。

您可能还喜欢:

1。一些高级Java编程

2。使用Eclipse的Java编程

三。Servlet和JSP:用Java创建Web应用程序

4。Android的Java要领