2021Java面试-基础篇

文章目录


前言

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

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提供了大量能使我们快速便捷地处理数据的函数和方法。

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值