java常见面试题(八股文)

1.接口和抽象类的区别?

  1. 默认方法实现:抽象类有默认方法实现,接口没有
  2. 实现方式:抽象类通过extend继承,接口通过implement实现
  3. 实现个数:接口可以多实现,抽象类只能单继承
  4. main方法:抽象类可以有main方法,接口中不能有main方法
  5. 构造函数:抽象类有构造函数,接口没有
  6. 访问修饰符:抽象类可以任何修饰符,接口默认修饰符为public

2.&和&&的区别?

&和&&都是Java的基本运算符,表示逻辑运算符与(and),当表达式两边都为true时,表达式为true,当表达式一方为false时,整个表达式为false,&&还具有短路功能即表达式一方为false时其他表达式不计算,整个表达式为false,&无论第一个表达式是否为false第二个表达式都将进行计算

3.java中的Io流分为几类?

按照功能分为:输入流和输出流

按照类型分为:字节流和字符流

4.字节流和字符流的区别?

字节流的基本单元为字节

字符流的基本单元为unicode码元

字节流默认不使用缓冲区

字符流使用缓冲区

字节流通常读取二进制的数据,实际上它可以处理任何类型数据,但它不支持直接读取和写入unicode码元

字符流可以处理文本数据类型,支持读取和写入unicode码元

5.BIO ,NIO ,AIO的区别?

BIO:同步阻塞io,我们所说的传统io,特点是模式使用简单,处理并发能力低

NIO:同步非阻塞io,bio的升级,客户端和服务器端通过channel通讯,实现多路复用

AIO:异步非阻塞io,nio的升级又称nio2,异步io的操作基于事件和回调机制

6.Files的常用方法?

  1. files.read ()读取文件
  2. files.copy () 复制文件
  3. files.createfiles ()创建文件
  4. files.createdirectory ()创建文件夹
  5. files.move ()移动文件
  6. files.delete()删除文件
  7. files.size()获取文件个数
  8. files.write()写文件
  9. files.exists()检查文件是否存在

7.常见的数据结构?

1.线性结构

数组类型

链表

2.栈和队列

3.数和二叉树

二叉树的概念

二叉查找树

平衡二叉树

红黑树

8.java容器有哪些?

Java容器分为collection和map两大类

collection:

list,linkedlist ,arraylist,vector,stack

set, hashset,treeset,linkedhashset

map:

hashmap ,treemap,linkedhashmap,hashtable

9.collection和collections的区别?

collection是一个集合接口,提供了对集合对象进行操作的基本通用接口方法,所有的集合对象都是他的子类,例如list和set

collections是一个包装类,包含很多静态方法,不能被实例化,就像是一个工具类提供了排序,集合反转复用等方法

10.List,set,map之间有什么区别?

List,set,map是Java的集合三大类,都是接口都有位于java.util中。它们有各自的实现类,set的实现类是hashset和treeset,list的实现类是arraylist,map的实现类是hashmap 和treemap

set中的对象无需,不允许重复,但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator<Type>接口来自定义排序方式。

List中的对象有序,可重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。

Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值