JavaSE(基础)高频面试点及 知识点

前言

面试是一个很让我们 头疼的问题,如果要获取一个好的面试结果就需要我们去准备充分

此篇博客为小编总结的一些高频se基础部分面试题 和对应回答答案 方面面试前各位看官老爷可以复习回顾 同时也是小编对Javase的总结 希望会对你有所帮助

1.面向对象编程的三大特性是什么?

1)继承

继承是一种联结类的层次模型,允许和鼓励类的重用,它提供了一种明确表述共性的方法

子类可以从父类那里继承方法和实例变量,并且 可以修改或增加新的方法

继承主要是对共性的一种抽取 关键字extends

2)封装

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面

封装的过程中,类的内部实现对外部是隐藏的,只有通过定义好的接口才能与类的对象进行交互

封装通常是通过将类的字段(属性)设置为私有(private)来实现的

3)多态

多态是指同一消息可以根据发送对象的不同而采用多种不同的行为方式

多态的三个条件:

  1. 继承:子类继承父类或实现接口。

  2. 重写:子类覆盖父类的方法。

  3. 父类声明子类:使用父类引用来声明子类对象

2.String与StringBuffer的区别

String和StringBuffer都是用来存储和操作字符串

但String里字符串数值不可变 而StringBuffer可以动态操作构建字符串

3.final的作用

final用于声明属性方法和类,分别表示属性不可变,方法不可覆盖,类不可继承

4.重载(OverLoad)和重写(Override)的区别

重载是指Java中一个类可以有多种方法名相同的方法,参数个数和类型 以及返回值类型都可以不同

重写指的是子类对父类方法的重新定义,方法名一样 参数一样,返回值一样只是修改方法内部,而且重写子类方法的修饰符必须要大于被重写方法,且抛出异常不能比被重写方法更宽泛

5.error和exception有什么区别

error表示系统出现严重错误,无法通过代码恢复

exception表示程序运行中可捕获并处理的异常

6.abstractClass和interface的区别

1.abstract class 只能使用一个类继承关系,而interface可以被一个类多引用

2.abstract class可以包含具体方法和抽象方法 ,interface只能含有抽象方法

3.abstarct class代表"is a"的设计理念 ,interface代表like a 的设计理念

4.abstarct class 中的成员变量可以被子类修改 定义,interface中的成员变量默认是public static final 必须赋初值,不能被修改和定义

7.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?**

switch只能作用在byte short int long char(狭义)jdk1.7之前不能作用于String 之后可以

8.char类型可不可以存储中文汉字

可以 Java中汉字和英文都是通过unicode编码的 Java中char类型占两个字节

9.Java的基本数据类型有哪些?

Java有八种数据类型:byte short int long,float double,char,boolean

10.JDK与JRE有什么区别?

JDk代表开发组件 Jre代表着运行环境 jdk包含了jre jdk jre jvm三者关系图如下

11.== 和 equals 的区别是什么?

使用==比较基本数据类型时 会比较值是否相等 比较对象时 会比较对象的内存地址是否相等

equals 默认是比较内存地址 但可重写equals方法 比如String中就重写了equals方法 会比较对象内容

12.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

不对 hashCode一样只能说明会在一个哈希桶 中 不一定就代表equal's就一定相同了

比如String类会有无限种组合方式一定会有重复hashCode,内容也肯定不相同

但反过来自定义类equals一样 hashCode方法值必须一样 否则不符合规范 且会导致 集合数据混乱

在 实际开发中,重写equals就必须要重写hashCode来保证equals相同时 hashcode必须相同,避免出现无法预料的错误

13.String str="i"与 String str=new String("i")一样吗?

不一样 JVM中含有计数器 栈 堆 元数据区

第一个数据是放在字符串常量池中,也就是元数据区, 第二个生成类是存储在堆上的

14.nextLine与next的区别

nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的

next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串

两者在使用时

如果nextLine在后面紧跟着使用 此时 就会读取next的enter键 获取到一个空的字符串 nextLine跟next的区别可以按照这个例子去理解 概念很简单 但需实践中去体会哦-

相关推荐
pshdhx_albert2 小时前
AI agent实现打字机效果
java·http·ai编程
沉鱼.443 小时前
第十二届题目
java·前端·算法
Accerlator3 小时前
2026 年 4 月 1 日电话面试
面试·职场和发展
赫瑞3 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
周末也要写八哥4 小时前
多进程和多线程的特点和区别
java·开发语言·jvm
惜茶5 小时前
vue+SpringBoot(前后端交互)
java·vue.js·spring boot
杰克尼6 小时前
springCloud_day07(MQ高级)
java·spring·spring cloud
前端Hardy7 小时前
前端必看!LocalStorage这么用,再也不踩坑(多框架通用,直接复制)
前端·javascript·面试
前端Hardy7 小时前
前端必看!前端路由守卫这么写,再也不担心权限混乱(Vue/React通用)
前端·javascript·面试
NHuan^_^7 小时前
SpringBoot3 整合 SpringAI 实现ai助手(记忆)
java·人工智能·spring boot