Java|成功拿到大厂offer的我熬夜整理了这份Java高频面试题(含答案)


Java|成功拿到大厂offer的我熬夜整理了这份Java高频面试题(含答案)
文章图片
Java|成功拿到大厂offer的我熬夜整理了这份Java高频面试题(含答案)
文章图片
Java|成功拿到大厂offer的我熬夜整理了这份Java高频面试题(含答案)
文章图片
今日分享开始啦 , 请大家多多指教~
Throw 和 throws 的区别?throws 用在方法定义上 , 后面跟着的是异常类 , 可以多个 。
而 throw 用在方法内部 , 后面跟着的是异常对象 。
throws 表示这个方法可能会抛出哪些异常 , 这样调用者可以知道这个方法会抛出什么异常 , 可以提前进行预处理; throw 表示要抛出什么异常对象 , throw 后面的语句不会被执行到 , 会将异常抛出到调用者 。
throws 和 throw 都不处理异常 , 而是将抛出或者可能抛出异常 , 由调用者去处理异常 。
获取 Class 对象有哪些方法?
调用对象的 getClass() 方法来获取 。
Person person = new Person();
Class<? extends Person> aClass = person.getClass();
调用类的 class 属性来获取 。
Class<Person> personClass = Person.class;
调用 Class 类的 forName() 静态方法来获取 , 比较常用 , 也是性能最好的 。
Class<?> aClass = Class.forName(\"com.chenpi.Person\");
【Java|成功拿到大厂offer的我熬夜整理了这份Java高频面试题(含答案)】什么是 Java 反射机制?
Java 反射机制是在运行期 , 对于任意一个类 , 都能够获得这个类的所有属性和方法 。 对于任意一个对象都能够调用它的任意一个属性和方法 。 这种在运行时动态地获取信息以及动态调用对象的方法的功能称为 Java 的反射机制 。
我们知道 , 程序运行时 , 允许改变程序结构或变量类型的语言称为动态语言 。 例如 Python , Ruby等是动态语言 。 而 Java 不是动态语言 , 但是 Java 的反射机制让它成为准动态语言 。 反射允许静态语言在运行时检查 , 修改程序的结构与行为 。
final 的作用?final 修饰类时 , 说明这个类不能被继承 。 如果你希望一个不要被继承 , 就可以用 final 关键字修饰 。
final 修饰方法 , 说明这个方法不能被重写 。
final 修饰变量 , 说明这个变量的值赋值后不能被修改 。
Java 集合类哪些是线程安全和线程不安全的?
线程安全的集合

  • Vector
  • HashTable
  • Stack
  • Properties
线程不安全的集合
  • ArrayList
  • LinkedList
  • HashMap
  • HashSet
  • TreeMap
  • TreeSet
JAVA 线程创建方式有哪些?
继承 Thread 类 , 重写 run 方法 。
实现 Runnable 接口 , 重写 run 方法 。
实现 Callable 接口 , 重写 call 方法 , 这是一个由返回值的方法 。
怎么实现动态代理?
  • JDK 原生动态代理
  • Cglib 动态代理
什么是死锁?线程 A 持有独占锁 a , 并且还尝试获取独占锁 b 的同时 , 线程 B 持有独占锁 b , 并且还尝试获取独占锁 a 的情况下 , 这时 A 和 B 线程都在等待对方释放需要的锁 , 从而发生的阻塞现象 , 我们称为死锁 。
ArrayList 和 LinkedList 的区别?
ArrayList 底层是基于动态数组的数据结构实现 , 而 LinkedList 是基于双向链表的数据结构实现 。
因为 ArrayList 底层是基于数组实现的 , 所以 ArrayList 比 LinkedList 随机访问效率快 。 而 LinkedList 是链表线性的数据结构 , 所以需要移动指针从前往后依次查找 , 效率比较慢 。
在非首尾的增加和删除操作 , LinkedList 要比 ArrayList 效率要高 。
需要频繁读取集合中的元素时 , 推荐使用 ArrayList;在插入和删除操作较多时 , 推荐使用 LinkedList 。
并行和并发有什么区别?
  • 并行是指两个或者多个事件在同一时刻发生;并发是指两个或多个事件在同一时间间隔发生 。
  • 并行是在不同实体上的多个事件 , 并发是在同一实体上的多个事件 。
Java 访问修饰符有哪些?
构造器(constructor)是否可被重写(override)?构造器是不能被继承的 , 所以不能被重写 , 但是可以被重载 。
String 属于基础的数据类型吗?
String 不属于基础类型 , String 属于引用类型 。 基础类型有 8 种:byte、boolean、char、short、int、float、long、double 。