首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客886950433号
南昌航空大学 Java
发布于江西
关注
已关注
取消关注
@代码界的小白:
Java基础面试高频考点!
精华
本章节主要分享一些Java基础知识在面试中常出现的高频考点,这里给出的是相对比较简略的答案,不过针对面试的回答,这些就足够了,另外就是一定要加入自己的个人理解,不要背书形式的回答。 1.Java语言的三大特性是什么? 回答:Java语言的三大特性分别是封装、继承和多态。 封装是指将对象的属性私有化,提供一些可以访问属性的方法,我们通过访问这些方法得到对象的属性。 继承是指某新类继承已经存在的类,该新类拥有被继承的类的所有属性和方法,并且新类可以根据自己的情况拓展属性或方法。其中新类称为子类,原存在的类被称为父类。 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 注意:Java不支持多继承 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作 多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。【摘自JavaGuide】 在 Java 中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。 2.重载与重写的区别 回答: 重载是发生在同一个类中,具有相同的方法名,但是有不同的参数,参数的个数不一样、参数的位置不一样,这就叫重载,常见的就比如构造方法,有有参构造和无参构造。 重写是发生在当子类继承父类时,对父类中的一些方法根据自己的需求进行重写操作。 3.接口和抽象类的区别是什么? 回答:接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。 抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体。子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。 相同点:(1)都不能被实例化(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。 不同点:(1)接口只有定义,不能有方法的实现,但java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。(3)接口强调特定功能的实现,而抽象类强调所属关系。(4)接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。 (5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。 4.Java中的内部类说一下 回答:内部类有四种,分别是静态内部类、局部内部类、匿名内部和成员内部类 静态内部类:常见的main函数就是静态内部类,调用静态内部类通过“外部类.静态内部类” 局部内部类:定义在方法中的类叫做局部内部类。 匿名内部类:是指继承一个父类或者实现一个接口的方式直接定义并使用的类,匿名内部类没有class关键字,因为匿名内部类直接使用new生成一个对象 5.说一下final关键字的作用 回答:final关键字可以修饰类、方法和属性。 当final修饰类的时候,表明这个类不能被继承。final 类中的所有成员方法都会被隐式地指定为 final 方法。 当final修饰方法的时候,表明这个方法不能被重写。 当final修饰属性的时候,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 6.说一下String,StringBuilder和StringBuffer的区别 String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[],所以 String 对象是不可变的。 StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串char[]value 但是没有用 final 关键字修饰,所以这两种对象都是可变的。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。 总结: 操作少量的数据: 适用 String 单线程操作字符串缓冲区下操作大量数据: 适用 StringBuilder 多线程操作字符串缓冲区下操作大量数据: 适用 StringBuffer 7.说一下Java中的==与eaquels的区别 == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)。 eaquels: 情况 1:类没有重写 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况 2:类重写了 equals() 方法。一般,我们都重写 equals() 方法来比较两个对象的内容是否相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。 8.Java访问修饰符有哪些?都有什么区别? 回答:Java中的修饰符有public private protected 1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。 3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。 追问:怎么获取private修饰的变量 回答:private通过反射获取,可以设置setAccessable为true实现 9.Java中的异常体系说一下? 回答:Java中的异常主要分为Error和Exception Error 指Java程序运行错误,如果程序在启动时出现Error,则启动失败;如果程序运行过程中出现Error,则系统将退出程序。出现Error是系统的内部错误或资源耗尽,Error不能在程序运行过程中被动态处理,一旦出现Error,系统能做的只有记录错误的原因和安全终止。 Exception 指 Java程序运行异常,在运行中的程序发生了程序员不期望发生的事情,可以被Java异常处理机制处理。Exception也是程序开发中异常处理的核心,可分为RuntimeException(运行时异常)和CheckedException(检查异常),如下图所示 RuntimeException(运行时异常):指在Java虚拟机正常运行期间抛出的异常,RuntimeException可以被捕获并处理,如果出现此情况,我们需要抛出异常或者捕获并处理异常。常见的有NullPointerException、ClassCastException、ArrayIndexOutOfBoundsException等 CheckedException(检查异常):指在编译阶段Java编译器检查CheckedException异常,并强制程序捕获和处理此类异常,要求程序在可能出现异常的地方通过try catch语句块捕获异常并处理异常。常见的有由于I/O错误导致的IOException、SQLException、ClassNotFoundException等。该类异常通常由于打开错误的文件、SQL语法错误、类不存等引起。 追问:异常的处理方式? 回答:异常处理方式有抛出异常和使用try catch语句块捕获异常两种方式。 (1)抛出异常:遇到异常时不进行具体的处理,直接将异常抛给调用者,让调用者自己根据情况处理。抛出异常的三种形式:throws、throw和系统自动抛出异常。其中throws作用在方法上,用于定义方法可能抛出的异常;throw作用在方法内,表示明确抛出一个异常。 (2)使用try catch捕获并处理异常:使用费try catch 捕获异常能够有针对性的处理每种可能出现的异常,并在捕获到异常后根据不同的情况做不同的处理。其使用过程比较简单:用try catch语句块将可能出现异常的代码抱起来即可。 10.Java中的深拷贝和浅拷贝说一下? 回答:深拷贝和浅拷贝都是对象拷贝 浅拷贝:按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。(浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。) 上图: 两个引用student1和student2指向不同的两个对象,但是两个引用student1和student2中的两个teacher引用指向的是同一个对象,所以说明是浅拷贝。 深拷贝:在拷贝引用类型成员变量时,为引用类型的数据成员另辟了一个独立的内存空间,实现真正内容上的拷贝。(深拷贝把要复制的对象所引用的对象都复制了一遍。) 上图:两个引用student1和student2指向不同的两个对象,两个引用student1和student2中的两个teacher引用指向的是两个对象,但对teacher对象的修改只能影响student1对象,所以说是深拷贝。 摘自:JavaGuide 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。 追问:浅拷贝与深拷贝的特点是什么? 浅拷贝特点 (1) 对于基本数据类型的成员对象,因为基础数据类型是值传递的,所以是直接将属性值赋值给新的对象。基础类型的拷贝,其中一个对象修改该值,不会影响另外一个。(2) 对于引用类型,比如数组或者类对象,因为引用类型是引用传递,所以浅拷贝只是把内存地址赋值给了成员变量,它们指向了同一内存空间。改变其中一个,会对另外一个也产生影响。 深拷贝特点 (1) 对于基本数据类型的成员对象,因为基础数据类型是值传递的,所以是直接将属性值赋值给新的对象。基础类型的拷贝,其中一个对象修改该值,不会影响另外一个(和浅拷贝一样)。(2) 对于引用类型,比如数组或者类对象,深拷贝会新建一个对象空间,然后拷贝里面的内容,所以它们指向了不同的内存空间。改变其中一个,不会对另外一个也产生影响。(3) 对于有多层对象的,每个对象都需要实现 Cloneable 并重写 clone() 方法,进而实现了对象的串行层层拷贝。(4) 深拷贝相比于浅拷贝速度较慢并且花销较大。 注意:后序还会推出《Java面试必知必会》系列,下一章将是Java集合在面试中高频考点,关注我,带你快速掌握Java面试核心考点,记得收藏点赞加关注哦! 推荐阅读Java集合在面试中高频考点
点赞 71
评论 9
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-25 13:05
叮咚买菜_商品运营(准入职员工)
叮咚买菜内推叮咚买菜内推码
管培生面经,一周oc:请简要介绍一下你自己,包括教育背景、实习经历、个人技能和兴趣爱好等。你对叮咚买菜管培生岗位有哪些了解?为什么想申请这个岗位?你对叮咚买菜有多少了解?谈谈你对公司业务模式和企业文化的认识。谈谈你对供应链管理的理解,以及供应链管理在生鲜电商行业中的重要性。如果让你为叮咚买菜策划一次促销活动,你会怎么做?(通用)分析数据对运营管理的作用,你会如何通过数据分析来优化业务? 分享一段你最有成就感的实习或实践经历,你在其中担任什么角色,取得了什么成果?请举例说明你在团队合作中遇到的一次冲突,你是如何解决的?假设你在轮岗期间发现配送流程存在效率低下的问题,你会如何着手解决?管培生工作节...
点赞
评论
收藏
分享
04-27 21:35
小米_前端实习(实习员工)
高频面试题 - 本人亲历大厂面试总结
暑期大厂面了十余次,我把八股里面拷打最多的拿出来总结一下,可以随便看看1. 浏览器渲染流程浏览器渲染浏览器接收url并开启一个新进程(这一部分可以展开浏览器的进程与线程的关系)浏览器解析输入的 URL,提取出其中的协议、域名和路径等信息。(这部分涉及URL组成部分)浏览器向 DNS 服务器发送请求,DNS服务器通过 多层查询 将该 域名 解析为对应的 IP地址 ,然后将请求发送到该IP地址上,与 服务器 建立连接和交换数据。(这部分涉及DNS查询). 浏览器缓存 -> 本地DNS -> 根 -> 顶级 -&...
牛客创作赏金赛
点赞
评论
收藏
分享
03-31 15:04
黑龙江科技大学 Java
每日一绷
牛客10001:
问就是六个月,全国可飞,给钱就干
点赞
评论
收藏
分享
03-12 12:16
西安工业大学 C++
有没有c++开发的大佬帮忙看看简历,目前收到实习只有小厂的,不是很满意不知道现在到底是考研还是继续找实习。
飞花断音:
喜欢香香软软的成都小男生
点赞
评论
收藏
分享
04-27 18:11
老板电器_性能开发岗(准入职员工)
老板电器内推-老板电器内推码
老板电器 数据分析 面经9.24 一面 AI面 15mins1、自我介绍2、对老板电器有什么了解,为这次面试做了什么准备?3、最有成就感的一件事?4、社团学校活动?5、身边人对自己的评价?9.26 二面 2v2 30mins1、自我介绍2、为什么不去互联网公司,来制造业的公司?3、觉得互联网数分和制造业数分各有什么优缺点?4、数据干扰会怎么处理?5、自己有什么特质,能够胜任这份工作?6、期望薪资 全程氛围比较轻松,没有技术问题,感觉更偏向业务真实工作感受~🎈没有职场PUA~ 🎈没有办公室政治~ 🎈没有无缘无故扣工资~ 🎈没有恶性竞争~ 🎈没有穿小鞋~ 🎈没有讨厌的同事~ 谁懂,公...
老板电器二面56人在聊
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
暑期后端高频问题汇总
7.3W
2
...
左手敲代码的程序员,不配拥有offer吗?
6.3W
3
...
五一假期,弯道超车时间表
1.1W
4
...
后端简历上最值得写的项目
1.0W
5
...
北京到底有谁在啊?
9044
6
...
五一别写你那破开源代码了
7627
7
...
五一准备刷完这些面试八股题!!
7452
8
...
和ai聊天,忍不住爆哭
6388
9
...
拼多多服务端信息确认
5932
10
...
快手投诉后续- HR把我拉黑了!
5689
创作者周榜
更多
正在热议
更多
#
设计人如何选offer
#
98436次浏览
690人参与
#
找工作,行业重要还是岗位重要?
#
7890次浏览
103人参与
#
五一之后,实习真的很难找吗?
#
46009次浏览
330人参与
#
盲审过后你想做什么?
#
12724次浏览
113人参与
#
外包能不能当跳板?
#
22204次浏览
191人参与
#
领导秒批的请假话术
#
9995次浏览
74人参与
#
考研可以缓解求职焦虑吗
#
21217次浏览
251人参与
#
五一假期,你打算“躺”还是“卷”?
#
31037次浏览
436人参与
#
找工作前vs找工作后的心路变化
#
7206次浏览
64人参与
#
面试等了一周没回复,还有戏吗
#
115683次浏览
1075人参与
#
硬件人,你被哪些公司给挂了
#
46748次浏览
722人参与
#
安克创新求职进展汇总
#
32585次浏览
415人参与
#
大疆的机械笔试比去年难吗
#
69657次浏览
603人参与
#
应届生薪资多少才合理?
#
3116次浏览
24人参与
#
牛友们的论文几号送审
#
27279次浏览
623人参与
#
写简历别走弯路
#
714571次浏览
7850人参与
#
你喜欢工作还是上学
#
37703次浏览
413人参与
#
如果有时光机,你最想去到哪个年纪?
#
43348次浏览
769人参与
#
如果不工作真的会快乐吗
#
101271次浏览
867人参与
#
每人推荐一个小而美的高薪公司
#
72852次浏览
1357人参与
牛客网
牛客企业服务