巩固 Java 基础,备战来年跳槽——你的薪资自己说了算
相关概念
面向对象的三个特征
封装,继承,多态,这个应该是人人皆知,有时候也会加上抽象。
多态的好处
代码中如何实现多态
虚拟机是如何实现多态的
接口的意义
接口的意义用三个词就可以概括:规范,扩展,回调。
抽象类的意义
抽象类的意义可以用三句话来概括:
为其他子类提供一个公共的类型
封装子类中重复定义的内容
定义抽象方法,子类虽然有不同的实现,但是定义时一致的
接口和抽象类的区别
父类的静态方法能否被子类重写
什么是不可变对象
静态变量和实例变量的区别?
静态变量存储在方法区,属于类所有。实例变量存储在堆当中,其引用存在当前线程栈。
能否创建一个包含可变对象的不可变对象?
java 创建对象的几种方式
switch 中能否使用 string 做参数
switch 能否作用在 byte, long 上?
String s1=”ab”, String s2=”a”+”b”, String s3=”a”, String s4=”b”, s5=s3+s4 请问 s5==s2 返回什么?
你对 String 对象的 intern()熟悉么?
Object 中有哪些公共方法?
equals()
clone()
getClass()
notify(),notifyAll(),wait()
toString
java 当中的四种引用
WeakReference 与 SoftReference 的区别?
为什么要有不同的引用类型
java 中==和 eqauls()的区别,equals()和`hashcode 的区别
equals()和 hashcode()的联系
a.hashCode()有什么用?与 a.equals(b)有什么关系
有没有可能两个不相等的对象有相同的 hashcode
可以在 hashcode 中使用随机数字吗?
a==b 与 a.equals(b)有什么区别
3*0.1==0.3 返回值是什么
a=a+b 与 a+=b 有什么区别吗?
short s1= 1; s1 = s1 + 1; 该段代码是否有错,有的话怎么改?
short s1= 1; s1 += 1; 该段代码是否有错,有的话怎么改?
& 和 &&的区别
首先记住 &是位操作,而 &&是逻辑运算符。另外需要记住逻辑运算符具有短路特性,而 &不具备短路特性。
以上代码将会抛出空指针异常。
一个 java 文件内部可以有类?(非内部类)
只能有一个 public 公共类,但是可以有多个 default 修饰的类。
如何正确的退出多层嵌套循环?
使用标号和 break;
通过在外层循环中添加标识符
内部类的作用
final, finalize 和 finally 的不同之处
clone()是哪个类的方法?
深拷贝和浅拷贝的区别是什么?
static 都有哪些用法?
final 有哪些用法
数据类型相关
java 中 int char,long 各占多少字节?
64 位的 JVM 当中,int 的长度是多少?
int 和 Integer 的区别
int 和 Integer 谁占用的内存更多?
String, StringBuffer 和 StringBuilder 区别
String 和 StringBuffer
StringBuffer 和 StringBuilder
什么是编译器常量?使用它有什么风险?
java 当中使用什么类型表示价格比较好?
如何将 byte 转为 String
可以将 int 强转为 byte 类型么?会产生什么问题?
关于垃圾回收
你知道哪些垃圾回收算法?
垃圾回收从理论上非常容易理解,具体的方法有以下几种:
1. 标记-清除
2. 标记-复制
3. 标记-整理
4. 分代回收
如何判断一个对象是否应该被回收
简单的解释一下垃圾回收
调用 System.gc()会发生什么?
进程,线程相关
说说进程,线程,协程之间的区别
你了解守护线程吗?它和非守护线程有什么区别
什么是多线程上下文切换
创建两种线程的方式?他们有什么区别?
Thread 类中的 start()和 run()方法有什么区别?
怎么检测一个线程是否持有对象监视器
Runnable 和 Callable 的区别
什么导致线程阻塞
阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。
wait(),notify()和 suspend(),resume()之间的区别
产生死锁的条件
为什么 wait()方法和 notify()/notifyAll()方法要在同步块中被调用
wait()方法和 notify()/notifyAll()方法在放弃对象监视器时有什么区别
wait()与 sleep()的区别
为什么 wait, nofity 和 nofityAll 这些方法不放在 Thread 类当中
怎么唤醒一个阻塞的线程
什么是多线程的上下文切换
synchronized 和 ReentrantLock 的区别
FutureTask 是什么
一个线程如果出现了运行时异常怎么办?
Java 当中有哪几种锁
如何在两个线程间共享数据
如何正确的使用 wait()?使用 if 还是 while?
什么是线程局部变量 ThreadLocal
ThreadLoal 的作用是什么?
生产者消费者模型的作用是什么?
写一个生产者-消费者队列
使用阻塞队列来实现
使用 wait-notify 来实现
如果你提交任务时,线程池队列已满,这时会发生什么
为什么要使用线程池
java 中用到的线程调度算法是什么
Thread.sleep(0)的作用是什么
什么是 CAS
什么是乐观锁和悲观锁
ConcurrentHashMap 的并发度是什么?
ConcurrentHashMap 的工作原理
jdk 1.6:
ConcurrentHashMap 是线程安全的,但是与 Hashtablea 相比,实现线程安全的方式不同。Hashtable 是通过对 hash 表结构进行锁定,是阻塞式的,当一个线程占有这个锁时,其他线程必须阻塞等待其释放锁。ConcurrentHashMap 是采用分离锁的方式,它并没有对整个 hash 表进行锁定,而是局部锁定,也就是说当一个线程占有这个局部锁时,不影响其他线程对 hash 表其他地方的访问。
具体实现:ConcurrentHashMap 内部有一个 Segment.
jdk 1.8
在 jdk 8 中,ConcurrentHashMap 不再使用 Segment 分离锁,而是采用一种乐观锁 CAS 算法来实现同步问题,但其底层还是“数组+链表->红黑树”的实现。
CyclicBarrier 和 CountDownLatch 区别
java 中的++操作符线程安全么?
你有哪些多线程开发良好的实践?
关于 volatile 关键字
可以创建 Volatile 数组吗?
volatile 能使得一个非原子操作变成原子操作吗?
volatile 类型变量提供什么保证?
关于集合
Java 中的集合及其继承关系
关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的 List,Map 的原理更该如此.这里我们看这张图即可:
poll()方法和 remove()方法区别?
LinkedHashMap 和 PriorityQueue 的区别
WeakHashMap 与 HashMap 的区别是什么?
ArrayList 和 LinkedList 的区别?
ArrayList 和 Array 有什么区别?
ArrayList 和 HashMap 默认大小?
Comparator 和 Comparable 的区别?
如何实现集合排序?
如何打印数组内容
LinkedList 的是单向链表还是双向?
TreeMap 是实现原理
遍历 ArrayList 时如何正确移除一个元素
什么是 ArrayMap?它和 HashMap 有什么区别?
HashMap 的实现原理
Fail-fast 和 Fail-safe 有什么区别
关于日期
SimpleDateFormat 是线程安全的吗?
如何格式化日期?
关于异常
简单描述 java 异常体系
什么是异常链
throw 和 throws 的区别
关于序列化
Java 中,Serializable 与 Externalizable 的区别
关于 JVM
JVM 特性
简单解释一下类加载器
简述堆和栈的区别
简述 JVM 内存分配
其他
java 当中采用的是大端还是小端?
XML 解析的几种方式和特点
JDK 1.7 特性
JDK 1.8 特性
Maven 和 ANT 有什么区别?
JDBC 最佳实践
IO 操作最佳实践
为了让学习变得轻松、高效!帮助大家在成为架构师的道路上披荆斩棘。
需要全部面试题及答案的朋友们 点击这里 即可啦~~~
同时希望大家获取到之后不要做收藏党!而是能够花一些时间认真看完文档,让它真正发挥出价值来。
评论