logo资料库

Java基础知识面试题(2020最新版).pdf

第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
资料共35页,剩余部分请下载后查看
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 Java基础知识面试题(2020最新版) 原创 ThinkWon 最后发布于2020-02-19 12:11:27 阅读数 7288 收藏 文章目录 Java概述 何为编程 什么是Java jdk1.5之后的三大版本 JVM、JRE和JDK的关系 什么是跨平台性?原理是什么 Java语言有哪些特点 什么是字节码?采用字节码的最大好处是什么 什么是Java程序的主类?应用程序和小程序的主类有何不同? Java应用程序与小程序之间有那些差别? Java和C++的区别 Oracle JDK 和 OpenJDK 的对比 基础语法 数据类型 Java有哪些数据类型 switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上 用最有效率的方法计算 2 乘以 8 Math.round(11.5) 等于多少?Math.round(-11.5)等于多少 float f=3.4;是否正确 short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗 编码 Java语言采用何种编码方案?有何特点? 注释 什么Java注释 访问修饰符 访问修饰符 public,private,protected,以及不写(默认)时的区别 运算符 &和&&的区别 关键字 Java 有没有 goto final 有什么用? final finally finalize区别 this关键字的用法 super关键字的用法 this与super的区别 static存在的主要意义 static的独特之处 static应用场景 static注意事项 流程控制语句 break ,continue ,return 的区别及作用 在 Java 中,如何跳出当前的多重嵌套循环 https://thinkwon.blog.csdn.net/article/details/104390612 1/35
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 面向对象 面向对象概述 面向对象和面向过程的区别 面向对象三大特性 面向对象的特征有哪些方面 什么是多态机制?Java语言是如何实现多态的? 面向对象五大基本原则是什么(可选) 类与接口 抽象类和接口的对比 普通类和抽象类有哪些区别? 抽象类能使用 final 修饰吗? 创建一个对象用什么关键字?对象实例与对象引用有何不同? 变量与方法 成员变量与局部变量的区别有哪些 在Java中定义一个不做事且没有参数的构造方法的作用 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是? 一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么? 构造方法有哪些特性? 静态变量和实例变量区别 静态变量与普通变量区别 静态方法和实例方法有何不同? 在一个静态方法内调用一个非静态成员为什么是非法的? 什么是方法的返回值?返回值的作用是什么? 内部类 什么是内部类? 内部类的分类有哪些 静态内部类 成员内部类 局部内部类 匿名内部类 内部类的优点 内部类有哪些应用场景 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final? 内部类相关,看程序说出运行结果 重写与重载 构造器(constructor)是否可被重写(override) 重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 对象相等判断 == 和 equals 的区别是什么 hashCode 与 equals (重要) 对象的相等与指向他们的引用相等,两者有什么不同? 值传递 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 为什么 Java 中只有值传递 值传递和引用传递有什么区别 Java包 JDK 中常用的包有哪些 import java和javax有什么区别 IO流 https://thinkwon.blog.csdn.net/article/details/104390612 2/35
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 java 中 IO 流分为几种? BIO,NIO,AIO 有什么区别? Files的常用方法都有哪些? 反射 什么是反射机制? 反射机制优缺点 反射机制的应用场景有哪些? Java获取反射的三种方法 网络编程 常用API String相关 字符型常量和字符串常量的区别 什么是字符串常量池? String 是最基本的数据类型吗 String有哪些特性 String为什么是不可变的吗? String真的是不可变的吗? 是否可以继承 String 类 String str="i"与 String str=new String("i")一样吗? String s = new String("xyz");创建了几个字符串对象 如何将字符串反转? 数组有没有 length()方法?String 有没有 length()方法 String 类的常用方法都有那些? 在使用 HashMap 的时候,用 String 做 key 有什么好处? String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的 Date相关 包装类相关 自动装箱与拆箱 int 和 Integer 有什么区别 Integer a= 127 与 Integer b = 127相等吗 常用工具类库 单元测试 日志 Java面试总结汇总,持续更新中… 序号 内容 链接地址 1 2 3 4 5 6 7 8 9 Java基础知识面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390612 Java异常面试题(2020最新版) JVM面试题(2020最新版) Spring面试题(2020最新版) Spring MVC面试题(2020最新版) Spring Boot面试题(2020最新版) Spring Cloud面试题(2020最新版) MyBatis面试题(2020最新版) Redis面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390689 https://thinkwon.blog.csdn.net/article/details/104390752 https://thinkwon.blog.csdn.net/article/details/104397516 https://thinkwon.blog.csdn.net/article/details/104397427 https://thinkwon.blog.csdn.net/article/details/104397299 https://thinkwon.blog.csdn.net/article/details/104397367 https://thinkwon.blog.csdn.net/article/details/101292950 https://thinkwon.blog.csdn.net/article/details/103522351 10 Dubbo面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390006 https://thinkwon.blog.csdn.net/article/details/104390612 3/35
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 内容 Tomcat面试题(2020最新版) ZooKeeper面试题(2020最新版) Netty面试题(2020最新版) 链接地址 https://thinkwon.blog.csdn.net/article/details/104397665 https://thinkwon.blog.csdn.net/article/details/104397719 https://thinkwon.blog.csdn.net/article/details/104391081 序号 11 12 13 Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人 步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。 什么是Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单 征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。 jdk1.5之后的三大版本 Java SE(J2SE,Java 2 Platform Standard Edition,标准版) Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务 并为Java EE和Java ME提供基础。 Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版) Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序 月,Eclipse 宣布正式将 JavaEE 更名为 JakartaEE Java ME(J2ME,Java 2 Platform Micro Edition,微型版) Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活 Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范 只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。 JVM、JRE和JDK的关系 JVM Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。 JRE Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如 型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包 如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。 JDK Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的 编译工具(javac.exe),打包工具(jar.exe)等 JVM&JRE&JDK关系图 https://thinkwon.blog.csdn.net/article/details/104390612 4/35
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 什么是跨平台性?原理是什么 所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。 Java语言有哪些特点 简单易学(Java语言的语法与C语言和C++语言很接近) 面向对象(封装,继承,多态) 平台无关性(Java虚拟机实现平台无关性) 支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的) 支持多线程(多线程机制使应用程序在同一时间并行执行多项任) 健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等) 安全性 什么是字节码?采用字节码的最大好处是什么 字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。 采用字节码的好处: Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比 且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。 先看下java中的编译器和解释器: Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口 只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫 (即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过 后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上 上面提到的Java的特点的编译与解释并存的解释。 1 Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。 什么是Java程序的主类?应用程序和小程序的主类有何不同? https://thinkwon.blog.csdn.net/article/details/104390612 5/35
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主类是指包含main()方法的类。而在Java小程序中,这个主类是一个继承 JApplet或Applet的子类。应用程序的主类不一定要求是public类,但小程序的主类要求必须是public类。主类是Java程序执行的入口点。 Java应用程序与小程序之间有那些差别? 简单说应用程序是从主线程启动(也就是main()方法)。applet小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌 点跟flash的小游戏类似。 Java和C++的区别 我知道很多人没学过C++,但是面试官就是没事喜欢拿咱们Java和C++比呀!没办法!!!就算没学过C++,也要记下来! 都是面向对象的语言,都支持封装、继承和多态 Java不提供指针来直接访问内存,程序内存更加安全 Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。 Java有自动内存管理机制,不需要程序员手动释放无用内存 Oracle JDK 和 OpenJDK 的对比 1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次; 2. OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的; 3. Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎相同,但Oracle JDK有更多的类和一些错误修复。因此,如果您想开发企 件,我建议您选择Oracle JDK,因为它经过了彻底的测试和稳定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程序崩溃的问 只需切换到Oracle JDK就可以解决问题; 4. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能; 5. Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本; 6. Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。 基础语法 数据类型 Java有哪些数据类型 定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。 分类 基本数据类型 数值型 整数类型(byte,short,int,long) 浮点类型(float,double) 字符型(char) 布尔型(boolean) 引用数据类型 类(class) 接口(interface) 数组([]) Java基本数据类型图 https://thinkwon.blog.csdn.net/article/details/104390612 6/35
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上 在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从 J expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。 用最有效率的方法计算 2 乘以 8 2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。 Math.round(11.5) 等于多少?Math.round(-11.5)等于多少 Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。 float f=3.4;是否正确 不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制 f =(float)3.4; 或者写成 float f =3.4F;。 short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗 对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。 而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换。 编码 Java语言采用何种编码方案?有何特点? Java语言采用Unicode编码标准,Unicode(标准码),它为每个字符制订了一个唯一的数值,因此在任何的语言,平台,程序都可以放心的使用。 注释 什么Java注释 定义:用于解释说明程序的文字 分类 作用 单行注释 格式: // 注释文字 多行注释 格式: /* 注释文字 */ 文档注释 格式:/** 注释文字 */ 在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。注释的内容在程序编译的时候会被忽视, 代码,注释的部分不会对程序的执行结果产生任何影响。 https://thinkwon.blog.csdn.net/article/details/104390612 7/35
2020/2/25 Java基础知识面试题(2020最新版)_数据库_ThinkWon的博客-CSDN博客 注意事项:多行和文档注释都不能嵌套使用。 访问修饰符 访问修饰符 public,private,protected,以及不写(默认)时的区别 定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。 分类 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类) default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。 protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。 public : 对所有类可见。使用对象:类、接口、变量、方法 访问修饰符图 运算符 &和&&的区别 &运算符有两种用法:(1)按位与;(2)逻辑与。 &&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之 运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。 注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。 关键字 Java 有没有 goto goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。 final 有什么用? 用于修饰类、属性和方法; 被final修饰的类不可以被继承 被final修饰的方法不可以被重写 被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的 final finally finalize区别 final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表 示该变量是一个常量不能被重新赋值。 finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块 中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。 finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调 用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的 最后判断。 this关键字的用法 this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 this的用法在java中大体可以分为3种: https://thinkwon.blog.csdn.net/article/details/104390612 8/35
分享到:
收藏