一、Java基础

☞ JDK和JRE有什么区别?
  • Java程序设计语言,Java虚拟机,Java API类库统一称为JDK(Java development kit),是用于支持Java程序开发的最小环境
  • Java虚拟机,Java SE API类库称为JRE(Java runtime environment);是Java程序运行的最小环境
☞ ==和equals的区别是什么?
==解读
  • 基本类型,==比较的是值是否相同
  • 引用类型,==比较的是引用是否相同
equals()解读

equals()本质是==,对于String和Integer等类,其内部重写了equals()方法,使之比较值是否相等;如果不重写,默认使用Object的equals()方法,比较是否指向同一个引用

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

不对;“通话”和“重地”的hashCode相同,但是equals显然不同;

public static void main(String[] args) {
	String s4="通话", s5="重地";
	System.out.println("s4:"+s4.hashCode()+", s5:"+s5.hashCode()+", s4与s5的equals结果:"+s4.equals(s5));
}

结果:

s4:1179395, s5:1179395, s4与s5的equals结果:false
☞ final在java中有什么作用?
  • final修饰类,该类不可被继承
  • final修饰方法,该类不可被重写
  • final修饰字段,该字段是常量,需要初始化,并且不可修改
☞ java中的Math.round(-1.5)等于多少?

等于-1;

  • Math.floor():向下取整
  • Math.ceil():向上取整
  • Math.round():四舍五入
☞ String属于基础的数据类型吗?

String是引用类型,不属于基本类型;Java中8种基本类型为:byte,boolean,char,short,int,long,float,double

☞ java中操作字符串都有哪些类?它们之间有什么区别?

String,StringBuilder,StringBuffer

  • String

String创建的是不可变的对象,每次操作都会创建新的对象;在Java中无论使用何种方式进行字符串连接,实际上都使用的是StringBuilder

  • StringBuilder和StringBuffer

StringBuilder和StringBuffer都在原对象的基础上操作;StringBuilder线程不安全,但是性能强于StringBuffer;StringBuffer的线程安全机制基于synchronized

☞ String str="i"与String str=new String(“i”)一样吗?

不一样;使用str="i"这种形式jvm会将其分配到常量池中;使用new的形式,会将其分配在堆内存中

☞ 如何将字符串反转?

StringBuild或StringBuffer的reverse()方法

☞ String类的常用方法都有那些?
  • indexOf()
  • charAt()
  • valueOf()
  • length()
☞ 抽象类必须要有抽象方法吗?

不一定;抽象类使用abstract修饰,内部不一定有抽象方法;但是内部有抽象方法的类,必须是抽象类

☞ 普通类和抽象类有哪些区别?
  • 普通类中不能包含抽象方法,抽象类中可以包含抽象方法
  • 普通类可以实例化,抽象类不能实例化
☞ 抽象类能使用final修饰吗?

抽象类是用来继承的,不能使用final修饰;final修饰的类不能被继承

☞ 接口和抽象类有什么区别?
  • 继承于实现:抽象类的子类使用extends来继承;接口的实现类使用implements来实现
  • 构造方法:抽象类中可以有构造方法;接口中不能有
  • 访问修饰符:抽象类中的方法可以使用任意的修饰符;接口中的方法默认都是public
☞ java中IO流分为几种?
  • 按功能来分:输入流和输出流
  • 按类型来分:字节流和字符流;字节流按照字节(8位)为单位来传输;字符流按照字符(16位)来传输
☞ BIO、NIO、AIO有什么区别?
  • BIO:block IO,同步阻塞式IO,即传统的阻塞式IO,特点:简单易用,并发处理能力低
  • NIO:new IO,同步非阻塞IO,客户端和服务端使用Channel通信,实现了多路复用
  • AIO:asynchronous IO异步非阻塞IO,实现了异步非阻塞IO,基于事件和回调机制
☞ Files的常用方法都有哪些?
  • Files.exists():检测文件路径是否存在。
  • Files.createFile():创建文件。
  • Files.createDirectory():创建文件夹。
  • Files.delete():删除一个文件或目录。
  • Files.copy():复制文件。
  • Files.move():移动文件。
  • Files.size():查看文件个数。
  • Files.read():读取文件。
  • Files.write():写入文件。
☞ jdk乐观锁,悲观锁
  • 乐观锁:假设不会发生并发冲突,在拿数据时认为别人不会修改,只有在写入数据时会判断一下是否被别人更新过;可以利用版本号和CAS锁来实现乐观锁; 数据库提供的write_condition和Java juc包中的atomic包下的都是乐观锁的体现
  • 悲观锁:假设会发生并发冲突,在操作数据时总是会上锁,这样别人在操作数据时只能阻塞直到拿到锁;传统关系型数据库中的表锁,行锁,读写锁,Java中synchronized和Reentrantlock都是利用了悲观锁的思想

参考:面试必备之乐观锁与悲观锁

☞ 面向对象的基本原则(六原则一法则)

在这里插入图片描述

三大特性
  1. 封装
  2. 继承
  3. 多态
五大原则
  1. 单一职责原则
  2. 开放封闭原则
  3. 里是替换原则
  4. 依赖倒置原则
  5. 接口分离原则

参考:面向对象三大特性五大原则 + 低耦合高内聚

☞ jdk8新特性
  1. lambda表达式
  2. Stream API(大大简化了集合操作,而且不仅仅局限于集合操作)
  3. 并发

参考:Java 8新特性终极指南

☞ Java中序列化
  • 序列化:将Java对象转为字节序列的过程称为序列化
  • 反序列化:将字节序列转为Java对象的过程称为反序列化

om/LiuYanYGZ/p/6206159.html)

☞ Java中序列化
  • 序列化:将Java对象转为字节序列的过程称为序列化
  • 反序列化:将字节序列转为Java对象的过程称为反序列化

参考:Java 之 Serializable 序列化和反序列化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机网络》文档包含了70个关于计算机网络基础知识的单项选择题,内容涉及互联网起源、网络协议、IP地址、DNS服务、电子邮件、网络拓扑结构、网络设备、网络连接方式、网络速度等多个方面。每个问题后面都提供了正确答案,适合作为学习和测试材料。 ### 适用人群 本文档适合以下人群: - 计算机科学与技术、信息技术、网络工程等专业的在校学生。 - 准备计算机网络相关考试或认证的专业人士。 - 对计算机网络基础知识感兴趣的自学者。 - 信息技术教师,作为教学资源或测试材料。 ### 使用场景及目标 1. **学习测试**:作为学生学习计算机网络理论知识后的测试工具,检验学习效果。 2. **教学辅助**:教师可以用于课堂教学,作为课后作业或课堂小测验,增强学生的理解和记忆。 3. **自学检验**:个人自学者可以通过这些题目检验自己对计算机网络基础知识的掌握程度。 4. **职业发展**:职场人士可以通过学习和测试,提升自己在计算机网络领域的专业能力。 5. **竞赛准备**:适合准备计算机网络相关竞赛的学生,作为强化训练材料。 文档的目标是通过这些精心设计的题目,帮助读者全面了解和掌握计算机网络的基本概念、原理和应用,提高解决实际问题的能力。通过学习和练习,读者将能够更加深入地理解计算机网络的工作原理,为进一步的专业学习或职业发展打下坚实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值