那些经常被遗忘Java面试题_第1页
那些经常被遗忘Java面试题_第2页
那些经常被遗忘Java面试题_第3页
那些经常被遗忘Java面试题_第4页
那些经常被遗忘Java面试题_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、那些经常被遗忘的Java面试题动力节点java网上大大小小的面试题很多,有的同学面试会遇到比较偏的试题,所以动力节点的老师总结了几个经常被忽略的Java面试题来给大家,希望对大家有所帮助。静态类和静态方法如果一个类要被声明为static的,只有一种情况,就是静态内部类。静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类,要想使用就必须实例化。概念上与静态变量、静态方法是不一样的,不要被“静态”两个字迷惑了(不要以为凡是静态的东西就不需要实例化就可以直接使用,静态内部类是有区别),而且只有静态内部类,而没有静态类(顶级类)的概念。e.

2、g.publicclassSingletonprivateSingleton()privatestaticclassSingletonHolderprivatefinalstaticSingletoninstance;publicSingletongetInstance()returnSingletonHolder.instance;静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。静态方法中也不能使用关键字this。倒排索引InvertedIndex如果翻译成转置索引可能更

3、好懂,它就相当于做了矩阵转置。倒排索引是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。反射反射API中提供的动态代理也是非常强大的功能,可以原生实现AOP中的方法拦截功能。正如英文单词reflection的含义一样,使用反射API的时候就好像在看一个Java类在水中的倒影一样。知道了Java类的内部结构之后,就可以与它进行交互,包括创建新的对象和调用对象中的方法等。这种交互方式与直接在源代码中使用的效果是相同的,但是又额外提供了运行时刻的灵活性。使用反射的一个最大的弊端是性能比较差。相同的操作,用反射API所需的时间大概比直接的使用要慢一两个数量级。不过

4、现在的JVM实现中,反射操作的性能已经有了很大的提升。Java反射API的第一个主要作用是获取程序在运行时刻的内部结构。枚举类型EnumeratedTypeenum类型不支持public和protected修饰符的构造方法,因此构造函数一定要是private或friendly的。也正因为如此,所以枚举对象是无法在程序中通过直接调用其构造方法来初始化的。由于enum类型的值实际上是通过运行期构造出对象来表示的,所以在cluster环境下,每个虚拟机都会构造出一个同义的枚举对象。因而在做比较操作时候就需要注意,如果直接通过使用等号(=)操作符,这些看似一样的枚举值一定不相等,因为这不是同一个对象实

5、例。多线程Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:1、可以避免由于Java的单继承特性而带来的局限;2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;3、适合多个相同程序代码的线程区处理同一资源的情况。下面是通过实现Runnable接口实现的多线程程序,代码如下:lassMyThreadimplementsRunnableprivateintticket=5;publicvoidrun()for(inti=0;i&

6、lt;10;i+)if(ticket>0)System.out.println("ticket="+ticket-);publicclassRunnableDemopublicstaticvoidmain(Stringargs)MyThreadmy=newMyThread();newThread(my).start();newThread(my).start();newThread(my).start();大家都记住了吗?如果在遇到类似的面试题就不要被难倒了哟,动宝儿祝大家面试顺利。网上大大小小的面试题很多,有的同学面试会遇到比较偏的试题,所以动力节点的老师总结了几个

7、经常被忽略的Java面试题来给大家,希望对大家有所帮助。静态类和静态方法如果一个类要被声明为static的,只有一种情况,就是静态内部类。静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类,要想使用就必须实例化。概念上与静态变量、静态方法是不一样的,不要被“静态”两个字迷惑了(不要以为凡是静态的东西就不需要实例化就可以直接使用,静态内部类是有区别),而且只有静态内部类,而没有静态类(顶级类)的概念。e.g.publicclassSingletonprivateSingleton()privatestaticclassSingleto

8、nHolderprivatefinalstaticSingletoninstance;publicSingletongetInstance()returnSingletonHolder.instance;静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。静态方法中也不能使用关键字this。倒排索引InvertedIndex如果翻译成转置索引可能更好懂,它就相当于做了矩阵转置。倒排索引是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。反射反

9、射API中提供的动态代理也是非常强大的功能,可以原生实现AOP中的方法拦截功能。正如英文单词reflection的含义一样,使用反射API的时候就好像在看一个Java类在水中的倒影一样。知道了Java类的内部结构之后,就可以与它进行交互,包括创建新的对象和调用对象中的方法等。这种交互方式与直接在源代码中使用的效果是相同的,但是又额外提供了运行时刻的灵活性。使用反射的一个最大的弊端是性能比较差。相同的操作,用反射API所需的时间大概比直接的使用要慢一两个数量级。不过现在的JVM实现中,反射操作的性能已经有了很大的提升。Java反射API的第一个主要作用是获取程序在运行时刻的内部结构。枚举类型En

10、umeratedTypeenum类型不支持public和protected修饰符的构造方法,因此构造函数一定要是private或friendly的。也正因为如此,所以枚举对象是无法在程序中通过直接调用其构造方法来初始化的。由于enum类型的值实际上是通过运行期构造出对象来表示的,所以在cluster环境下,每个虚拟机都会构造出一个同义的枚举对象。因而在做比较操作时候就需要注意,如果直接通过使用等号(=)操作符,这些看似一样的枚举值一定不相等,因为这不是同一个对象实例。多线程Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Ru

11、nnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:1、可以避免由于Java的单继承特性而带来的局限;2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;3、适合多个相同程序代码的线程区处理同一资源的情况。下面是通过实现Runnable接口实现的多线程程序,代码如下:lassMyThreadimplementsRunnableprivateintticket=5;publicvoidrun()for(inti=0;i<10;i+)if(ticket>0)System.out.println("ticket="+ticket-);publicclassRunnableDemopub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论