近几年一直在说互联网寒冬,其实哪里有什么互联网寒冬,只不过是你技术没到位而已,有那个时间去关心互联网寒冬会倒下多少人,还不如来刷几道Java面试题!
话不多说,直接开干,下面分享我用业余时间整理的一些Java面试题,望各路大牛,发现不对的地方,不吝赐教,留言即可。
BTA 常问的 Java基础39道常见面试题
- 八种基本数据类型的大小,以及他们的封装类
- 引用数据类型
- Switch能否用string做参数
- equals与==的区别
- 自动装箱,常量池
- Object有哪些公用方法
- Java的四种引用,强弱软虚,用到的场景
- Hashcode的作用
- HashMap的hashcode的作用
- 为什么重载hashCode方法?
- ArrayList、LinkedList、Vector的区别
- String、StringBuffer与StringBuilder的区别
- Map、Set、List、Queue、Stack的特点与用法
- HashMap和HashTable的区别
- JDK7与JDK8中HashMap的实现
- HashMap和ConcurrentHashMap的区别,HashMap的底层源码
- ConcurrentHashMap能完全替代HashTable吗
- 为什么HashMap是线程不安全的
- 如何线程安全的使用HashMap
- 多并发情况下HashMap是否还会产生死循环
- TreeMap、HashMap、LindedHashMap的区别
- Collection包结构,与Collections的区别
- try?catch?finally,try里有return,finally还执行么
- Excption与Error包结构,OOM你遇到过哪些情况,SOF你遇到过哪些情况
- Java(OOP)面向对象的三个特征与含义
- Override和Overload的含义去区别
- Interface与abstract类的区别
- Static?class?与non?static?class的区别
- foreach与正常for循环效率对比
- Java?IO与NIO
- java反射的作用于原理
- 泛型常用特点
- 解析XML的几种方式的原理与特点:DOM、SAX
- Java1.7与1.8,1.9,10 新特性
- 设计模式:单例、工厂、适配器、责任链、观察者等等
- JNI的使用
- AOP是什么
- OOP是什么
- AOP与OOP的区别
Java 多线程面试题
- 多线程有什么用?
- 创建线程的方式
- start()方法和run()方法的区别
- Runnable接口和Callable接口的区别
- CyclicBarrier和CountDownLatch的区别
- volatile关键字的作用
- 什么是线程安全
- Java中如何获取到线程dump文件
- 一个线程如果出现了运行时异常会怎么样
- 如何在两个线程之间共享数据
- sleep方法和wait方法有什么区别
- 生产者消费者模型的作用是什么
- ThreadLocal有什么用
- 为什么wait()方法和notify()/notifyAll()方法要在同步块中被调用
- wait()方法和notify()/notifyAll()方法在放弃对象监视器时有什么区别
- 为什么要使用线程池
- 怎么检测一个线程是否持有对象监视器
- synchronized和ReentrantLock的区别
- ConcurrentHashMap的并发度是什么
- ReadWriteLock是什么
- FutureTask是什么
- Linux环境下如何查找哪个线程使用CPU最长
- Java编程写一个会导致死锁的程序
- 怎么唤醒一个阻塞的线程
- 不可变对象对多线程有什么帮助
- 什么是多线程的上下文切换
- 如果你提交任务时,线程池队列已满,这时会发生什么
- Java中用到的线程调度算法是什么
- Thread.sleep(0)的作用是什么
- 什么是自旋
- 什么是Java内存模型
- 什么是CAS
- 什么是乐观锁和悲观锁
- 什么是AQS
- 单例模式的线程安全性
- Semaphore有什么作用
- Hashtable的size()方法中明明只有一条语句"return count",为什么还要做同步?
- 线程类的构造方法、静态块是被哪个线程调用的
- 同步方法和同步块,哪个是更好的选择
- 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?
跳槽必备的100道 Java 面试题
多线程、并发及线程的基础问题
- Java 中能创建 volatile 数组吗?
- volatile 能使得一个非原子操作变成原子操作吗?
- volatile 修饰符的有过什么实践?
- volatile 类型变量提供什么保证?
- 10 个线程和 2 个线程的同步代码,哪个更容易写?
- 你是如何调用 wait()方法的?使用 if 块还是循环?为什么?
- 什么是多线程环境下的伪共享(false sharing)?
有经验程序员的 Java 面试题
- 什么是 Busy spin?我们为什么要使用它?
- Java 中怎么获取一份线程 dump 文件?
- Swing 是线程安全的?
11)什么是线程局部变量? - Java 中 sleep 方法和 wait 方法的区别?
- 什么是不可变对象(immutable object)?Java 中怎么创建一个不可变对象?
- 我们能创建一个包含可变对象的不可变对象吗?
- Java 中应该使用什么数据类型来代表价格?
- 怎么将 byte 转换为 String?
- Java 中怎样将 bytes 转换为 long 类型?
- 我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象?
- 哪个类包含 clone 方法?是 Cloneable 还是 Object?
- Java 中 ++ 操作符是线程安全的吗?
- 不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,
- a = a + b 与 a += b 的区别
- 我能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗?
- 3*0.1 == 0.3 将会返回什么?true 还是 false?
- int 和 Integer 哪个会占用更多的内存?
- 为什么 Java 中的 String 是不可变的(Immutable)?
- 我们能在 Switch 中使用 String 吗?
- Java 中的构造器链是什么?
JVM 底层 与 GC(Garbage Collection) 的面试问题
- 64 位 JVM 中,int 的长度是多数?
- Serial 与 Parallel GC之间的不同之处?
- 32 位和 64 位的 JVM,int 类型变量的长度是多数?
- Java 中 WeakReference 与 SoftReference的区别?
- WeakHashMap 是怎么工作的?
- JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使
- 怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?
- 32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
- JRE、JDK、JVM 及 JIT 之间有什么不同?
3 年工作经验的 Java 面试题
- 解释 Java 堆空间及 GC?
- 你能保证 GC 执行吗?
- 怎么获取 Java 程序使用的内存?堆使用的百分比?
- Java 中堆和栈有什么区别?
Java 基本概念面试题
- “a==b”和”a.equals(b)”有什么区别?
- a.hashCode() 有什么用?与 a.equals(b) 有什么关系?
- final、finalize 和 finally 的不同之处?
- Java 中的编译期常量是什么?使用它又什么风险?
Java 集合框架的面试题
- List、Set、Map 和 Queue 之间的区别(答案)
- poll() 方法和 remove() 方法的区别?
- Java 中 LinkedHashMap 和 PriorityQueue 的区别是什么?
- ArrayList 与 LinkedList 的不区别?
- 用哪两种方式来实现集合的排序?
- Java 中怎么打印数组?
- Java 中的 LinkedList 是单向链表还是双向链表?
- Java 中的 TreeMap 是采用什么树实现的?(答案)
- Hashtable 与 HashMap 有什么不同之处?
- Java 中的 HashSet,内部是如何工作的?
- 写一段代码在遍历 ArrayList 时移除一个元素?
- 我们能自己写一个容器类,然后使用 for-each 循环码?
- ArrayList 和 HashMap 的默认大小是多数?
- 有没有可能两个不相等的对象有有相同的 hashcode?
- 两个相同的对象会有不同的的 hash code 吗?
- Java 中,Comparator 与 Comparable 有什么不同?
- 为什么在重写 equals 方法的时候需要重写 hashCode 方法?
Java IO 和 NIO 的面试题
- Java 中怎么创建 ByteBuffer?
Java 最佳实践的面试问题
- Java 中,编写多线程程序的时候你会遵循哪些最佳实践?
- 说出几点 Java 中使用 Collections 的最佳实践
- 说出 5 条 IO 的最佳实践(答案)
- 说出几条 Java 中方法重载的最佳实践?
Date、Time 及 Calendar 的面试题
- 在多线程环境下,SimpleDateFormat 是线程安全的吗?
单元测试 JUnit 面试题
- 如何测试静态方法?
- Java 中如何将字符串转换为整数?
关于 OOP 和设计模式的面试题
- 接口是什么?为什么要使用接口而不是直接使用具体类?
- Java 中,抽象类与接口之间有什么不同?
- 除了单例模式,你在生产环境中还用过什么设计模式?
- 什么情况下会违反迪米特法则?为什么会有这个问题?
- 适配器模式是什么?什么时候使用?
- 什么是“依赖注入”和“控制反转”?为什么有人使用?
- 抽象类是什么?它与接口有什么区别?你为什么要使用过抽象类?
- 构造器注入和 setter 依赖注入,那种方式更好?
- 依赖注入和工程模式之间有什么不同?
- 适配器模式和装饰器模式有什么区别?
- 适配器模式和代理模式之前有什么不同?
- 什么是模板方法模式?
- 什么时候使用访问者模式?
- 什么时候使用组合模式?
- 继承和组合之间有什么不同?
- 描述 Java 中的重载和重写?
- Java 中,嵌套公共静态类与顶级类有什么不同?
- OOP 中的 组合、聚合和关联有什么区别?
- 给我一个符合开闭原则的设计模式的例子?
- 抽象工厂模式和原型模式之间的区别?
- 什么时候使用享元模式?
Java 面试中其他各式各样的问题
- 嵌套静态类与顶级类有什么区别?
- 你能写出一个正则表达式来判断一个字符串是否是一个数字吗?
- Java 中,受检查异常 和 不受检查异常的区别?
- Java 中,throw 和 throws 有什么区别
- Java 中,Serializable 与 Externalizable 的区别?
- Java 中,DOM 和 SAX 解析器有什么不同?
- 说出 JDK 1.7 中的三个新特性?
- 说出 5 个 JDK 1.8 引入的新特性?
- Java 中,Maven 和 ANT 有什么区别?
资料领取方式:加入粉丝群 909666042,私信管理员即可