.
java面试题及答案2020 软件工程师面试题
根底题:
1.简述 string[] 、 ArrayList 、 List 的区别。数组:
优点 :
o数组在内存中是连续存储的,索引速度非常快;
o赋值和修改元素也很简单;
缺乏:
o两个数据之间插入数据比拟麻烦;
o声明数组的时候,必须指明数组的长度,数组长度过长会造成内存浪费,数组的长度过短,会造成数据溢出错误。
ArrayList :
优点:
o framework提供的用于数据存储和检索的专用类
o 大小依据存储 的数据来动态扩展和收缩
o继承 IList ,可以方便的进行数据的添加、插入和删除
缺点:
o 允许插入不同类型的数据,都当做 object 类型处理
o数据处理时可能出现类型不匹配的错误
o存在装箱〔值 =?引用〕拆箱的操作,会带来很大的性能损耗
List :
优点:
.
.
o声明 List 集合时,需要声明集合内数据的对象类型
o防止了类型平安问题和装箱拆箱的性能问题
2.简述装箱和拆箱操作中的性能损耗是如何产生的。
3.简述对中的事件机制的理解。
4.在一个的三层结构系统中,以登录操作为例,简述在各层中如何组织代码。
5.简述相比 DATASET,实体类在 WEB工程中的优点与缺点。
6.简述 GC是如何工作的。
Java 采用 VM〔 Virtual Machine 〕机制,由 VM来管理程序的运行当然也包括对 GC管理。 90
年代末期 .NET 出现了, .NET 采用了和 Java 类似的方法由 CLR(Common Language Runtime)
来管理。
Garbage Collector 〔垃圾收集器,在不至于混淆的情况下也成为 GC〕以应用程序的 root
为根底, 遍历应用程序在 Heap 上动态分配的所有对象 [2] ,通过识别它们是否被引用来确定
哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的 root 或者别的对象所
引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是 GC工作的原理。为
了实现这个原理, GC有多种算法。比拟常见的算法有 Reference Counting ,Mark Sweep,
Copy Collection 等等。目前主流的虚拟系统 .NET CLR, Java VM 和 Rotor 都是采用的 Mark
Sweep算法。
Java 的内存管理实际就是对象的管理,其中包括对像的分配和释放。对于程序员来说,分
配对象使用 new 关键字,释放对象时只是将对象赋值为 null ,让程序员不能够再访问到这
个对象,该对象被称为“不可达〞。 GC将负责回收所有“不可达〞对象的内存空间。
根据 GC的工作原理, 可以通过一些技巧和方式让 GC运行更快, 高效而又合理。 编程建议如
下:
.
.
o尽早释放无用对象的引用,特别注意一些复杂对象,如数组,队列等。对于此类对象, GC回收它们的效率一般较低,如果程序允许,应尽早将不用的
引用对象赋为 null ,这样可以加速 GC的工作。
o 尽量少用 finalize 函数。 finalize 是 java 提供应程序员用来释放对象或
资源的函数, 但是它会加大 GC的工作量, 因此尽量少采用 finalize 函数回
收资源。 当程序有一定的等待时间,程序员可以手动执行 (),
通知 GC运行,但是 java 语言标准并不保证 GC一定会执行。
.NET 的 GC机制有这样两个问题:
o首先, GC并不是能释放所有的资源。它不能自动释放非托管资源。
o第二, GC并不是实时性的,这将会造成系统性能上的瓶颈和不确定性。
oGC并不是实时性的,这会造成系统性能上的瓶颈和不确定性。所以有了
IDisposable 接口, IDisposable 接口定义了 Dispose 方法,这个方法用来
供程序员显式调用以释放非托管资源。使用 using 语句可以简化资源管理
7.简述 3 个熟悉的设计模式。
简单工厂模式〔只适用于业务简单的情况〕:有三种角组成:
工厂类角〔只有一个工厂类〕
抽象产品角
具体产品角
工厂方法模式〔当产品种类非常多时会出现大量与之对应的工厂类〕:有四种角
抽象工厂角
具体工厂角
抽象产品角
具体产品角
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论