2020最后一次Java面试,我去了快手。快手的面试挺有挑战性的,而且还特别有意思,感觉啥都能问到。(二面是10天前约的面试,差点要忘了)然后是HR面,前天我就收到offer。
一面二面啥的我都忘记具体的了,就简单的总结一下
1 基础
- 为什么 Java 中只有值传递?
- int 范围?float 范围?
- hashCode 与 equals,什么关系?
- String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的?
- Java 序列化中如果有些字段不想进行序列化 怎么办?
- 构造器 Constructor 是否可被 override?
- java 异常体系?RuntimeException Exception Error 的区别,举常见的例子
- 字符型常量和字符串常量的区别?
- 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
2 集合
集合这块关注一下 1.8 的实现吧,和 1.7 相比变化了很多
- ArrayList和linkedList的区别?
- 堆是怎么存储的,插入是在哪里?
- HashMap和HashTable的区别?讲一下 hashMap 原理。hashMap 可以并发读么?并发写会有什么问题?
- 集合类存放于 Java.util 包中, 主要有几种接口?
- Array与ArrayList有什么不一样?简单介绍下 ArrayList 怎么实现,加操作、取值操作,什么时候扩容?
- 说说ConcurrentHashMap?头插法还是尾插法?扩容怎么做?
- 集合在迭代的过程中,插入或删除数据会怎样?
3 并发
- notify()和notifyAll()有什么区别?
- volatile 是什么?可以保证有序性吗?
- 为什么wait, notify 和 notifyAll这些方法不在thread类里面?
- SynchronizedMap和ConcurrentHashMap有什么区别?
- 什么是线程安全?Vector是一个线程安全类吗?
- 线程进程和线程的区别?并行和并发的区别?了解协程么?进程间如何通信:进程 A 想读取进程 B 的主存怎么办?线程间通信?线程的生命周期有哪些状态?怎么转换?wait 和 sleep 有什么区别?什么情况下会用到 sleep?怎么停止线程?怎么控制多个线程按序执行?
- 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗?synchronized关键字最主要的三种使用方式
- 为什么要用 join()方法?
- 什么是多线程中的上下文切换?
- 死锁与活锁的区别,死锁与饥饿的区别?
- Java 中用到的线程调度算法是什么?
- 什么是原子操作&#x