10 道 OOP 方面的 Java 面试题,祝你跳槽涨薪一臂之力(1)

简介: 10 道 OOP 方面的 Java 面试题,祝你跳槽涨薪一臂之力

按照惯例,2 月份是一波面试找工作的高峰期,我就是 2014 年的 2 月份回的三线城市。 不过,当时傻乎乎的没有刷面试题,幸好三线城市要求的面试题不是很过分,能答得上来。


如果你年后也有跳槽的打算,我还是建议你提前做好准备。今天,我为你精心准备了 13 道 OOP 方面的 Java 面试题,如果你觉得有收获的话,别忘了点赞分享啊。


第一题,Java 是什么?


Java 是一门计算机编程语言,高级、健壮、面向对象,并且非常安全。它由 Sun 公司在 1995 年开发,主力开发叫 James Gosling,被称为 Java 之父。


其实 Oracle 官网有一段关于 Java 的定义,是这样的:


Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台。有许多应用程序和 Web 站点只有在安装 Java 后才能正常工作,而且这样的应用程序和 Web 站点日益增多。Java 快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!

第二题,什么是 OOP ?


面向对象编程——Object Oriented Programming,简称 OOP,是一种程序设计思想。OOP 把对象作为程序的基本单元,一个对象包含了成员变量和操作成员变量的方法。


面向过程的程序设计把计算机程序视为一系列的命令集合,即一组方法的顺序执行。为了简化程序设计,面向过程把方法继续切分为子方法,即把大块方法通过切割成小块方法来降低系统的复杂度。


而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。


OOP 有三大特征:


封装

多态

继承

面向对象编程的语言不只有 Java,还有 C#、C++、Python 等等。如果面试官有闲情逸致的话,还可以给他讲一个小学课本上的《女娲造人》。


女娲要造人,首先要想的是所造的人长什么样,女娲为了方便就按照自己的样子捏了一个模板,后面她只需要按照这个模板来捏就行。在 OOP 中,这个模板就称为类。


女娲按照模板(类)捏了一个人,这个人就是具体的对象;人有很多器官,比如眼睛、耳朵、鼻子、大脑、手和脚,同样还有年龄、身高,女娲为了区别每个人就会给每个对象不同的基本特征。另外,捏出的人要会走路,会吃饭,会干活等行为方式。


在 OOP 中,对象的基本特征称为成员变量,行为方式称为方法,所以类是由成员变量和方法构成的;成员变量最好隐藏起来,当需要人做什么的时候,就通过方法来完成。暴露方法的行为称为封装。


女娲想着一个人太无聊,就给它捏个伴,暂且就叫它男人和女人吧,男人和女人都是根据这个模板来的,有着一样的基本特征和行为,只是某些特征(成员变量)和行为(方法)在实现上有差异,那么这种根据模板而捏造不同实现细节的类的行为称为多态,就是一个模板有男人和女人两种形态。


女娲为了省事就让人类自己繁衍后代,就有了父子的关系,子类具有父类的基本特征和行为,子类也可以改变这些特征和行为,这种父子关系实现称为继承。


第三题,Java 有哪些特性?


面向对象。

参照第二题。


平台无关性。

Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。


Java 语言使用 Java 虚拟机机制屏蔽了具体平台的相关信息,使得 Java 语言编译的程序只需要生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。


简单性。

Java 舍弃了很多 C++ 中难以理解的特性,比如操作符的重载和多继承等,而且 Java 语言加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。


支持多线程。

Java 支持多个线程同时执行,并提供多线程之间的同步机制。


健壮性。

Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。


高性能。

随着 JIT(Just in Time,即时编译)的发展,Java 的运行速度也越来越快。


第四题,Java 是 100% 面向对象吗?


不是的。Java 有 8 中基本数据类型,包括 boolean、char、byte、short、int、long、float 和 double,它们都不是对象。


image.png


第五题,什么是抽象?


抽象是指为了某种目的,对一个概念或一种现象包含的信息进行过滤,移除不相关的信息,只保留与某种最终目的相关的信息。例如,一个皮质的足球,我们可以过滤掉它的质料,得到更一般性的概念,也就是球。从另外一个角度看,抽象就是简化事物,抓住事物本质的过程。


在 Java 中,可以通过两种形式来体现抽象:抽象类和接口。


定义抽象类的时候需要用到关键字 abstract,放在 class 关键字前。


public abstract class AbstractPlayer {
    abstract void play();
}
通过 extends 关键字可以继承抽象类。
public class BasketballPlayer extends AbstractPlayer {
    @Override
    void play() {
        System.out.println("我是张伯伦,篮球场上得过 100 分");
    }
}
接口是通过 interface 关键字定义的,它可以包含一些常量和方法。
public interface Electronic {
    // 常量
    String LED = "LED";
    // 抽象方法
    int getElectricityUse();
    // 静态方法
    static boolean isEnergyEfficient(String electtronicType) {
        return electtronicType.equals(LED);
    }
    // 默认方法
    default void printDescription() {
        System.out.println("电子");
    }
}
通过 implements 关键字可以实现一个接口。
public class Computer implements Electronic {
    public static void main(String[] args) {
        new Computer();
    }
    @Override
    public int getElectricityUse() {
        return 0;
    }
}
相关文章
|
2月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
5月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
336 0
|
4月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
452 0
|
2月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
4月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
227 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
2月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
5月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
168 5
|
5月前
|
安全 Java API
2025 年 Java 校招面试常见问题及详细答案汇总
本资料涵盖Java校招常见面试题,包括Java基础、并发编程、JVM、Spring框架、分布式与微服务等核心知识点,并提供详细解析与实操代码,助力2025校招备战。
278 1
|
4月前
|
缓存 Java 关系型数据库
Java 面试经验总结与最新 BAT 面试资料整理含核心考点的 Java 面试经验及最新 BAT 面试资料
本文汇总了Java面试经验与BAT等大厂常见面试考点,涵盖心态准备、简历优化、面试技巧及Java基础、多线程、JVM、数据库、框架等核心技术点,并附实际代码示例,助力高效备战Java面试。
170 0
下一篇
oss云网关配置