](https://img-blog.csdn.net/20170719113100520?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzgzMzYwMjM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别
答案
Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1
Byte是计算机操作数据的最小单位由8位bit组成 取值(-128-127)
Char是用户的可读写的最小单位,在Java里面由16位bit组成 取值(0-65535)
Bit 是最小单位 计算机 只能认识 0或者1
8个字节 是给计算机看的
字符 是看到的东西 一个字符=二个字节
2.什么是流,按照传输的单位,分成哪两种流,并且他们的父类叫什么流是指数据的传输
答案
字节流,字符流
字节流:InputStream OutputStream
字符流:Reader Writer
3.流按照传输的方向可以分为哪两种,分别举例说明
答案
输入输出相对于程序
输入流InputStream
,输出流OutputStream
4.按照实现功能分为哪两种,分别举例说明
答案
节点流,处理流
节点流:OutputStream
处理流: OutputStreamWriter
5.BufferedReader属于哪种流,它主要是用来做什么的,它里面有那些经典的方法
答案
属于处理流中的缓冲流,可以将读取的内容存在内存里面,有readLine()方法
6.什么是节点流,什么是处理流,它们各有什么用处,处理流的创建有什么特征
答案
节点流 直接与数据源相连,用于输入或者输出
处理流:在节点流的基础上对之进行加工,进行一些功能的扩展
处理流的构造器必须要 传入节点流的子类
7.如果我要对字节流进行大量的从硬盘读取,要用那个流,为什么
答案
BufferedInputStream 使用缓冲流能够减少对硬盘的损伤
8.如果我要打印出不同类型的数据到数据源,那么最适合的流是那个流,为什么
答案
Printwriter 可以打印各种数据类型
9.怎么样把我们控制台的输出改成输出到一个文件里面,这个技术叫什么
答案
SetOut(printWriter,printStream)重定向
11.怎么样把输出字节流转换成输出字符流,说出它的步骤
答案
使用 转换处理流OutputStreamWriter 可以将字节流转为字符流
New OutputStreamWriter(new FileOutputStream(File file));
12.把包括基本类型在内的数据和字符串按顺序输出到数据源,或者按照顺序从数据源读入,一般用哪两个流
答案
DataInputStream DataOutputStream
13.把一个对象写入数据源或者从一个数据源读出来,用哪两个流
答案
ObjectInputStream ObjectOutputStream
14.什么叫对象序列化,什么是反序列化,实现对象序列化需要做哪些工作
答案
对象序列化,将对象以二进制的形式保存在硬盘上
反序列化;将二进制的文件转化为对象读取
实现serializable接口
不想让字段放在硬盘上就加transient
15.如果在对象序列化的时候不想给一个字段的数据保存在硬盘上面,采用那个关键字?
答案
transient关键字
16.在实现序列化接口是时候一般要生成一个serialVersionUID字段,它叫做什么,一般有什么用
答案
是版本号,要保持版本号的一致 来进行序列化
为了防止序列化出错
17.InputStream里的read()返回的是什么,read(byte[] data)是什么意思,返回的是什么值
答案
返回的是所读取的字节的int型(范围0-255)
read(byte [ ] data)将读取的字节储存在这个数组
返回的就是传入数组参数个数
Read 字节读取字节 字符读取字符
18.OutputStream里面的write()是什么意思,write(byte b[], int off, int len)这个方法里面的三个参数分别是什么意思
答案
write将指定字节传入数据源
Byte b[ ]是byte数组
b[off]是传入的第一个字符
b[off+len-1]是传入的最后的一个字符
len是实际长度
19.流一般需要不需要关闭,如果关闭的话在用什么方法,一般要在那个代码块里面关闭比较好,处理流是怎么关闭的,如果有多个流互相调用传入是怎么关闭的?
答案
流一旦打开就必须关闭,使用close方法
放入finally语句块中(finally 语句一定会执行)
调用的处理流就关闭处理流
多个流互相调用只关闭最外层的流
20.Java中的所有的流可以分为几大类,它们的名字是什么,各代表什么
答案
分为 字节输入流 InputStream
字节输出流 OutputStream
字符输入流 Reader
字符输出流 Writer
所有流都是这四个流的子类
说下常用的io流
Icon
InputStream,OutputStream,
FileInputStream,FileOutputStream,
BufferedInputStream,BufferedOutputStream
Reader,Writer
BufferedReader,BufferedWriter
21 写一段代码读取一个序列化的对象一般使用哪种Stream?
Icon
A、InputStream B、FileReader C、DataInputStream D、ObjectStream
22 io流怎样读取文件的?
Icon
使用File对象获取文件路径,通过字符流Reader加入文件,使用字符缓存流BufferedReader处理Reader,再定义一个字符串,循环遍历出文件。代码如下:
File file = new File(“d:/spring.txt”);
try {
Reader reader = new FileReader(file);
BufferedReader buffered = new BufferedReader(reader);
String data = null;
while((data = buffered.readLine())!=null){
System.out.println(data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
23 说说你对io流的理解
Icon
Io流主要是用来处理输入输出问题,常用的io流有InputStream,OutputStream,Reader,Writer等
24 JAVA的IO流和readLine方法
Icon
Java的io流用来处理输入输出问题,readLine是BufferedReader里的一个方法,用来读取一行。
25 用什么把对象动态的写入磁盘中,写入要实现什么接口。
Icon
ObjectInputStream,需要实现Serializable接口
26 FileInputStream 创建详情,就是怎样的创建不报错,它列出了几种形式!
Icon
FileInputStream是InputStream的子类,通过接口定义,子类实现创建FileInputStream,
27 用io流中的技术,指定一个文件夹的目录,获取此目录下的所有子文件夹路径
28 请问你在什么情况下会在你得java代码中使用可序列化? 如何实现java序列化?
Icon
把一个对象写入数据源或者从一个数据源读出来,使用可序列化,需要实现Serializable接口

Java 基础高频面试题(2021年最新版)

万次阅读多人点赞2021-03-31 23:39:26
最新 Java 基础高频面试题
微信搜索【程序员囧辉】,关注这个坚持分享技术干货的程序员。
网上的 Java 基础面试题文章有非常多,但是大部分都比较老了。
很多题目早已不是当前的热门题目,没有必要在这些题目上花太多时间。
很多答案放现在已经不准确,可能会误导新人。
因此,我花了几天时间整理了一些时下高频的 Java 基础题目,并反复斟酌,给出符合当前版本的解析。
我的最新文章:BAT 老兵的经验之谈,成长路上这个道理越早知道越好
面试系列
我自己前前后后加起来总共应该参加了不下四五十次的面试,拿到过几乎所有一线大厂的 offer:阿里、字节、美团、快手、拼多多等等。
每次面试后我都会将面试的题目进行记录,并整理成自己的题库,最近我将这些题目整理出来,并按大厂的标准给出自己的解析,希望在这金三银四的季节里,能助你一臂之力。
面试文章持续更新中... ...

内容链接地址
面试经验分享921天,从小厂到入职阿里
两年Java开发工作经验面试总结
4 年Java 经验,阿里网易拼多多面试总结、心得体会
5 年Java 经验,字节、美团、快手核心部门面试总结(真题解析)
复习2个月拿下美团offer,我都做了些啥
如何准备好一场大厂面试
简历如何写一份让 HR 眼前一亮的简历(附模板)
Offer 选择跳槽,如何选择一家公司
Java 基础Java 基础高频面试题(2021年最新版)
一道有意思的“初始化”面试题
集合(HashMap)Java 集合框架高频面试题(2021年最新版)
面试阿里,HashMap 这一篇就够了
并发编程面试必问的线程池,你懂了吗?
面试必问的CAS,你懂了吗?
全网最硬核的 synchronized 面试题深度解析
MySQL面试必问的 MySQL,你懂了吗?
MySQL 8.0 MVCC 核心原理解析(核心源码)
Spring面试必问的 Spring,你懂了吗?
Mybatis面试题:mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的?
Redis全网最硬核 Redis 高频面试题解析(2021年最新版)
面试必问的缓存使用:如何保证数据一致性、缓存设计模式
面试必问的 Redis:Memcached VS Redis
面试必问的 Redis:高可用解决方案哨兵、集群
面试必问的 Redis:主从复制
面试必问的 Redis:RDB、AOF、混合持久化
面试必问的 Redis:数据结构和基础概念
JVM面试必问的 JVM 类加载机制,你懂了吗?
面试必问的 JVM 运行时数据区,你懂了吗?
Java虚拟机面试题精选(二)
Java虚拟机面试题精选(一)
分布式面试必问的分布式锁,你懂了吗?
算法位图法:判断一个数是否在40亿个整数中?

正文

1、面向对象的三个基本特征?

面向对象的三个基本特征是:封装、继承和多态。
继承:让某个类型的对象获得另一个类型的对象的属性的方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
封装:隐藏部分对象的属性和实现细节,对数据的访问只能通过外公开的接口。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
多态:对于同一个行为,不同的子类对象具有不同的表现形式。多态存在的3个条件:1)继承;2)重写;3)父类引用指向子类对象。
举个简单的例子:英雄联盟里面我们按下 Q 键这个动作:
对于亚索,就是斩钢闪对于提莫,就是致盲吹箭对于剑圣,就是阿尔法突袭
同一个事件发生在不同的对象上会产生不同的结果。
我再举一个简单的例子帮助大家理解,这个例子可能不是完全准确,但是我认为是有利于理解的。