加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java口试进程中10个最难答复的口试题(附谜底)

发布时间:2019-08-06 13:01:34 所属栏目:建站 来源:IT技术分享
导读:这是我网络的10个最棘手的Java口试题目列表。这些题目首要来自 Java 焦点部门 ,不涉及 Java EE 相干题目。你也许知道这些棘手的 Java 题目的谜底,可能认为这些不敷以挑衅你的 Java 常识,但这些题目都是轻易在各类 Java 口试中被问到的,并且包罗我的伴侣

1。Producer线程测试前提(缓冲区是是否完备)并确认必需守候(找到缓冲区已满)。

  1. Consumer线程在行使缓冲区中的元素后配置前提。
  2. Consumer线程挪用notify()要领; 这是闻所未闻的,由于Producer线程还没有守候。
  3. Producer线程挪用wait()要领并进入守候状态。

因此,因为竞争前提,我们也许会丢失关照,假如我们行使缓冲区或只行使一个元素,出产线程将永久守候,你的措施将挂起。“在java同步中守候notify和notifyall此刻让我们思量怎样办理这个隐藏的竞争前提?这个竞争前提通过行使Java提供的synchronized要害字和锁定来办理。为了挪用wait(),notify()或notifyAll(在Java中,我们必需得到对我们挪用要领的工具的锁定。因为Java中的wait()要领在守候之前开释锁定并在从wait()返回之前从头获取锁定要领,我们必需行使这个锁来确保搜查前提(缓冲区是否已满)和配置前提(从缓冲区获取元素)是原子的,这可以通过在Java中行使synchronized要领或块来实现。

我不确定这是否是口试官现实等候的,但这个我以为至少故意义,请更正我假如我错了,请汇报我们是否尚有其他令人佩服的来由挪用wait(),notify()或Java中的notifyAll要领。总结一下,我们用Java中的synchronized要领或synchronized块挪用Java中的wait(),notify()或notifyAll要领来停止:1)Java中的IllegalMonitorStateException,假如我们不挪用wait(),notify()可能来自同步上下文的notifyAll()要领。2)Java中wait和notify要领之间的任何隐藏竞争前提。

10.你能用Java包围静态要领吗?假如我在子类中建设沟通的要领是编译时错误?

不,你不能在Java中包围静态要领,但在子类中声明一个完全沟通的要领不是编译时错误,这称为潜匿在Java中的要领。

你不能包围Java中的静态要领,由于要领包围基于运行时的动态绑定,静态要领在编译时行使静态绑定举办绑定。固然可以在子类中声明一个具有沟通名称和要领署名的要领,看起来可以在Java中包围静态要领,但现实上这是要领潜匿。Java不会在运行时理会要领挪用,而且按照用于挪用静态要领的 Object 范例,将挪用响应的要领。这意味着假如你行使父类的范例来挪用静态要领,那么原始静态将从父类中挪用,另一方面假如你行使子类的范例来挪用静态要领,则会挪用来自子类的要领。简而言之,你无法在Java中包围静态要领。假如你行使像Eclipse或Netbeans这样的Java IDE,它们将表现告诫静态要领应该行使类名而不是行使工具来挪用,由于静态要领不能在Java中重写。

  1. /** 
  2.  * 
  3.  * Java program which demonstrate that we can not override static method in Java. 
  4.  * Had Static method can be overridden, with Super class type and sub class object 
  5.  * static method from sub class would be called in our example, which is not the case. 
  6.  */ 
  7. public class CanWeOverrideStaticMethod {   
  8.  public static void main(String args[]) { 
  9.  Screen scrn = new ColorScreen();   
  10.  //if we can override static , this should call method from Child class 
  11.  scrn.show(); //IDE will show warning, static method should be called from classname  
  12.  }  
  13. class Screen{  
  14.  /* 
  15.  * public static method which can not be overridden in Java 
  16.  */ 
  17.  public static void show(){ 
  18.  System.out.printf("Static method from parent class"); 
  19.  } 
  20. class ColorScreen extends Screen{ 
  21.  /* 
  22.  * static method of same name and method signature as existed in super 
  23.  * class, this is not method overriding instead this is called 
  24.  * method hiding in Java 
  25.  */ 
  26.  public static void show(){ 
  27.  System.err.println("Overridden static method in Child Class in Java"); 
  28.  } 

输出:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读