【Java基础】 1. Java提供八种基本数据类型:byte(1字节),short(2字节),int(4字节),long(8字节),float(4字节),double(8字节),char(2字节),boolean(1字节)。 2. String类是final的,不能被继承,以确保字符串的不可变性。 3. String是不可变的,StringBuilder和StringBuffer都是可变的。在多线程环境下,StringBuffer是线程安全的,而StringBuilder不是。 4. ArrayList基于动态数组,适合随机访问,插入和删除较慢;LinkedList基于双向链表,适合顺序访问和频繁的插入删除操作。 5. 类的实例化顺序:首先是父类静态数据、子类静态数据、父类构造函数、父类字段、子类构造函数、子类字段。 【数据结构与算法】 6. HashMap非线程安全,线程安全的Map有Collections.synchronizedMap或ConcurrentHashMap。ConcurrentHashMap在Java 8中放弃了分段锁,改为使用CAS和锁分离技术提高并发性能。 7. 有序Map实现类有TreeMap,它通过红黑树保证插入顺序或自然排序。 8. 抽象类只能单继承,接口可以多继承,类可以实现多个接口。 【网络协议】 9. IO模型有同步阻塞IO(BIO),同步非阻塞IO(NIO),异步非阻塞IO(AIO)。NIO提供了选择器(Selector)和通道(Channel)功能,允许单线程处理多个连接。Reactor模型是一种事件驱动的设计模式,常用于高并发的服务器。 【反射与动态代理】 10. 反射是运行时分析类的能力,可以通过Class对象实例化对象,调用方法,访问字段。Class.forName通过类名加载类,ClassLoader则用于自定义类加载。 11. 动态代理主要有两种实现:JDK动态代理和CGLIB。前者基于接口,后者基于字节码生成。 【并发编程与JVM】 12. 堆内存溢出通常发生在对象分配过多,无法找到足够的空间时。JVM内存分为年轻代(Eden、S0、S1)和老年代,以及持久代。对象经历多次Minor GC后晋升至老年代。主要JVM参数包括堆大小(Xms, Xmx),新生代比例(XX:NewRatio),Eden/Survivor比例(XX:SurvivorRatio)等。 13. CMS和G1是两种垃圾收集器。CMS适用于响应时间优先,G1适用于吞吐量优先。打印线程堆栈信息可以使用jstack命令。 【类加载器与内存模型】 14. 类加载器包括Bootstrap、Extension、Application和自定义加载器。双亲委派模型可以避免类的重复加载,但可通过自定义加载器打破。 【Spring框架】 15. Tomcat是Java Web容器,类加载器包括Common、Webapp和Bootstrap。线程模型包括线程池和工作线程。Spring加载流程包括BeanDefinition的读取、解析、注册,然后实例化和初始化Bean。 这些面试问题涵盖了Java语言的基础、数据结构、网络、反射、并发、JVM内存管理、类加载器以及开源框架等多个方面,旨在全面评估候选人的Java技能和实际开发经验。准备这些题目有助于深入理解Java编程的各个方面,并在面试中表现出扎实的技术功底。
剩余14页未读,继续阅读
- weixin_450298512023-10-24资源和描述一致,质量不错,解决了我的问题,感谢资源主。
- 粉丝: 6874
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助