Java最常见的500+面试题:面试必备

前言

本题集列举了众多IT公司面试真题,对应聘Java程序员职位的常见考点和知识体系都进行的分类和归纳整理。

本题集适合应聘Java和Java SE职位的程序员作为面试复习、学习和强化的资料,也适合其他程序员作为拓展读物进行阅读。

本题集包含了常见的算法、面试题,也包含了新的高级技术,比如:微服务架构等技术的面试题目。本题集非常全面,对于工作1-5年左右的java程序员面试有非常好的指导作用。

大家也可以访问(直接在线观看最新版的面试题):Java300集零基础适合初学者视频教程(含项目+面试题)

41.下列关于关键字的使用说法错误的是()(选择一项)

42.下列哪些语句关于内存回收的说法是正确的()(选择一项)

43.选出合理的标识符()(选择两项)

44.下列说法正确的是()(选择多项)

45.定义一个类名为”MyClass.java”的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明为()(选择两项)

46.面向对象的特征有哪些方面?请用生活中的例子来描述。

答: 面向对象的三大特征:封装、继承、多态。

举例:(比如设计一个游戏)我现在创建了一个对象,名叫战士。

战士的属性是—性别,年龄,职业,等级,战斗力,血量。

它的方法—战斗,逃跑,吃饭,睡觉,死。

后来,我又建了一个对象,叫人。

属性:性别,年龄,职业,等级,血量

方法:逃跑,吃饭,睡觉,死。

我让人,成为战士的父类,战士可以直接继承人的属性和方法。

战士修改成—

属性:战斗力。

方法:战斗。

看上去战士的资料变少了,实际上没有,我们仍然可以调用方法—战士.死。

而且我们还可以重载战士.死的方法,简称重载死法。

我还建了一个对象—法师,父类也是人。

属性:法力值

方法:施法,泡妞。

你看,用了继承,创建对象变得更方便了。

再后来,我又建立了一个对象,叫怪物。

属性:等级,战力,血量。

方法:战斗,死。

建了个对象,叫白兔怪,父类怪物,可继承怪物所有的属性和方法。

属性:毛色。

方法:卖萌,吃胡萝卜。

47.说明内存泄漏和内存溢出的区别和联系,结合项目经验描述Java程序中如何检测?如何解决?

答:内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

memory leak会最终会导致out of memory!

48.什么是Java的序列化,如何实现Java的序列化?列举在哪些程序中见过Java序列化?

答:Java中的序列化机制能够将一个实例对象(只序列化对象的属性值,而不会去序列化什么所谓的方法。)的状态信息写入到一个字节流中使其可以通过socket进行传输、或者持久化到存储数据库或文件系统中;然后在需要的时候通过字节流中的信息来重构一个相同的对象。一般而言,要使得一个类可以序列化,只需简单实现java.io.Serializable接口即可。

对象的序列化主要有两种用途:

1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

2) 在网络上传送对象的字节序列。

在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。

49.不通过构造函数也能创建对象吗?

答:Java创建对象的几种方式(重要):

1、 用new语句创建对象,这是最常见的创建对象的方法。

2、 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

3、 调用对象的clone()方法。

4、运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。

50.匿名内部类可不可以继承或实现接口。为什么?

答:匿名内部类是没有名字的内部类,不能继承其它类,但一个内部类可以作为一个接口,由另一个内部类实现.

1、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造函数,所以它必须完全借用父类的构造函数来实例化,换言之:匿名内部类完全把创建对象的任务交给了父类去完成。

2、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果,如上例所示。这是多态性的体现。

3、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。

完整版Java面试题+实战项目已为大家打包好,需要的小伙伴评论区留言!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值