41heap stack 有什么区别

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

是栈的一个组成元素。

补充网上:

heap是堆,stack是栈。

42Java 的接口和 C++的虚类的相同和不同处

答:由于 Java 不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现

有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当

一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都

是 public static,所有方法默认情况下是public.一个类可以实现多个接口。

补充网上:

C++虚类相当于java中的抽象类,与接口的不同处是:

<1>.一个子类只能继承一个抽象类(虚类),但能实现多个接口

<2>.一个抽象类可以有构造方法,接口没有构造方法

<3>.一个抽象类中的方法不一定是抽象方法,即其中的方法可以有实现(有方法体),接口中的方法都是抽象方法,不能有方法体,只有方法声明

<4>.一个抽象类可以是public、private、protected、default,接口只有public

<5>.一个抽象类中的方法可以是public、private、protected、default,接口中的方法只能是public和default修饰,实际上都是public的abstract方法

相同之处是:

  都不能实例化。

补充:

  接口是一类特殊的抽象类,是更抽象的抽象类,你可以这样理解。抽象类是一个不完整的类,接口只定义了一些功能。

43Java 中的异常处理机制的简单原理和应用

答:当 JAVA 程序违反了 JAVA 的语义规则时,JAVA 虚拟机就会将发生的错误表示为一个异常。违反语

义规则包括2种情况。

一种是 JAVA 类库内置的语义检查。例如数组下标越界,会引发

IndexOutOfBoundsException;访问 null 的对象时会引发 NullPointerException。

另一种 情况就是JAVA 允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw 关键字引发异常。所有的异常都是 java.lang.Thowable 的子类。

43、垃圾回收的优点和原理。并考虑2种回收机制

答:Java 语言中一个显著的特点就是引入了垃圾回收机制,使 c++程序员最头疼的内存管理的问题迎刃

而解,它使得 Java 程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java 中

的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

44、你所知道的集合类都有哪些?主要方法?

答:最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。

Map 提供了一个更通用的元素存储方法。 Map集合类用于存储元素对(称作"键"和"值"),其中每个键

映射到一个值。

45、描述一下 JVM 加载 class 文件的原理机制?

答:JVM 中类的装载是由 ClassLoader 和它的子类来实现的,Java ClassLoader是一个重要的 Java

运行时系统组件。它负责在运行时查找和装入类文件的类。

46、排序都有哪几种方法?请列举

答: 排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)。

快速排序的伪代码。

//使用快速排序方法对 a[ 0 :n- 1 ]排序

从 a[ 0 :n- 1 ]中选择一个元素作为 middle,该元素为支点 。把余下的元素分割为两段 left 和 right,使得 left 中的元素都小于等于支点,而 right 中的元素都大于等于支点 ,递归地使用快速排序方法对 left 进行排序 ,递归地使用快速排序方法对 right 进行排序 ,所得结果为 left + middle + right 。

补充:

参考https://www.jobui.com/mianshiti/it/java/7889/

重点关注冒泡排序、选择排序。

47JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代表什么意义?在try

块中可以抛出异常吗? ??

答:Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在 Java

中,每个异常都是一个对象,它是 Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个

异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。

Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws 和 finally。一般情况下是用 try 来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。

用 try 来指定一块预防所有"异常"的程序。紧跟在 try 程序后面,应包含一个 catch 子句来指定你想要捕捉的"异常"的类型。

throw 语句用来明确地抛出一个"异常"。

throws 用来标明一个成员函数可能抛出的各种"异常"。

Finally 为确保一段代码不管发生什么"异常"都被执行一段代码。

可以在一个成员函数调用的外面写一个 try 语句,在这个成员函数内部写另一个 try 语句保护其他代码。

每当遇到一个 try 语句,"异常"的框架就放到堆栈上面,直到所有的 try 语句都完成。如果下一级的 try

语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的 try 语句。

48、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

答:可以。必须只有一个类名与文件名相同。

49java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些

类? ??

答:字节流,字符流。字节流继承于 InputStream OutputStream,字符流继承于 InputStreamReader

OutputStreamWriter。在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。

补充网上:

50java 中会存在内存泄漏吗,请简单描述。

答:会。自己实现堆载的数据结构时有可能会出现内存泄露,可参看 effective java.

补充网上:

会有的,虽然java虚拟机中的垃圾回收机制可以自动进行内存空间的申请和释放,但还是有些不能显式地进行释放,必须手动释放,比如关闭打开的文件和数据库连接.最后可能导致内存的可用空间越来越少,最终崩溃。

51java 中实现多态的机制是什么?

答:方法的重写 Overriding 和重载 Overloading 是 Java多态性的不同表现。重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。

52、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃

圾回收

答:对于 GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。通常,

GC 采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当 GC 确定一些对象为"不可达"时,GC 就有责任回收这些内存空间。可以。程序员

可以手动执行 System.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会执行。

53、静态变量和实例变量的区别?

答:static i = 10; //常量

class A a; a.i =10;//可变

54、什么是 java 序列化,如何实现 java 序列化?

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的

对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时

所引发的问题。

序列化的实现:将需要被序列化的类实现 Serializable 接口,该接口没有需要实现的方法,implements

Serializable 只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用 ObjectOutputStream 对象的

writeObject(Object obj)方法就可以将参数为 obj 的对象写出(即保存其状态),要恢复的话则用输入流。

55、是否可以从一个 static 方法内部发出对非 static 方法的调用?

答:不可以,如果其中包含对象的 method();不能保证对象初始化.

56、写 clone()方法时,通常都有一行代码,是什么?

答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

57、在 JAVA 中,如何跳出当前的多重嵌套循环?

答:用 break; return 方法。

58ListMapSet 三个接口,存取元素时,各有什么特点?

答 :List 以特定次序来持有元素,可有重复元素。

Set 无法拥有重复元素,内部排序。

Map 保存 key-value值,value 可多值。

59、什么时候用 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 标记。

还可以在包的基础上启用或者禁用断言。可以在预计正常情况下不会到达的任何位置上放置断言。

断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

2.Java 面试题整理(基础篇二)相关推荐

  1. Java面试题之基础篇

    前言         网上的Java面试题文章有非常多,但是我觉得有的比较繁琐,有的比较浅,不太好理解甚至随着java版本更新,很多以前的答案也不太准确了,正巧准备要跳槽了,所以我就整理了一篇java ...

  2. Java面试题整理-基础

    HashMap排序 1.继承Comparable接口 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法. 2.自定义比较器 ...

  3. JAVA学习之路--基础篇三

    目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...

  4. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇] 阿里巴巴 2016 阿里巴巴2016研发工程师笔试题(四) 阿里巴巴2016研发工程师笔试题(三) 阿里巴巴2016研发工程师笔试题(二) 2015 阿里巴巴201 ...

  5. 常见面试题整理--数据库篇(每位开发者必备

    常见面试题整理--数据库篇(每位开发者必备) 转载自:https://zhuanlan.zhihu.com/p/23713529        知乎专栏 继续前面有关于的Python面试的两篇内容:P ...

  6. 尚学堂Java面试题整理

    博客分类: 经典分享 1. super()与this()的区别? - 6 -  2. 作用域public,protected,private,以及不写时的区别? - 6 -  3. 编程输出如下图形. ...

  7. Java面试题整理_P1

    Java面试题整理 1.Java基础 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境.JR ...

  8. 100道中高级Java面试题整理

    JavaEE面试题整理 一.Java基础篇 二.JVM篇 三.Tomcat篇 四.MyBatis篇 五.Spring篇 六.SpringMVC面试题整理 七.Redis篇 八.Mongodb篇 九.M ...

  9. 【JAVA面试】java面试题整理(4)

    版权声明:转载请注明 https://blog.csdn.net/qq_33591903/article/details/83473779 java面试题整理(4) JAVA常考点4 文件夹 1. S ...

  10. Java学习笔记之基础篇

    Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...

最新文章

  1. 芯片、模组、开发板的区别与联系-结合ESP32浅谈(转载)
  2. malloc 两种实现方式:brk 和 mmap
  3. angularJS 修改操作select回显选中的数据
  4. SAP Spartacus split view里每个元素宽度的计算方式
  5. unity text不能刷新_unity自走棋制作(二)-UI制作
  6. Elicpse使用技巧-打开选中文件文件夹或者包的当前目录
  7. 走进COM组件系列(三)
  8. 内存分配知识:全局,局部,静态变量
  9. 《深度学习笔记》——listnumpy索引操作的学习笔记
  10. mysql备份和还原
  11. Gulp介绍与入门实践
  12. 对zebra的一点思考 --- 002
  13. Entity Framework Core系列教程-1
  14. 解决12306登录验证码python
  15. 深入理解Attention及变种(二)
  16. TB级倾斜摄影建模集群完美硬件配置方案
  17. Poi 4.0设置自定义背景颜色
  18. html5 斜边,css斜切角 斜边 倒角
  19. 创建AccessToken工具类
  20. 企业QQ找回聊天记录

热门文章

  1. 【华为云技术分享】解析:物联网数据分析服务如何做?
  2. 多模态融合算法——Multimodal Compact Bilinear Pooling
  3. 安全性能两手抓,华为云MySQL“非双一特性”助力企业业务稳定高效运行
  4. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文(中)
  5. 红橙Darren Android视频笔记 自定义view的三个构造方法以及一种实现换肤的方案 测量mode
  6. 《数学的思维方式与创新》课程感悟与总结
  7. pycharm不能输入代码或删除代码
  8. hive double 转decimal_大白话详解大数据hive知识点,老刘真的很用心(3)
  9. 你必须知道的几种java容器(集合类)
  10. php表格位于页面中央,怎么为表格所在的页面添加编辑限制保护