JavaEE工程师面试笔试题大全.

JavaEE工程师面试笔试题大全.


2024年4月6日发(作者:)

JavaEE工程师面试笔试题大全

对于大多数Java程序员而已,在面试过程中遇到笔试题,是在所难免的环节。笔

试题主要能体现出求职者的技术水平,一定程度上决定是否被录用的重要依据。下

面,千锋Java培训的老师来一起分享Java面试题,希望能帮助大家顺利通过面试笔试!

1 Switch能否用string做参数?

a.在Java 7 之前, switch 只能支持byte,short,char,int 或者其对应的封装类以及

Enum 类型。在JAVA 7中,String 支持被加上了。

2 equals与==的区别:

a.==是判断两个变量或实例是不是指向同一个内存空间equals是判断两个变量

或实例所指向的内存空间的值是不是相同

3 Object有哪些公用方法?

a.方法equals测试的是两个对象是否相等

b.方法clone进行对象拷贝

c.方法getClass返回和当前对象相关的Class对象

d.方法notify,notifyall,wait都是用来对给定对象进行线程同步的

4 Java的四种引用,强弱软虚,用到的场景

a.利用软引用和弱引用解决OOM问题:用一个HashMap来保存图片的路径和

相应图片对象关联的软引用之间的映射关系,在内存不足时,JVM会自动回收这些缓

存图片对象所占用的空间,从而有效地避免了OOM的问题

b.通过软可及对象重获方法实现Java对象的高速缓存:比如我们创建了一

Employee的类,如果每次需要查询一个雇员的信息。哪怕是几秒中之前刚刚查询过

的,都要重新构建一个实例,这是需要消耗很多时间的。我们可以通过软引用和

HashMap 的结合,先是保存引用方面:以软引用的方式对一个Employee对象的实例

进行引用并保存该引用到HashMap 上,key 为此雇员的id,value为这个对象的软引用,

另一方面是取出引用,缓存中是否有该Employee实例的软引用,如果有,从软引用中

取得。如果没有软引用,或者从软引用中得到的实例是null,重新构建一个实例,并保

存对这个新建实例的软引用

c.强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即

使当前内存空间不足,JVM也不会回收它,而是抛出OutOfMemoryError 错误,使

程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值

为null,这样一来的话,JVM在合适的时间就会回收该对象

d.软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会

被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。

e..弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当JVM 进行垃圾回

收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于

垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象

f.虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没

有引用,在任何时候都可能被垃圾回收器回收。

g.使用场景:

5 Hashcode的作用,与equal 有什么区别

a.同样用于鉴定2个对象是否相等的,java集合中有list 和set 两类,其中set不允

许元素重复实现,那个这个不允许重复实现的方法,如果用equal

去比较的话,如果存在1000个元素,你new 一个新的元素出来,需要去调用1000

次equal 去逐个和他们比较是否是同一个对象,这样会大大降低效率。hashcode实际

上是返回对象的存储地址,如果这个位置上没有元素,就把元素直接存储在上面,如果

这个位置上已经存在元素,这个时候才去调用equal方法与新元素进行比较,相同的

话就不存了,散列到其他地址上

6 String、StringBuffer与StringBuilder的区别

类型和StringBuffer 类型的主要性能区别其实在于String 是不可变的对

Buffer和StringBuilder底层是char[]数组实现的

Buffer是线程安全的,而StringBuilder是线程不安全的

7 Override和Overload的含义去区别

ad顾名思义是重新加载,它可以表现类的多态性,可以是函数里面可以

有相同的函数名但是参数名、返回值、类型不能相同;或者说可以改变参数、类

型、返回值但是函数名字依然不变。

b.就是ride(重写的意思,在子类继承父类的时候子类中可以定义某方

法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方

法,而父类相当于被覆盖(重写了。

8 抽象类和接口的区别

a.一个类只能继承单个类,但是可以实现多个接口

b.接口强调特定功能的实现,而抽象类强调所属关系

c.抽象类中的所有方法并不一定要是抽象的,你可以选择在抽象类中实现一些基

本的方法。而接口要求所有的方法都必须是抽象的

9 解析XML的几种方式的原理与特点:DOM、SAX、PULL

:消耗内存:先把xml文档都读到内存中,然后再用DOM API 来访问树形

结构,并获取数据。这个写起来很简单,但是很消耗内存。要是数据过大,手机不够牛

逼,可能手机直接死机

:解析效率高,占用内存少,基于事件驱动的:更加简单地说就是对文档进行

顺序扫描,当扫描到文档(document开始与结束、元素(element开始与结束、文档

(document结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同

样的扫描,直至文档结束。

:与SAX 类似,也是基于事件驱动,我们可以调用它的next(方法,来获取下

一个解析事件(就是开始文档,结束文档,开始标签,结束标签,当处于某个元素时可以

调用XmlPullParser的getAttributte(方法来获取属性的值,也可调用它的nextText(获

取本节点的值。

10 wait(和sleep(的区别

sleep来自Thread类,和wait来自Object类

调用sleep(方法的过程中,线程不会释放对象锁。而调用wait 方法线程会释放

对象锁

sleep睡眠后不出让系统资源,wait让出系统资源其他线程可以占用CPU

sleep(milliseconds需要指定一个睡眠时间,时间一到会自动唤醒

11 JAVA 中堆和栈的区别,说下java 的内存机制

a.基本数据类型比变量和对象的引用都是在栈分配的

b.堆内存用来存放由new创建的对象和数组

c.类变量(static修饰的变量,程序在一加载的时候就在堆中为类变量分配内存,堆

中的内存地址存放在栈中


发布者:admin,转转请注明出处:http://www.yc00.com/web/1712416421a2055791.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信