【后端面经-Java】Java基本概念

端面,java,基本概念 · 浏览次数 : 60

小编点评

**面向对象和面向过程概述** **面向对象** * 面向对象是一种编程思想,将一个功能分解为多个 nhỏ的步骤,每个步骤都用一个对象来实现。 * 面向对象编程的优点: * 代码更易读 * 代码更易维护 * 代码更易调试 **面向过程** * 面向过程是一种编程思想,将一个功能分解为多个阶段,每个阶段都用一个函数来实现。 * 面向过程编程的优点: * 代码更易理解 * 代码更易测试 * 代码更易扩展 **C++和Java的比较** | 特征 | C++ | Java | |---|---|---| | 语言类型 | 编译型 | 解释性 | | 编译阶段 | 一次编译 | 一次编译 | | 运行阶段 | 可执行文件 | 字节码文件 | | 指令重载 | 是 | 是 | | 多重继承 | 是 | 否 | | 结构体和联合 | 是 | 否 | | 隐性类型转换 | 是 | 否 | | 面向过程 | 是 | 否 | |跨平台 | 需手动配置 | 可跨平台 | **垃圾回收机制** * C++中需要程序员手动进行内存申请和释放。 * Java使用垃圾回收机制,自动进行内存申请和释放。 **创新点** * Java 使用自动垃圾回收机制,避免了内存泄漏问题。 * Java 是完全面向对象的编程语言,没有面向过程的特点。

正文

【后端面经-Java】Java基本概念

1. 面向对象和面向过程

1.1 概念

  • 面向过程:将一个事件拆分为小步骤,每个步骤封装为一个函数,通过对函数的线性调用来实现一个大事件;
  • 面向对象:先对一个事件需要用到的实体类进行抽象,封装成类,通过对类的实例化对象进行操作,实现这个事件过程。特点是:封装、继承、多态。

1.2 优缺点对比

如下表所示:

2. C++和Java的区别

从某种意义上,Java是在C++的基础上,取其精华去其糟粕,进行改进之后得到的一门语言,因此,Java和C++都是面向对象的语言,大量的语法都是相通的,但是既然是C++2.0版本,总是会有所不同的。下面就来总结一下Java和C++的区别。

2.1 "去其糟粕"——Java同学,你对C++的这些东西有什么意见?

  • 指针
    大家学习C++的过程中,都被指针折磨过,包括什么数组指针、指针数组之类的,Java不支持指针,避免了指针越界、指针类型不匹配等问题。
  • 多重继承
    所谓多重继承,就是一个子类继承多个父类(奉先吾儿,是你吗?)。支持多重继承对于程序结构来说并不友好,因此Java不支持多重继承,但是可以通过接口来实现多重继承的效果。
  • 操作符重载
    C++的操作符重载,指的是一个操作符可以在不同的类中使用重载方式定义不同的含义,Java也不支持操作符重载,避免运算中的模糊性。
  • goto语句
    C++中的goto语句,可以跳转到任意位置,这样的话,程序的结构就会变得混乱,Java不支持goto语句。
  • 结构体联合
    C++能够使用结构体联合实现自定义的类型集合,而Java不支持结构体联合,Java中的数据类型只包括基本数据类型引用数据类型
  • 隐性类型转换
    C++在运算过程中,不同类型的数据可以进行隐性转换,而Java不支持隐性类型转换,需要进行强制类型转换。
  • 预处理器
    C++使用预处理引入一些库文件,但是Java并不支持,Java可使用import进行引入,但是import是在编译阶段进行的。
  • 缺省参数的函数定义
    C++的函数定义允许缺省参数,但是Java不允许。

2.2 改进之处————Java同学,你的这个论文,,,创新点是什么?

  • 垃圾回收机制
    C++需要程序员手动进行内存的申请和释放,而Java使用垃圾回收机制,自动进行内存的申请和释放,避免了内存泄漏的问题。
  • 完全面向对象
    C++是面向对象语言,但是承袭于C语言,依然保留着面向过程的特点,但是Java是完全面向对象的语言,没有面向过程的特点。
  • 跨平台——解释性语言
    C++是编译型语言,编译产生可执行文件,程序在不同的平台上需要重新编译;Java是解释性语言,程序在编译之后,会生成字节码文件,这些字节码文件可以在不同的平台上运行。

面试模拟

Q:面向过程和面向对象的区别是什么?
A: 面向过程指的是一个功能的实现拆分为多个小步骤,先行调用这些小步骤实现功能,逻辑简单,适用于小型项目,但是代码复用率低、维护成本高,不适合大型项目开发,而面向对象则是在功能实现上先抽象出多个类,通过对类的实例化对象进行操作实现功能,复用性高,更容易维护,但是开发较为复杂,且构建类将会占用更大的内存空间。

Q:C++和Java的区别
A:Java去除了C++中的指针、多重继承、结构体、联合、预处理等容易导致程序复杂性问题的特点,添加了自动垃圾回收机制,可靠性更高,并且Java是完全面向对象的编程语言。此外,C++是编译型语言,一次编译只能在当前平台运行,而Java则是解释性语言,编译之后产生的不是可执行文件,而是字节码,在不同平台通过JVM转换为可执行文件,具有跨平台性。

参考资料

  1. 面向过程 VS 面向对象
  2. 大神级回答---【面向对象和面向过程的区别】
  3. Java君与C、C++君的10大区别-总结
  4. C++与Java的区别

与【后端面经-Java】Java基本概念相似的内容:

【后端面经-Java】Java基本概念

【不定期更新】本文主要介绍了Java学习前期的一些概念问题,包括“面向对象和面向过程的区别”、“C++和Java的不同之处”等等,适合初学者学习。

【后端面经-Java】HashMap详解

本文详细介绍了hashmap,包括基本概念、hashmap数据结构、关键变量和重要方法,并且结合源码进行分析。

【后端面经-Java】JVM内存分区详解

本文主要介绍了JVM内存分区的基本情况,着重介绍了栈、堆、方法区的分区情况,并给出实际代码解释内存分配的过程。

【后端面经-Java】AQS详解

本文介绍了AQS的核心思想、基本架构、实现方法,并对框架中的重要源码方法进行介绍和分析

迟来的秋招面经,17家公司,Java岗位

一位朋友秋招面试了17家公司(都是中小公司或者银行),Java 后端岗。下面是他的个人情况、求职经验已经这17家公司的面经。 # 个人情况和求职经验 其实现在是挺后悔大学没有好好的学习的,因为基本上都会提到一些成绩相关的事情,每次填成绩都只能填个50%(实际上更低),并且还有挂科,没有奖学金,没有学

【后端面经-Java】Java创建线程的方法简介

本文简要介绍了java中创建线程的四种方式,并介绍了线程概念,适合新手阅读。

【后端面经-java】java线程池满的处理策略

本文对java线程池做了具体介绍,并且讨论了java线程池满了之后的拒绝策略。

【后端面经-Java】I/O多路复用 简录

本文主要介绍了Java当中常见的几种IO模型,介绍其运行机制和实际缺点,并进行技术对比,对于IO多路复用的实现方式进行分析。

【后端面经-Java】Synchronize和ReentrantLock区别

本文介绍了Synchronize和ReentrantLock同步锁的相似和不同点,并指出两者的主要特点和适用场景。

【后端面经-Java】公平锁和加锁流程

本文主要介绍了公平锁和非公平锁的概念和区别,并且结合Reentranslock锁的源码对加锁机制进行分析。