`
tntxia
  • 浏览: 1507340 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

构造最全的Java面试题整理(基础篇二)

阅读更多

1. 下面哪些类可以被继承? 
        Java.lang.Thread (T)
   java.lang.Number (T)
   java.lang.Double (F)
   java.lang.Math  (F)
   java.lang.Void  (F)
   java.lang.Class  (F)
   java.lang.ClassLoader (T)

2. heapstack有什么区别
答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素

3. Java的接口和C++的虚类的相同和不同处
答:由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵 活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是 public static,所有方法默认情况下是public.一个类可以实现多个接口。

4. Java中的异常处理机制的简单原理和应用
答:JAVA 程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数 组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种 情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是 java.lang.Thowable的子类。

5. 垃圾回收的优点和原理。并考虑2种回收机制
答:Java 语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管 理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使 用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能 实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

6. 你所知道的集合类都有哪些?主要方法?
答:最常用的集合类是 List  Map List 的具体实现包括 ArrayList  Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 
Map 
提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作""""),其中每个键映射到一个值。

7. 描述一下JVM加载class文件的原理机制?
答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

8. 排序都有哪几种方法?请列举
答:  排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
/ /
使用快速排序方法对a[ 0 :n- 1 ]排序
a[ 0 :n- 1 ]中选择一个元素作为middle,该元素为支点
把余下的元素分割为两段left right,使得left中的元素都小于等于支点,而right 中的元素都大于等于支点
递归地使用快速排序方法对left 进行排序
递归地使用快速排序方法对right 进行排序
所得结果为left + middle + right

9. JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
答:Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它 子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是 通过5个关键词来实现的:trycatchthrowthrowsfinally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛 出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw
语句用来明确地抛出一个"异常"
throws
用来标明一个成员函数可能抛出的各种"异常"
Finally
为确保一段代码不管发生什么"异常"都被执行一段代码。
以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上 面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"try语句。

10. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
答:可以。必须只有一个类名与文件名相同。

11. java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

12. java中会存在内存泄漏吗,请简单描述。
答:会。自己实现堆载的数据结构时有可能会出现内存泄露,可参看effective java.

13. java中实现多态的机制是什么?
答:方法的重写Overriding和重载OverloadingJava多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

14. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收
答: GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。 通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。
15.
静态变量和实例变量的区别?
答:static i = 10; //常量   class A a;  a.i =10;//可变

16. 什么是java序列化,如何实现java序列化?
答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了 标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流) 象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存 其状态),要恢复的话则用输入流。

17. 是否可以从一个static方法内部发出对非static方法的调用?
答:不可以,如果其中包含对象的method();不能保证对象初始化.

18. clone()方法时,通常都有一行代码,是什么?
答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

19. JAVA中,如何跳出当前的多重嵌套循环?
答:break; return 方法。

20. ListMapSet三个接口,存取元素时,各有什么特点?
答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。

21. 什么时候用assert

答:

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为
false,那么系统会报告一个 AssertionError。它用于调试目的: assert(a > 0); //
throws an AssertionError if a <= 0 断言可以有两种形式: assert
Expression1 ; assert Expression1 : Expression2 ; Expression1
应该总是产生一个布尔值。 Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的String 消息。 断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记: javac
-source 1.4 Test.java 要在运行时启用断言,可使用 -enableassertions 或者 -ea
标记。 要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要在系统类中启用断言,可使用 -esa 或者 -dsa
标记。还可以在包的基础上启用或者禁用断言。可以在预计正常情况下不会到达的任何位置上放置断言。断言可以
用于验证传递给私有方
法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其
参数。不过,既可以在
公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

22. Java中不用的关键字有哪两个

答:goto和const

 

3
0
分享到:
评论

相关推荐

    2018年最全Java面试通关秘籍第四套

    1. **基础篇** - **面向对象**:Java是一种面向对象的语言,其三大特性是继承、封装和多态。 - **final, finally, finalize**:final用于声明不可变对象或方法;finally确保代码块在任何情况下都会执行;finalize...

    Java工程师面试题整理[社招篇] .docx

    ### Java工程师面试题知识点解析 #### 一、面向对象的特征 面向对象编程(OOP)是一种编程范式,它强调将程序结构组织成对象的集合,每个对象包含数据和操作这些数据的方法。Java作为一种典型的面向对象编程语言,...

    总结各大公司java面试题集

    Java 面试题集是求职者在准备面试时的重要参考资料,涵盖了从基础知识到高级概念的各种问题。这篇摘要主要关注Java的基础部分,包括作用域、集合类的区别、字符编码、多线程实现及同步机制,以及内部类的创建。 1. ...

    Java工程师面试题整理[社招篇]

    ### Java工程师面试题知识点解析 #### 一、面向对象的基本特征 面向对象编程(OOP)是一种编程范式,它强调将程序设计成由相互独立、互不影响的对象组成。在Java中,面向对象的四大特性包括:抽象、继承、封装、多态...

    最新Java面试题整理.doc

    ### 最新Java面试题整理知识点概览 #### 一、Java基础篇 ##### 1.1 基础功 **1.1.1 面向对象特征** 面向对象编程(Object-Oriented Programming, OOP)是现代软件开发中最常用的设计模式之一。Java作为一种典型...

    尚硅谷大厂面试题第二季周阳主讲整理笔记

    【Java基础】 Java语言是面向对象的...总结:本篇笔记涵盖了Java基础、集合框架、并发编程和设计模式等多个方面,是准备Java后端开发面试的重要参考资料。深入理解这些知识点,有助于在面试中展现出扎实的技术功底。

    【电子版】校招面试题库(附答案与解析)java篇-破解密码.pdf

    本资料详细整理了JavaSE、JavaEE、JavaWeb、JDBC、XML编程、计算机网络、操作系统、算法与数据结构、设计模式以及场景题等多个方面,旨在帮助求职者全面准备Java相关岗位的面试。 1. JavaSE部分 - Java基础:这...

    JAVA面试题集锦

    这篇文档"JAVA面试题集锦"可能包含了关于Java编程语言、框架、设计模式以及开发工具等多个方面的常见问题和解答。以下是一些可能涵盖的重要Java面试知识点: 1. **Java基础**: - 类与对象:理解面向对象编程的...

    张孝祥java就业面试题宝典

    【Java就业面试题宝典】是由知名Java教育专家张孝祥精心编纂的一份集大成的面试指南,旨在帮助求职者在Java程序员的就业面试中...这份由张孝祥整理的【Java就业面试题宝典】,无疑为求职者提供了全面且实用的参考资料。

    面试大全

    2. "构造最全的Java面试题整理(线程篇).txt" - 线程是并发编程的基础,对于Java开发者尤其重要。这个文件可能包含了大量的线程管理、同步机制、死锁、线程池、并发集合类如ConcurrentHashMap等的面试问题。理解这些...

    面试题完整版.pdf

    本篇文章对Java面试题进行整理,希望能够帮助求职者更好地准备面试。 首先,了解Java的基础知识是非常重要的。例如,lambda表达式是Java 8引入的新特性,它简化了集合的遍历操作。对于集合的遍历,lambda表达式使得...

    2019-Android-最新面试题

    这份2019-Android-最新面试题文档将涵盖以上所有Java和Android的核心知识点,帮助面试者在技术面试中展现出扎实的理论基础和实践经验。对于想要在Android开发领域提升自己的开发者来说,深入理解和实践这些知识点是...

    java超全面的面试总结

    Java作为世界上最受欢迎的编程语言之一,其面试题的深度和广度都相当广泛。这篇面试总结涵盖了Spring、MyBatis等关键框架的核心概念和技术,旨在帮助求职者充分准备技术面试。以下是一些重要的Java面试知识点: 1. ...

    Java后端技术面试汇总-2019

    #### 一、Java基础篇 **1.1 Java基础** - **面向对象的特征**:面向对象编程的核心特征包括继承、封装和多态。 - **继承**:允许一个类继承另一个类的属性和方法。 - **封装**:隐藏对象的具体实现细节,只对外...

    去年秋招整理了这份后端开发的核心面试题(偏Java),顺利拿到了腾讯offer,决定把它贡献出来

    【Java篇】 1. **Java基础知识** - `==` 和 `equals()` 与 `hashCode()` 的区别:`==` 比较的是对象的内存地址,而 `equals()` 默认比较对象的内容,对于非基本类型对象,需要重写 `equals()` 来实现自定义比较...

    java-programming-chapter-interview.zip_java programming

    这份资料的核心是“JAVA面试题集编程篇.pdf”,它整理了Java编程领域的常见问题和解答,为面试者提供了一个全面的复习平台。 一、基础概念与语法 1. Java的特性:理解Java的面向对象特性,包括封装、继承、多态。 2...

    Javascript忍者的秘密

    在提供的文件列表中,虽然“张孝祥正在整理Java就业面试题大全.doc”并非与JavaScript直接相关,但这个文档可能包含了关于Java面试的知识点,这同样对理解软件开发过程和职业发展有所裨益。了解Java面试常见问题,也...

Global site tag (gtag.js) - Google Analytics