字节 技术类 面试 实习
1、自我介绍
2、聊项目(20min)
3、抽象类和接口的区别
相同点:
①都不能被实例化;
②接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
相同点:
①接口只能定义抽象方法不能实现方法,抽象类既可以定义抽象方法,也可以实现方法。
②单继承,多实现。接口可以实现多个,只能继承一个抽象类。
③接口强调的是功能,抽象类强调的是所属关系。
④接口中的所有成员变量 为public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是public abstract 公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。
4、常见的异常有哪些?
【1】编译时异常(checked)
①I/O 异常的根类:IOException
②文件未找到异常:FileNotFoundException
③类未找到异常:ClassNotFoundException
【2】运行时异常(RuntimeException)
①空指针异常:NullPointException
②数组越界异常:ArrayIndexOutOfBoundsException
③强制类型转换异常:ClassCastException
④数字格式化异常:NumberFormatException
⑤输入类型不匹配异常:InputMismatchException
⑥算术运算符异常:ArithmeticException
5、hashmap 的数据结构
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。
JDK1.8之前的HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了节解决哈希碰撞(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在的("拉链法"解决冲突)。
JDK1.8之后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(或者红黑树的边界值,默认为8)并且当前数组的长度大于64时,此时此索引位置上的所有数据改为使用红黑树存储。
6、红黑树结构
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接***衡的。
性质:
①根节点是黑色的
②每个节点不是红色的就是黑色的
③叶节点为黑色(叶节点是指末梢的空节点 Nil
或Null
)
④红色节点不能相连
⑤从任意节点出发,它每一条路径上的黑色节点数目是相同的
7、new 一个 haspmap 怎么写
import java.util.HashMap; // 引入 HashMap 类 HashMap<Integer, String> Sites = new HashMap<Integer, String>();
8、终止线程的方式有几种?
①线程运行结束:程序运行结束,线程自动结束。
②使用自定义标志退出线程:定义一个volatile修饰的关键字,当关键字为true时,while循环退出。
③使用 Interrupt 方法结束线程:使用interrupt方法来中断线程。
④使用 stop 方法终止线程(不推荐-线程不安全)
9、设计模式
10、用两个队列实现一个栈
11、项目中 Redis 主要使用哪些数据类型
12、Redis 的 String 类型最大能存多少
13、Redis 当中的 String 是怎么存的,value 的底层是怎么存的
14、Redis 的 set 更细的类别
15、Redis 主从复制的优点和缺点
16、Redis 的 keys 和 scan
17、Redis 常用指令
18、项目中有打过日志吗?
19、logback 如何实现打印日志
20、时钟表一天,时针和分钟重合多少次,多少次是整点
21、平时怎么学习 Java
22、反问
#软件开发2023笔面经#