没有合适的资源?快使用搜索试试~ 我知道了~
面试宝典新版.docx
需积分: 0 1 下载量 118 浏览量
2024-01-02
22:47:05
上传
评论
收藏 1.98MB DOCX 举报
温馨提示
试读
46页
面试宝典新版.docx
资源推荐
资源详情
资源评论
一、JAVA 基础部分
1.1、基础内容【必须】
1. JDK 和 JRE 有什么区别?
JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行
环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环
境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包
含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装
JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
2. 抽象类与接口区别
关键点:抽象类可以有构造方法,接口中不能有构造方法、抽象类中可以有普通成员变量,
接口中没有普通成员变量、一个类可以实现多个接口,但只能继承一个抽象类。
3. == 和 equals 的区别是什么?
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;
equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer
等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
4. Stream 常用方法:
➢ map: 用作类型转换 如把集合里面的字符串转为大写,或者一个对象的集合取几个字段
转为新的对象集合
➢ filter: 过滤 符合条件的集合元素保存下来,不符合条件的去掉
5. final 在 Java 中有什么作用?
final 修饰的类叫最终类,该类不能被继承。
final 修饰的方法不能被重写。
final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
6. String 类的常用方法都有那些?
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。
7. 字符串中 replace 和 replaceAll 的区别?
➢ replace 的第一个参数是 char 和 CharSequence,即可以支持字符和字符串的替换。
➢ replaceAll 的第一个参数是 regex,即基于规则表达式的替换。
8. String, StringBuilder,StringBuffer 三者的区别
String 和 StringBuilder 的本质区别
String 是一个不可改变的字符序列.
StringBuilder 是一个可以改变的字符序列.
常见的字符拼接,该选择谁
推荐使用 StringBuilder,因为拼接的效率高
StringBuilder 和 StringBuffer 的区别
StringBuffer 是线程安全(同步),但是效率低.
StringBuilde 是线程不安全(不同步),但是效率高.
9. JAVA 反射机制提供了什么功能
Java 反射机制提供如下功能:
➢ 在运行时判断任意一个对象所属的类
➢ 在运行时构造任意一个类的对象
➢ 在运行时判段任意一个类所具有的成员变量和方法
➢ 在运行时调用任一个对象的方法
➢ 在运行时创建新类对象
➢ 在使用 Java 的反射功能时,基本首先都要获取类的 Class 对象,再通过 Class 对
象获取其他的对象。
Class Contructor + Field + Method
10. 常见的异常类有哪些?
➢ NullPointerException 空指针异常【少做空判断】
➢ ClassNotFoundException 指定类不存在【包冲突】
➢ NumberFormatException 字符串转换为数字异常【1a23:检查:正则判断,hutool
工具类】
➢ IndexOutOfBoundsException 数组下标越界异常
➢ ClassCastException 数据类型转换异常
➢ FileNotFoundException 文件未找到异常
➢ NoSuchMethodException 方法不存在异常
➢ IOException IO 异常
➢ SocketException Socket 异常
11. Java 中异常处理机制
体系结构
Throwable
Error:严重性错误
Exception:
RuntimeException: 运行时异常
!RuntimeException: 编译时异常
异常的处理方式
总结:逐层上抛,在 springmvc 中使用统一异常处理来处理。
@ControllerAdvice + @ExceptinHandler(xxx.class)
12. Java 中 finally 和 return 执行顺序
(48 条消息) Java 中 finally 和 return 执行顺序_liuhmmjj 的博客-CSDN 博客_finally return 执行
顺序
➢ finally 语句在 return 语句执行之后 return 返回之前执行的
➢ finally 块中的 return 语句会覆盖 try 块中的 return 返回
➢ 如果 finally 语句中没有 return 语句覆盖返回值,那么原来的返回值可能因为 finally 里的
修改而改变也可能不变
➢ try 块里的 return 语句在异常的情况下不会被执行,这样具体返回哪个看情况
➢ 当发生异常后,catch 中的 return 执行情况与未发生异常时 try 中 return 的执行情况完
全一样
13. 常见的基本排序
总结:记住一两个常见的排序【冒泡】,自己百度去
1.2、JVM 虚拟机&类加载
1. Java 内存区域【必须,记住结果】
Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区
域。Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:
程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、元数据区。
JDK8 之前,Hotspot 中方法区的实现是永久代(Perm),JDK8 开始使用元空间
(Metaspace),以前永久代所有内容的字符串常量移至堆内存,其他内容移至元空间,元
空间直接在本地内存分配。
2. JAVA 中垃圾回收机制【记住常见的垃圾回收算法】
什么样的对象会被当做垃圾回收
当一个对象的引用(地址)没有变量去记录的时候,该对象就会成为垃圾对象,并在垃圾
回收器空闲的时候对其进行清扫.
如何检验对象是否被回收
可以重写 Object 类中的 finalize 方法
这个方法在垃圾回收器执行的时候,被回收器自动调用执行的.
怎样通知垃圾回收器回收对象
可以调用 system 类的静态方法 gc().通知垃圾回收器去清理垃圾.
1、标记清除算法
特点: 简单、收集速度快,但会有空间碎片,空间碎片会导致后面的 GC 频率增加。
适合场景:只有小部分对象需要进行回收的,适用于老年代的垃圾回收,因为老年代一般存
活对象会比回收对象要多。
2、标记复制算法
特点:收集速度快,可以避免空间碎片,但是有空间浪费,存活对象较多的情况下复制对象
的过程等会非常耗时,而且需要担保机制。
适合场景: 只有少量对象存活的场景,这也正是新生代对象的特点,所以一般新生代的垃
圾回收器基本都会选择标记复制法。
3、标记整理算法
特点: 相对于标记复制法不会浪费内存空间,相对标记清除法则可以避免空间碎片,但是
速度比其他两个算法慢。
适合场景: 内存吃紧,又要避免空间碎片的场景,老年代想要避免空间碎片问题的话通常
会使用标记整理法。
3. 类加载过程【必须】
加载 -> 验证 -> 准备 -> 解析 -> 初始化:
➢ 加载:
1.获取类的二进制字节流
2.将字节流代表的静态存储结构转化为方法区运行时数据结构,在堆中生成 class 字节
码对象
➢ 验证:连接过程的第一步,确保 class 文件的字节流中的信息符合当前虚拟机的要求,不
会危害虚拟机的安全
➢ 准备:为类的静态变量分配内存并将其初始化为默认值
剩余45页未读,继续阅读
资源评论
qq_41441207
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功