JAVA 面试题 TOP100
1. 说说JAVA中的几种基本类型,各占用多少字节? 2. String能被继承吗?为什么? 3. 说说String, Stringbuffer, StringBuilder 的区别? 4. 说一下ArrayList 和 LinkedList 有什么区别? 5. HashMap 是线程安全的吗,并发下使用的 Map 是什么? 6. 说一下讲讲类的实例化顺序过程? 7. 深入理解Java类实例化时jvm执行顺序 8. 说一下抽象类和接口的区别? 类可以继承多个类么?接口可以继承多个接口么?类可以实现多个接口么? 9. 说一下继承和聚合的区别是什么? 10. 说说什么是java的反射? 11. 反射机制常用的api有哪些? 12. 说说Java反射机制有哪常用功能? 13. 讲一下java静态代理和动态代理分别是什么? 14. Class.forName 和 ClassLoader 区别是什么? 15. 说一下动态代理实现的几种方式? 16. 说一下java 的final关键字? 17. 实现单例模式有哪些常见方法? 18. 单例模式(懒汉模式)线程安全问题 19. 如何在父类中为子类自动完成所有的 hashcode 和 equals 实现?这么做有何优劣 20. 说说java的访问修饰符都有哪些? 21. 说一下java 深拷贝和浅拷贝区别? 22. 说说error 和 exception 的区别?CheckedException,RuntimeException 的区别? 23. 说下java的Exception的种类?经常遇到的都有哪些? 24. 说出5个常见的运行时异常? 25. java泛型的存在是用来解决什么问题? 26. 说说hashcode和equals方法有什么关系? 27. 两个不相等对象的 hashcode 是否可能相同? 28. 说说JDK 和 JRE 有什么区别 29. 说说 == 和 equals 的区别是什么 30. 说一下java 中的 Math.round(-1.5) 等于多少 31. 手撕 一个字符串反转方法 32. 说说 String 类的常用方法都有那些? 33. 抽象类必须要有抽象方法吗? 34. List、Set、Map 之间的区别是什么? 35. 如何实现数组和 List 之间的转换? 36. ArrayList 和 Vector 的区别是什么? 37. Array 和 ArrayList 有何区别? 38. 在 Queue 中 poll()和 remove()有什么区别? 39.  哪些集合类是线程安全的? 40. 迭代器 Iterator 是什么? 41. Iterator 怎么使用?有什么特点? 42. Iterator 和 ListIterator 有什么区别? 43. synchronized 和 volatile 的区别是什么? 44. 什么情况下会发生栈内存溢出? 45. 简单说说JVM内存模型? 46. 谈谈java的栈和堆的区别? 47. 说一下java堆中的数据分区? 48. 简述一下jvm的gc过程? 49. jvm内存相关常用参数有哪些? 50. 简单说下jvm的垃圾回收器有哪些? 51. jvm垃圾回收GC Root是什么? 52. 业务中常用的gvm参数有哪些? 53. 简单说说g1 和 cms 区别? 54. 请解释如下 jvm 参数的含义 55. 32位系统jvm堆内存如下哪一个设置是最大且有效的? 56. 简单讲讲 tomcat 结构,以及其类加载器流程 57. tomcat 如何调优,涉及哪些参数。 58. java 中 IO 流分为几种? 59. 简单说下Spring 加载流程? 60. 讲讲 Spring 事务的传播属性? 61. Spring 如何管理事务的?

谈谈java的栈和堆的区别?

堆:线程共享,jvm全局共享;存储对象,对象包含类的信息,指向方法区

方法区:class文件信息,运行时常量池,

栈:线程私有,每个方法执行时,新建一个栈帧。

虚拟机栈:表示Java方法执行的内存模型,每调用一个方法就会为每个方法生成一个栈帧(Stack Frame),用来存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法被调用和完成的过程,都对应一个栈帧从虚拟机栈上入栈和出栈的过程。虚拟机栈的生命周期和线程是相同的

本地方法栈:一个支持native方法调用的JVM实现

程序计数器:程序计数器用来记录当前正在执行的指令