(那些经常被遗忘的Java面试题.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(那些经常被遗忘的Java面试题

那些经常被遗忘的Java面试题 ——动力节点java 网上大大小小的面试题很多,有的同学面试会遇到比较偏的试题,所以动力节点的老师总结了几个经常被忽略的Java面试题来给大家,希望对大家有所帮助。   静态类和静态方法   如果一个类要被声明为static的,只有一种情况,就是静态内部类。   静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类,要想使用就必须实例化。概念上与静态变量、静态方法是不一样的,不要被“静态”两个字迷惑了(不要以为凡是静态的东西就不需要实例化就可以直接使用,静态内部类是有区别),而且只有静态内部类,而没有静态类(顶级类)的概念。   e.g.   publicclassSingleton{   privateSingleton(){}   privatestaticclassSingletonHolder{   privatefinalstaticSingletoninstance;   }   publicSingletongetInstance(){   returnSingletonHolder.instance;   }   }   静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。静态方法中也不能使用关键字this。   倒排索引   InvertedIndex   如果翻译成转置索引可能更好懂,它就相当于做了矩阵转置。   倒排索引是一种索引方法,被用来存储在全文有哪些信誉好的足球投注网站下某个单词在一个文档或者一组文档中的存储位置的映射。   反射   反射API中提供的动态代理也是非常强大的功能,可以原生实现AOP中的方法拦截功能。正如英文单词reflection的含义一样,使用反射API的时候就好像在看一个Java类在水中的倒影一样。知道了Java类的内部结构之后,就可以与它进行交互,包括创建新的对象和调用对象中的方法等。   这种交互方式与直接在源代码中使用的效果是相同的,但是又额外提供了运行时刻的灵活性。使用反射的一个最大的弊端是性能比较差。相同的操作,用反射API所需的时间大概比直接的使用要慢一两个数量级。不过现在的JVM实现中,反射操作的性能已经有了很大的提升。   Java反射API的第一个主要作用是获取程序在运行时刻的内部结构。   枚举类型   EnumeratedType   ? enum类型不支持public和protected修饰符的构造方法,因此构造函数一定要是private或friendly的。也正因为如此,所以枚举对象是无法在程序中通过直接调用其构造方法来初始化的。   ? 由于enum类型的值实际上是通过运行期构造出对象来表示的,所以在cluster环境下,每个虚拟机都会构造出一个同义的枚举对象。因而在做比较操作时候就需要注意,如果直接通过使用等号(‘==’)操作符,这些看似一样的枚举值一定不相等,因为这不是同一个对象实例。   多线程   Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:   1、可以避免由于Java的单继承特性而带来的局限;   2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;   3、适合多个相同程序代码的线程区处理同一资源的情况。   下面是通过实现Runnable接口实现的多线程程序,代码如下:   lassMyThreadimplementsRunnable{   privateintticket=5;   publicvoidrun(){   for(inti=0;i10;i++)   {   if(ticket0){   System.out.println(ticket=+ticket--);   }   }   }   }   publicclassRunnableDemo{   publicstaticvoidmain(String[]args){   MyThreadmy=newMyThread();   newThread(my).start();   newThread(my).start();   newThread(my).start();   }   }   大家都记住了吗

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档