面经总结

看到网上特别多的面经,里边很多问题都不会,有必要总结一下,希望自己能坚持下去,猪猪加油

反射

什么是反射?反射有什么好处
反射的原理?
Java语言在编译之后会生成一个class文件,反射就是通过字节码文件找到其类中的方法和属性等;
反射能否调用类的私有属性和方法
可以通过反射调用类的私有属性和方法,Java的private修饰符不是为了绝对安全设计的,而是对用户常规使用Java的一种约束。就好比饭店厨房门口挂着“闲人免进”的牌子,但是你还是能够通过其他方法进去。从外部对对象进行常规调用时,能够看到清晰的类结构

序列化与反序列化

什么是序列化?什么情况下需要使用序列化?
在Java中,序列化是指将Java对象转换为字节序列的过程,而反序列化是指将字节序列转换为Java对象的过程。其中,字节序列即是二进制数据,可以方便地在网络上传输或存储到本地硬盘中。
序列化的主要作用包括两个方面:
实现网络中对象的传送,即在网络进程间传递对象。
实现内存中对象的持久化,即将对象保存到本地磁盘中。##(这点需要格外留意)
如何实现Java中对象的序列化?
请解释一下Serializable接口的作用
第一步:将需要序列化的对象所属类实现java.io.Serializable标记接口(没有任何抽象方法的接口)。
第二步:在Java程序中使用对象输出流(ObjectOutputStream),通过其writeObject()方法来实现序列化操作。
第三步:在Java程序中使用对象输入出流(ObjectInputStream),通过其readObject()方法来实现反序列化操作。
常见问题:
若对象所属类未实现Serializable接口,则在序列化时会报java.io.NotSerializableException运行时异常。
建议对象所属类在实现Serializable接口的同时,添加serialVersionUID常量。
序列化时,仅对对象的状态(属性值)进行保存,而不管对象的方法。
静态成员数据不能被序列化,因为static代表类的状态。
如何实现自定义序列化策略?
方式一:实现Externalizable接口,并重写WriteExternal(ObjectOutput)和readExternal(ObjectInput)方法。
方式二:根据Externalizable接口的思想,可在实现Serializable接口的基础上,直接添加并实现WriteObject(ObjectOutputStream)和readObject(ObjectInputStream)两个方法。
serialVersionUID常量有什么作用?
保证版本号的一致性。若不显式指定该常量值,Java编译器会自动为其生成一个默认值,该默认值会随着类代码的变动而变动。故当修改类代码时,之前已经序列化的对象在进行反序列化时即会因为版本号的不一致而发生异常。显式指定serialVersionUID,可以使得类的不同版本对序列化兼容,故需确保类的不同版本具有相同的serialVersionUID;

深拷贝和浅拷贝

序列化为什么可以实现深拷贝?
若一个对象的属性引用其他对象,则序列化该对象时引用对象也会同时被序列化,这即是序列化能够实现深拷贝的本质。简单来说就是深拷贝的时候对象的属性跟着对象本身一起完成序列化。
为什么要使用拷贝?
引用拷贝:只是复制对象的引用,所有引用在堆上指向同一块空间
对象拷贝:创建对象本身的一个副本,深拷贝和浅拷贝都属于对象拷贝
深拷贝和浅拷贝区别是什么?
对于基本数据类型的成员变量,无论「浅拷贝」还是「深拷贝」都会直接进行值传递,原对象和新对象的该属性值为两份数据,相互独立,且互不影响。
而对于引用类型的成员变量,「浅拷贝」仅复制该属性的引用而不复制引用所指向的对象,即原对象和新对象的该属性指向的是同一个对象;「深拷贝」则会直接复制该属性所指向的对象,即原对象和新对象的该属性指向的是堆空间中内存地址不同的对象。
如何实现浅拷贝?

如何实现深拷贝?

Object类的clone()方法为什么要声明为protected?
如何理解Clonable接口

分布式事务

什么是Http幂等性?
post不具有幂等性
get delete put具有幂等性

【完美复现】向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与间。 此类控件多应用于需要用户输入日期或间数据的场景,例如日程管理、订单管理或间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值