2021Java面试-基础篇

ops/2025/2/6 16:14:23/
文章目录
  • 前言
  • 一: 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.ppmy.cn/ops/156188.html

相关文章

深度学习中,文本分类任务怎么做

一、处理流程 前置步骤&#xff1a; 标注数据得到数据集数据清理&#xff1a;将特殊字符、特殊格式、无效字符去除 正式步骤&#xff1a; 1、分词或分字&#xff1a;英文一般都分词&#xff0c;中文有分词也有分字。分词还是分字取决于你模型的embedding。 2、将字或词编辑ID…

LLM推理--vLLM解读

主要参考&#xff1a; vLLM核心技术PagedAttention原理 总结一下 vLLM 的要点&#xff1a; Transformer decoder 结构推理时需要一个token一个token生成&#xff0c;且每个token需要跟前序所有内容做注意力计算&#xff08;包括输入的prompt和该token之前生成的token&#xf…

浅谈量化感知训练(QAT)

1. 为什么要量化&#xff1f; 假设你训练了一个神经网络模型&#xff08;比如人脸识别&#xff09;&#xff0c;效果很好&#xff0c;但模型太大&#xff08;比如500MB&#xff09;&#xff0c;手机根本跑不动。于是你想压缩模型&#xff0c;让它变小、变快。 最直接的压缩方法…

git基础使用--4---git分支和使用

文章目录 git基础使用--4---git分支和使用1. 按顺序看2. 什么是分支3. 分支的基本操作4. 分支的基本操作4.1 查看分支4.2 创建分支4.3 切换分支4.4 合并冲突 git基础使用–4—git分支和使用 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念…

Linux概述

Linux下开发项目 JavaEE 大数据 Python PHP C/C Go Linux运维工程师 服务器的规划、调试优化&#xff0c;系统的日程监控&#xff0c;故障的处理&#xff0c;对数据的备份和恢复。运维工程师往往管理服务器集群 Linux嵌入式工程师 驱动的开发&#xff0c;嵌入式的系统…

Maven 项目的基本结构

Maven 项目采用了标准的目录结构&#xff0c;旨在统一项目组织方式&#xff0c;提高可维护性&#xff0c;并且让不同的开发人员更容易理解和使用项目。通过遵循约定的目录结构&#xff0c;Maven 可以自动化管理项目的构建过程&#xff0c;并简化构建、测试、部署等任务。 1. M…

【LeetCode 刷题】贪心算法(2)-进阶

此博客为《代码随想录》二叉树章节的学习笔记&#xff0c;主要内容为贪心算法进阶的相关题目解析。 文章目录 135. 分发糖果406. 根据身高重建队列134. 加油站968. 监控二叉树 135. 分发糖果 题目链接 class Solution:def candy(self, ratings: List[int]) -> int:n len…

提示词实践总结

目录 一、要求创建SqlServer表&#xff08;ChatGpt&#xff09; 二、要求生成多层架构代码&#xff08;Cursor&#xff09; 三、要求修改方法返回值类型&#xff08;Cursor&#xff09; 四、要求修改方法入参&#xff08;Cursor&#xff09; 五、复杂的多表关联生成&#…