2021Java面试-基础篇

文章目录
  • 前言
  • 一: Java概述
    • 1、何为编程
    • 2、JDK1.5之后的三大版本
    • 3、JVM,JRE和JDK的关系
    • 4、什么是跨平台?原理是什么
    • 5、Java语言有哪些特点
    • 6、什么是字节码?采用字节码的最大好处是什么
    • 7、什么是Java程序的主类?应用程序和小程序的主类有何不同
    • 8、Java应用程序与小程序之间有哪些差别
    • 9、Java和C++的区别
    • 10、Oracle JDK 和 OpenJDK的对比
  • 二:基础语法
    • 数据类型
      • 11、Java有哪些数据类型
      • 12、switch是否能作用在byte上,是否能作用在Long上,是否能作用在String上
      • 13、用最有效率的方法计算2乘8
      • 14、Math.round(11.5)等于多少?Math.round(-11.5)等于多少
      • 15、float=3.4是否正确
      • 16、short s1=1;s1=s1+1;有错吗?short s1=1;s1+=1;有错吗?
    • 编码
      • 17、Java语言采用何种编码方案?有何特点
    • 注释
      • 18、什么是Java注释
    • 访问修饰符
      • 19、访问修饰符public,private,protected,以及不写(默认)时的区别
    • 运算符
      • 20、&和&&的区别
    • 关键字
      • Java有没有goto
      • final有什么用
      • final finally finalize区别
      • this关键字的用法
      • supper关键字的用法
      • this与supper的区别
      • static存在的主要意义
      • static的独特之处
      • static应用场景
      • static注意事项
    • 流程语句
      • break continue return的区别以及作用
      • 在Java中,如何跳出当前的多重嵌套循环
  • 三:面向对象
    • 面向对象概述
      • 面向对象和面向过程的区别
    • 面向对象三大特性
      • 面向对象的特征有哪些
      • 什么是多态机制?Java语言是如何实现多态的
      • 面向对象五大基本原则是什么
  • 总结

前言

初衷:
在接到面邀请之后,面试过程就变成面试官筛选优秀面试者最重要的途径之一。在本人为数不多的面试经历总结后发现,面试提问一般分为两部分,第一是项目经历,第二是技术提问。项目经历就要求面试者熟悉项目所用到的技术以及自己所负责的模块,而剩下百分之九十的时间都是在技术提问。基于以上原因,本人计划搜罗网上优秀且全面的面试题库,用自己理解的话再叙述出来,用于自身成长。

2021-4-29
在两个月前开始写JAVA面试基础篇,中途要备考所以搁浅了。刚刚看到浏览量达到了六百多,我想大家对这方面的需求应该是挺大了,所以决定继续下下去。


提示:以下是本篇文章正文内容,下面案例可供参考

一: Java概述

1、何为编程

编程就是让计算机为解决某个问题而使用某种程序设计语言编写代码,最终得到结果的过程。

2、JDK1.5之后的三大版本

  • Java SE (J2SE 标准版)
    以前称为J2SE,它允许开发和部署在桌面,服务器,嵌入式和实施环境中使用的Java应用程序,Java SE包含了支持Java Web服务开发的类,并为Java EE和Java ME提供基础。
  • Java EE(J2EE 企业版)
    以前称为J2EE,在Java SE的基础上构建的,提供Web服务,组件模型,管理和通信API,可以用来实现企业级的面向服务体系结构和Web2.0应用程序
  • Java ME(J2ME 微型版)
    以前称为J2ME,为移动设备和嵌入式设备(比如手机,PDA,电视机顶盒和打印机)上运行的应用程序提供的环境。

3、JVM,JRE和JDK的关系

  • JVM
    Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。
  • JRE
    Java的运行环境,JRE包含JVM。核心类库主要是Java.lang包:包含了Java程序必不可少的系统类,如基本数据类型,基本数学函数,字符串处理,线程,异常处理类等,系统缺省加载这个包
    :缺省,即系统默认状态,意思与“默认”相同。
  • JDK
    Java的开发工具,包含JRE,JVM。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等

4、什么是跨平台?原理是什么

跨平台是值Java语言编写的程序一次编译后,可以在多个系统平台上运行
原理:Java程序是通过Java虚拟机在系统平台上运行的,只要该系统可以安装相应的Java虚拟机,该系统就可以运行Java程序

5、Java语言有哪些特点

  • 面向对象(封装,继承,多态)
  • 跨平台
  • 支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)
  • 支持多线程(多线程机制使应用程序在同一个时间并行执行多任务项)
  • 健壮性(Java语言的强类型机制,异常处理,垃圾的自动回收机制)
  • 安全性

6、什么是字节码?采用字节码的最大好处是什么

字节码:java源代码经过虚拟机编译后产生的class.文件,它不需要面向任何特定的处理器,只面向虚拟机。
采用字节码的好处:字节码在一定程度上解决传统解释型语言执行效率低的问题,同时又保留了解释型语言可以移植的特点。而且由于字节码并不专对一种特定的机器,因此Java程序无需重新编译便可在多种不同的计算机上运行
解释Java中的编译器和解释器:
Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。

Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。

7、什么是Java程序的主类?应用程序和小程序的主类有何不同

一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中这个主类是指包含main()方法的类
而Java小程序中,这个主类是一个继承自系统类JApplet或Applat的子类。
应用程序的主类不一定要求是public类,但小程序的主类要求必须是public.主类是Java程序执行的入口点。

8、Java应用程序与小程序之间有哪些差别

应用程序是从主线程启动(也就是main()方法)
applet小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟flash的小游戏类型。

9、Java和C++的区别

  • 都是面向对象语言,都支持封装,继承,多态
  • Java不提供指针来直接访问内存,程序内存更加安全
  • Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以
  • Java有自动内存管理机制,,不需要程序员手动释放无用内存

10、Oracle JDK 和 OpenJDK的对比

  • Oracle JDK 版本每三年发布一次,而Open JDK版本是每三个月发布一次
  • Open JDK是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的
  • Oracle JDK比Open JDK更稳定
  • 在响应性和JVM性能方面,Oracle JDK和OpenJDK性能更好
  • Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新版本获得支持来获取最新版本
  • Oracle JDK根据二进制代码许可协议获取认可,而OpenJDK根据GPL v2许可获得许可

二:基础语法

数据类型

11、Java有哪些数据类型

定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配不同大小的内存空间
分类

  • 基本数据类型
    • 数值型
      • 整数类型(byte,short,int,long)
      • 浮点类型(float,double)
    • 字符型(char)
    • 布尔型(boolean)
  • 引用数据类型
    • 类(class)
    • 接口(interface)
    • 数组([])
      Java基本数据类型图
      记忆
      顺口溜:
      2b是一个字节 (byte和boolean)
      cs是两个字节 (char和short)
      long和double当最大
      剩下只有int和float是个四
12、switch是否能作用在byte上,是否能作用在Long上,是否能作用在String上
  • Java5以前,switch(expr)只能是byte,short,char,int。
  • Java5开始,Java中引入枚举,expr也可是枚举
  • Java7开始。expr可以是字符串,但长整型long在目前版本都不可以
13、用最有效率的方法计算2乘8

2<<3 (左移3位相当于乘2的3次方,右移3位相当于除以2的3次方)

14、Math.round(11.5)等于多少?Math.round(-11.5)等于多少

方法:四舍五入下进行取整 Math.round(11.5)返回值是12 , Math.round(-11.5)是-11

15、float=3.4是否正确

错,应该是float=3.4F

16、short s1=1;s1=s1+1;有错吗?short s1=1;s1+=1;有错吗

第一个需要强制类型转换,由于1是int类型,因此S1+1运算结果也是int型,需要强制转换类型
第二个可以正确编译,因为S1+=1;相当于s1=short(s1+1),其中有隐含的强制类型转换

编码

17、Java语言采用何种编码方案?有何特点

Java语言采用Unicode编码标准,Unicode(标准版),它为每个字符制定了一个唯一的数值,因此在任何语言,平台,程序都可以放心使用

注释

18、什么是Java注释

**定义:**用于解释说明程序的文字
分类

  • 单行注释 格式: //注解文字
  • 多行注释 格式: /* 注释文字 */
  • 文档注释 格式: /** 注释文字 */
    注:多行和文档注释都不能嵌套使用

访问修饰符

19、访问修饰符public,private,protected,以及不写(默认)时的区别

运算符

20、&和&&的区别

关键字

Java有没有goto
final有什么用
final finally finalize区别
this关键字的用法
supper关键字的用法
this与supper的区别
static存在的主要意义
static的独特之处
static应用场景
static注意事项

流程语句

break continue return的区别以及作用
在Java中,如何跳出当前的多重嵌套循环

三:面向对象

面向对象概述

面向对象和面向过程的区别

面向对象三大特性

面向对象的特征有哪些
什么是多态机制?Java语言是如何实现多态的
面向对象五大基本原则是什么

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

MapStruct工具类的使用

文章目录 1.简介2.作用2.1 属性拷贝2.2 类型安全2.3 性能高效2.4 自定义转换 3.如何使用3.1 创建一个maven工程项目并引入mapstruct的坐标依赖&#xff1a;3.2 源对象类3.3 目标对象类&#xff08;和源对象类中的字段属性名相同&#xff09;3.4 创建接口SyncMapper&#xff08;…

FPGA| 使用Quartus II报错Top-level design entity ““ is undefined

1、使用FPGA准备点亮LED测试下板子&#xff0c;发现这个报错Error (12007): Top-level design entity "LEDLED" is undefined 工程如上图 报错如下图 2、分析到原因是因为工程名称和顶层模块里面的module名称不一样导致 解决办法&#xff1a;修改module名称和顶层模…

Window获取界面空闲时间

‌GetLastInputInfo‌是一种Windows API函数&#xff0c;用于获取上次输入操作的时间。 该函数通过LASTINPUTINFO结构返回最后一次输入事件的时间。 原型如下 BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii);那么可以利用GetLastInputInfo来得到界面没有操作的时长 uint…

LeetCode - #198 打家劫舍

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

验证工具:SVN版本控制

1-SVN概念 SVN(Subversion)是一种集中式版本控制系统,它用于文件和目录的版本管理,允许多个用户协同工作,同时追踪每个文件和目录的历史修改记录。以下是关于SVN版本控制的详细介绍: 一、SVN的基本概念 仓库(Repository):SVN的仓库是一个集中存储所有文件和目录的地…

【DeepSeek】本地私有化部署 DeepSeek 模型教程

一、引言 DeepSeek 模型是一种强大的语言模型&#xff0c;本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型&#xff0c;避免数据传输到外部带来的安全风险&#xff0c;同时也能根据自身需求进行定制化配置。本教程将详细介绍如何在本地进行 DeepSeek 模型的私有…

【玩转 Postman 接口测试与开发2_016】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(上)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证1 契约测试的概念2 契约测试的工作原理3 契约测试的分类4 DeepSeek 给出的契约测试相关背景5 契约测试在 Postman 中的创建方法6 API 实例的基本用法7 API 实例的类型实…

为什么“记住密码”适合持久化?

✅ 特性 1&#xff1a;应用重启后仍需生效 记住密码的本质是长期存储用户的登录凭证&#xff08;如用户名、密码、JWT Token&#xff09;&#xff0c;即使用户关闭应用、重启设备&#xff0c;仍然可以自动登录。持久化存储方案&#xff1a; React Native 推荐使用 AsyncStorag…

echarts、canvas这种渲染耗时的工作能不能放在webworker中做?

可以将 ECharts、Canvas 等渲染耗时的工作放在 Web Worker 中进行处理。Web Worker 允许在后台线程中运行 JavaScript&#xff0c;从而将计算密集型任务从主线程中分离出来&#xff0c;避免阻塞用户界面。以下是一些关键点&#xff1a; 优势 性能提升&#xff1a;将耗时的渲染…

proxmox通过更多的方式创建虚拟机

概述 作为一名资深运维工程师&#xff0c;我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机&#xff1a; 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…

【分布式架构理论3】分布式调用(2):API 网关分析

文章目录 一、API 网关的作用1. 业务层面&#xff1a;简化调用复杂性2. 系统层面&#xff1a;屏蔽客户端调用差异3. 其他方面&#xff1a; 二、API 网关的技术原理1. 协议转换2. 链式处理3. 异步请求机制1. Zuul1&#xff1a;同步阻塞处理2. Zuul2&#xff1a;异步非阻塞处理 三…

使用线性回归模型逼近目标模型 | PyTorch 深度学习实战

前一篇文章&#xff0c;计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 使用线性回归模型逼近目标模型 什么是回归什么是线性回归使用 PyTorch 实现线性回归模型代码执行结…

20250205——Windows系统基于ollama的DeepSeek-R1本地安装

1、安装ollama 1.1 Windows系统 打开ollama官网链接Download Ollama on Windows&#xff0c;根据自己的系统下载安装包&#xff0c;如果是Windows系统&#xff0c;下载Windows版本。 1.1 Linux系统 &#xff08;这个是因为运行遇到报错了&#xff0c;想自己记录一下解决方法&a…

VSCode中使用EmmyLua插件对Unity的tolua断点调试

一.VSCode中搜索安装EmmyLua插件 二.创建和编辑launch.json文件 初始的launch.json是这样的 手动编辑加上一段内容如下图所示&#xff1a; 三.启动调试模式&#xff0c;并选择附加的进程

java-关键字(final,static)

关键字 final 和 static 是两个常用的关键字&#xff0c;它们分别用于不同的场景&#xff0c;具有不同的作用。 final final 关键字用于表示某个实体是不可变的。它可以应用于变量、方法和类。 final 变量 当 final 用于变量时&#xff0c;表示该变量一旦被初始化后&#…

pytorch基于FastText实现词嵌入

FastText 是 Facebook AI Research 提出的 改进版 Word2Vec&#xff0c;可以&#xff1a; ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码&#xff08;基于中文语料&#xff09;&#xff0c;包含&#xff1…

JVS低代码逻辑引擎多种业务场景触发案例配置:涵盖列表页按钮、表单数据、流程审批、外部API接口调用等

逻辑引擎作为JVS低代码开发套件的核心组件&#xff0c;专注于业务逻辑的快速构建与实现&#xff0c;它扮演着程序配置与执行的核心角色&#xff0c;适用于多样化的应用场景。该逻辑引擎设计灵活&#xff0c;能够通过多种配置方式被触发&#xff0c;以精准响应各类业务需求并实现…

文字加持:让 OpenCV 轻松在图像中插上文字

前言 在很多图像处理任务中,我们不仅需要提取图像信息,还希望在图像上加上一些文字,或是标注,或是动态展示。正如在一幅画上添加一个标语,或者在一个视频上加上动态字幕,cv2.putText 就是这个“文字魔术师”,它能让我们的图像从“沉默寡言”变得生动有趣。 今天,我们…

2024年12月 Scratch 图形化(四级)真题解析 中国电子学会全国青少年软件编程等级考试

202412 Scratch 图形化&#xff08;四级&#xff09;真题解析 中国电子学会全国青少年软件编程等级考试 一、选择题(共10题&#xff0c;共30分) 第 1 题 列表存放全班同学的身高&#xff0c;小猫运行下列程序&#xff0c;下列选项说法正确的是&#xff1f;&#xff08; &#…

基于springboot的在线BLOG博客网

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…