关于 Java 程序员的一些入门级面试题

软引用 VS 弱引用

  • 软引用 在内存不足时回收

  • 弱引用 在垃圾回收时不管内存是否充足都回收

进程和线程的区别

  1. 一个程序至少一个进程, 一个进程最少一个线程
  2. 进程间相互独立, 同一个进程的各线程共享内存, 某个进程内的线程在其他进程中不可见
  3. 操作系统中, 一般把进程作为分配资源的基本单位, 把线程作为独立运行和独立调度的基本单位

java 中 关键字 final 的理解

  1. 变量: 一旦初始化, 变量值就不能修改
  2. 方法: 该方法不能被子类重写 ( override )
  3. : 该类不能派生子类
    比如 public final class String extends Object

java 中 finally 关键字

finally 常于 trt/catch 语句块配对使用, 即使有异常抛出, 也能确保某段代码一定能执行。

finally 常用于关闭流资源或者数据库连接等。

overload 和 override 的区别

  1. overload 重载, 是指两个方法的名称相同, 但参数类型或者个数不同, 即方法的签名不同。注意:方法的返回值不能作为其签名

  2. override 重写, 是指某个方法与父类的方法拥有相同的名称和函数签名。比如实现某个接口, 需要进行 override 其中的抽象方法

equal() 和 hashCode() 理解

  • equal() 相等, hashCode() 必定相同

原因:

java按照hashCode来访问小内存块,所以hashCode必须相等。

HashMap获取一个对象是比较key的hashCode相等和equal为true。

HashMap比较对象时先通过hashcode缩小范围,然后再使用equal方法比较是否相等


但是 hashCode() 相同, 未必 equal() 相等

原因:

比如对象 A 和 对象 B 有 id 和 name, hashCode 按照name 来计算, 但是 equal 按照 id来进行比较. 可能出现 name 相同, id 不同的情况. (公司员工同名同姓的情况). 这时候 hashCode 相同, equal 不同

java interface 接口 成员函数 可以是 private 吗

成员函数只有声明, 没有方法体, 自动都是 public 修饰的 (我们 code 时候 可以省去)

成员变量默认都是静态变量 static final

interface 和 抽象类

抽象类更相当于 is-a (是不是) 的关系 。接口是 has-a (有没有)的关系

比如抽象类 Bird 和 Plane 表示鸟、飞机,可以继承它们实现更具体的鸟(老鹰、麻雀等),更具体的飞机(直升机、战斗机)。

用 Fly 表示接口,一组抽象的飞行行为,不能设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。

Collection和Collections的区别

java.util.Collection 和 java.util.Collections

Collection 是接口
The root interface in the collection hierarchy. A collection represents a group of objects,


Collections 里面包含了一些 处理 集合的静态方法
This class consists exclusively of static methods that operate on or return collections.

HashSet, TreeSet 和 LinkedHashSet 的区别

HashSet无序


LinkedHashSet 按照 插入顺序 排序
使用链表维护元素的次序。


TreeSet是SortedSet接口的唯一实现类,有序

TreeSet支持两种排序方式,自然排序 或者 定制排序

Comparable Comparator 区别

java.lang.Comparable 和 java.util.Comparator

从英文名字也可以看出, Comparable是一种 able, 表示该对象可以比较, 是 对象自身的属性

其中要Override的方法 compareTo

compareTo 是 同种对象 之间 比较


Comparator是一个名词, 如果一个对象没有实现 Comparable 时, 就要外部实现 一个 单独的 Comparator 接口, 传递给 sort 方法]

其中要Override的方法 是 compare

compare 像是 外部 对两个对象比较


sort(Object[]), 所有对象都必须实现Comparable接口,它用来确定对象之间的大小关系

sort(Object[], Comparator) 对象不必实现Comparable接口, 各个对象根据 Comparator 确定大小关系

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值