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

news2025/1/11 6:04:56

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

    • 1. 面向对象和面向过程
      • 1.1 概念
      • 1.2 优缺点对比
    • 2. C++和Java的区别
      • 2.1 "去其糟粕"——Java同学,你对C++的这些东西有什么意见?
      • 2.2 改进之处————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的区别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/787300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

伦敦金投资仓位控制的方法

留意本栏目过去的文章的朋友都会发现,其实小编认为资金管理很重要,甚至重要性超过技术分析找到入场机会。在资金管理中,关于仓位的控制是一门很大的学问,在伦敦金投资中,仓位的控制关系到我们盈亏的多少,甚…

利用百度地图做个亚洲范围地震可视化特效果

地图叠加等值面效果,绘制掩体模型 地震闪动特效 地震热力图效果

【人工智能】局部搜索算法、爬山法、模拟退火、局部剪枝、遗传算法

文章目录 局部搜索算法内存限制局部搜索算法示例:n-皇后爬山算法随机重启爬山模拟退火算法局部剪枝搜索遗传算法小结局部搜索算法 在某些规模太大的问题状态空间内,A*往往不够用 问题空间太大了无法访问 f 小于最优的所有状态通常,甚至无法储存整个边缘队列解决方案 设计选择…

vue-cli脚手架创建创建的项目打包后无法正常打开报 Failed to load resource: net::ERR_FILE_NOT_FOUND错误

亲爱的小伙伴们,你们最近是否有遇到用使用最新的脚手架打包项目后index.html文件无法正常打开,然后控制台报错的情况呢,不要担心,这个坑今天被我踩到了并且被我解决了,下边就让我来给大家分享一下经验吧! …

树莓派4B通过wiringP库实现串口通信的实验

1.实现串口通信前的准备 树莓派4b实现与其它设备之间的串口通信需要做一些配置&#xff0c;可以点进这篇文章进行查看参考文章 wiringPi库串口相关的API参考文章链接wiringPI库串口API 2.实现单个字符的发送 #include <stdio.h> #include <wiringPi.h> #includ…

MFC第二十一天 CS架构多页面开发与数据交互、CImageList图像列表介绍 、CListCtrl-SetItem设置列表项的方法

文章目录 CImageList图像列表介绍CListCtrl图标的原理CListCtrl列表图标设置CListCtrl-SetItem设置列表项的方法 CS架构多页面开发与数据交互添加用户实现向导多页数据交互pch.hCLientXq.h CAppCPage1.hCPage1.cppCPage2.hCPage2.cppCWorkerDlg .hCWorkerDlg.cpp 多页数据修改C…

javascript实现九九乘法表

乘法表是初学者学习乘法基础的一个重要工具&#xff0c;同时也是程序员实践编程技能的一个常见项目。在本文中&#xff0c;我将介绍如何使用JavaScript实现一个简单的乘法表。 首先&#xff0c;我们需要明确乘法表的基本结构。乘法表通常是一个正方形的表格&#xff0c;包含从…

Ubuntu22.04部署K8s集群

Ubuntu22.04部署K8s集群 一、基础环境准备1.1 VMware Workstation Pro 17.01.2 Ubuntu22.04 二、系统环境配置2.1 设置Master与工作节点的机器名称及配置2.2 解析主机2.3 虚拟内存swap分区关闭2.4 开启IPv4转发2.5 设置时间同步2.6 开启防火墙的端口&#xff08;可选&#xff0…

【Spring Boot Admin】使用(整合Spring Security服务,添加鉴权)

Spring Boot Admin 监控平台 背景&#xff1a;Spring Boot Admin 监控平台不添加鉴权就直接访问的话&#xff0c;是非常不安全的。所以在生产环境中使用时&#xff0c;需要添加鉴权&#xff0c;只有通过鉴权后才能监控客户端服务。本文整合Spring Security进行实现。 pom依赖 …

前端开发实习总结参考范文(合集)

▼前端开发实习总结篇一 今天就简单聊聊上面的StrutsSpringHibernate吧。 Struts 代表&#xff1a;表示层;Spring代表&#xff1a;业务逻辑层;Hibernate则代表持久层。他们是目前在Java Web编程开发中用得最多的框架&#xff0c;其实这样区分是为了适应软件开发过程中各个分工…

SOC FPGA介绍及开发设计流程

目录 一、SoC FPGA简介 二、SoC FPGA开发流程 2.1 硬件开发 2.2 软件开发 一、SoC FPGA简介 SOC FPGA是在FPGA架构中集成了基于ARM的硬核处理器系统(HPS)&#xff0c;包括处理器、外设和存储器控制器。相较于传统的仅有ARM处理器或 FPGA 的嵌入式芯片&#xff0c;SOC FPGA既…

PHY芯片的使用(三)在linux下网络PHY的移植

1 前言 配置设备树请参考上一章。此次说明还是以裕太的YT8511芯片为例。 2 需要配置的文件及路径 a. 在 .. /drivers/net/phy 目录下添加 yt_phy.c 文件&#xff08;一般来说该驱动文件由厂家提供&#xff09;&#xff1b; b. 修改.. /drivers/net/phy 目录下的 Kconfig 文…

Java 测试Mqtt协议通信

1. 启动ActiveMQ: 2. 安装jdk和eclipse Jdk 官方下载&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/ jdk安装测试&#xff1a; eclipse官方下载网站免安装版&#xff0c;解压缩就可以使用&#xff1a; https://www.eclipse.org/downloads/packages/ 3…

【线条之美-让你发现不一样的美学:持续更新中...】

线条在程序中就是平淡无奇的一条带颜色的形状,天天看着也没有什么奇怪的,但是今天我带你发现不一样的线条,让你看完之后一定爱上线段美学,让你发现线段的奇妙之处,废话不多说,让我们来一起欣赏吧,持续更新中…

时序预测 | MATLAB实现BiLSTM时间序列未来多步预测

基本介绍 双向LSTM或biLSTMQ是一种序列处理模型,由两个LSTM组成:一个在前向接收输入,另个在后向接收输入。BiLSTMs有效地增加了网络可用的信息量。利用LSTM对句子进行建模还存在一个问题:无法编码从后到前的信息。在更细粒度的特征挖掘时缺乏能力,通过BiLSTM可以更好的捕…

CSS3 实现边框圆角渐变色渐变文字效果

.boder-txt {width: 80px;height: 30px; line-height: 30px;padding: 5px;text-align: center;border-radius: 10px;border: 6rpx solid transparent;background-clip: padding-box, border-box;background-origin: padding-box, border-box;/*第一个linear-gradient表示内填充…

企业级敏捷转型探索与实践︱极狐Gitlab战略运营部PMO郝韫

极狐Gitlab战略运营部PMO郝韫先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;企业级敏捷转型探索与实践。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 打造持续创新、快速成长的敏捷组织…

【Python笔记】Python + xlrd + pymysql读取excel文件数据并且将数据插入到MySQL数据库里面

这篇文章&#xff0c;主要介绍Python xlrd pymysql读取excel文件数据并且将数据插入到MySQL数据库里面。 目录 一、Python读取excel 1.1、安装xlrd库 1.2、打开excel工作簿 1.3、获取sheet工作表 1.4、操作row数据行 1.5、操作column数据列 1.6、操作单元格 二、读取…

AndroidStudio设计一个计算器

界面设计 activity_calcuator.xml 设计&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto&qu…

处理json 和HttpMessageConverterT

文章目录 简单处理json 和HttpMessageConverter<T>处理JSON-ResponseBody应用案例完成示意图代码应用 处理JSON-RequestBody应用案例说明代码实现 处理JSON-注意事项和细节应用实例:小结 HttpMessageConverter<T>基本说明工作机制简图处理JSON-底层实现(HttpMessag…