北科Java面试深度解析:基础、JVM与集合
需积分: 10 168 浏览量
更新于2024-07-05
收藏 3.22MB PDF 举报
"北科Java新面试宝典.pdf"
本文将详细阐述Java编程语言中的关键概念,涵盖基础面试题、JVM虚拟机面试题以及集合相关面试题,旨在帮助准备Java面试的开发者巩固知识。
一、Java基础面试题
1. Java平台理解:Java平台包括Java虚拟机(JVM)和Java应用程序接口(API)。它提供了跨平台的运行环境,让Java程序可以在任何支持Java的设备上运行。
2. String、StringBuffer、StringBuilder:String是不可变的,适合少量字符串操作;StringBuffer和StringBuilder是可变的,线程安全与非安全,分别在多线程和单线程环境下更优。
3. int和Integer:int是基本数据类型,直接存储值;Integer是包装类,用于对象操作,如自动装箱拆箱。
4. ==和equals:==比较的是两个变量的内存地址,而equals比较的是两个对象的内容是否相等。
5. JDK1.8新特性:包括lambda表达式、函数式接口、Stream API、接口默认方法、新的日期时间API等。
6. final关键字:用于声明常量或确保变量不会被改变,也可以修饰方法和类,表示不可变或单例。
7. 内存泄漏和内存溢出:内存泄漏是程序未释放不再使用的内存,导致可用内存减少;内存溢出是程序申请内存超过实际可用内存,系统无法分配更多内存。
8. 抽象类与接口:抽象类可以有构造方法和实现的方法,允许有抽象和非抽象方法;接口只有抽象方法和默认方法,强制实现。
9. Error和Exception:Error是系统级错误,如虚拟机错误,通常不需捕获;Exception是程序异常,需要捕获处理。
10. 常见Execption及解决方案:IOException、NullPointerException、ArrayIndexOutOfBoundsException等,根据具体异常类型采取相应处理措施。
11. 重写(Override)和重载(Overload):重写是子类对父类方法的重新实现,方法名、参数列表和返回类型必须一致;重载是在同一类中定义多个同名方法,通过参数列表区分。
12. 反射:反射允许在运行时动态获取类的信息并操作对象,提高代码灵活性,如动态创建对象、调用方法。
13. 事务控制:通常在服务层进行,DAO层不建议直接控制,因为事务边界应由业务逻辑决定。
14. Cookie和Session:Cookie是客户端存储信息,大小有限,不安全;Session是服务器端存储,安全但消耗服务器资源。
15. 线程启动:一个线程启动两次start()会导致异常,因为线程只能启动一次。
16. final、finally、finalize:final修饰变量不可变,方法不可覆盖,类不可继承;finally保证代码块在任何情况下都会执行;finalize是对象被垃圾回收前最后一次清理机会。
17. 强引用、软引用、弱引用、幻象引用:强引用是最常见的引用,无法被垃圾回收;软引用在内存不足时会被回收;弱引用在下次GC时回收;幻象引用只用于检测对象是否在 finalize 队列中。
18. 父子类静态代码块、非静态代码块、构造方法执行顺序:静态代码块先于非静态代码块执行,按定义顺序;构造方法按继承链自顶向下执行,最后调用当前类构造方法。
19. 对象克隆:通过实现Cloneable接口并调用Object的clone()方法实现浅拷贝;深拷贝需手动复制所有字段创建新对象。
20. Java序列化:将对象转换为字节流,便于存储或网络传输。实现Serializable接口即可实现序列化。
21. 深拷贝与浅拷贝:浅拷贝只复制对象引用,深拷贝复制对象内容,包括内部对象。
22. JSP和Servlet:JSP是视图层,方便编写动态网页;Servlet是控制层,处理HTTP请求。
23. JSP的四种作用域:page、request、session、application,分别对应当前页面、一次请求、整个会话和整个应用范围。
24. 请求转发与重定向:转发发生在服务器端,客户端无感知;重定向是新的HTTP请求,浏览器地址栏会显示新URL。
二、JVM虚拟机面试题
1. JVM内存模型:包括堆(Heap)、栈(Stack)、方法区(Method Area)、本地方法栈(Native Method Stack)、程序计数器(PC Register),其中堆和方法区可能发生OOM。
2. 类加载过程与双亲委派模型:加载、验证、准备、解析、初始化,双亲委派模型保证类加载的唯一性。
3. 堆栈区别:堆存储对象实例,栈存储基本类型和对象引用,栈速度快但空间有限。
4. 垃圾回收器:Serial、ParNew、Parallel Scavenge、CMS、G1等,各有特点,如吞吐量、响应时间等。
5. 创建对象:类加载、分配内存、构造函数调用。
6. 垃圾回收机制:可达性分析判断对象是否可回收,引用计数器简单但有局限。
7. 垃圾回收算法:标记-清除、复制、标记-整理、分代收集。
8. YoungGC和FullGC触发:YoungGC针对年轻代,FullGC涉及整个堆和方法区。
9. FullGC问题:频繁FullGC可能导致应用暂停时间长。
10. JVM调优:使用JVisualVM等工具监控,优化对象创建、内存分配、垃圾回收策略等。
11. JVM内存模型:包括堆、栈、方法区、本地方法栈、程序计数器。
12. GC识别垃圾:通过根节点可达性分析。
13. CMS垃圾回收器:并发标记扫描,低停顿时间,但可能导致浮动垃圾。
14. 对象创建内存分配:新生代(Young Generation)或老年代(Tenured Generation),根据对象存活预期。
三、集合相关面试题
1. 容器体系结构:Collection(单列集合)、Map(键值对集合)。
2. List、Set、Map:List有序、可重复,如ArrayList和LinkedList;Set无序、不重复,如HashSet和TreeSet;Map存储键值对,如HashMap和TreeMap。
3. ArrayList、LinkedList、Vector:ArrayList基于数组,快速随机访问;LinkedList基于链表,适合插入删除;Vector线程安全,性能较低。
4. TreeSet有序性:TreeSet内部使用红黑树实现,保证元素自然排序或定制排序。
5. HashTable、HashMap:HashTable线程安全,不支持null键值;HashMap非线程安全,性能更高,允许null键值。
这只是Java面试宝典的一部分,完整的学习和掌握这些知识点将极大地提升你在面试中的表现。继续深入学习,理解原理,结合实践,你将在Java世界中游刃有余。
2011-08-31 上传
2021-03-02 上传
点击了解资源详情
2021-10-14 上传
2024-04-16 上传
2022-06-18 上传
2023-06-04 上传
2021-05-11 上传
麦丽素.
- 粉丝: 0
- 资源: 1
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程