中级Java工程师面试题,附带答案_极悦注册
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 中级Java工程师面试题,附带答案

中级Java工程师面试题,附带答案

更新时间:2022-12-21 15:30:04 来源:极悦 浏览1805次

1、面向对象的特征有哪些方面

面向对象的特征主要有以下几个方面:

1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地 注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一 部分,暂时不用部分细节。

抽象包括两个方面:一是过程抽象,二是数据抽象。

2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量 ,并且类可以修改或增加新的方法使之更适合特殊的需要。

3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面 。 面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治封装的对象,这些对象通过一个受保护的接口访问其他对象。

4)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的 优势,很好的解决了应用程序函数同名问题。

2、Java多态的具体体现

面向对象编程有四个特征:抽象,封装,继承,多态。多态有四种体现形式:

1)接口和接口的继承;

2)类和类的继承;

3)重载;

4) 重写。

其中重载和重写为核心。

重载:重载发生在同一个类中,在该类中如果存在多个同名方法,但是方法的参数类型和个数不一样,那么说明该方法被重载了;

重写:重写发生在子类继承父类的关系中,父类中的方法被子类继承,方法名、返回值类型、参数完全一样,但是方法体不一样,那么说明父类中的该方法被子类重写了。

3、什么时候用 assert?

答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。

一般来说,assertion 用于保证程序最基本、关键的正确性。 assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion 检查通常是关闭的。在实现中,断言是一个包含布尔表达式的语句, 在执行这个语句时假定该表达式为 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 标记。还可以在包的基础上启用或者禁用断言。可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。

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

4、String、StringBuffer 、StringBuilder 的区别:

String:字符串常量,不可变,使用字符串拼接时是不同的两个空间;

StringBuffer:字符串变量,可变,线程安全,字符串拼接直接在字符串后追加;

StringBuilder:字符串变量,可变,非线程安全,字符串拼接直接在字符串后追加;

1)StringBuilder执行效率高于StringBuffer高于String;

2)String是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象,StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法,在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer是线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于StringBuffer;

3)对于大数据量的字符串的拼接,采用StringBuffer,StringBuilder。

5、数组有没有length()方法?String 有没有length()方法?

答:数组没有length()方法,有length的属性。String有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。

以上就是“中级Java工程师面试题,附带答案”,你能回答上来吗?如果想要了解更多的相关内容,可以关注极悦Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>