2024年Java高工面试焦点:JVM、Spring与并发安全

9 下载量 79 浏览量 更新于2024-06-14 收藏 61.51MB DOCX 举报
这篇内容主要涉及了Java开发与面试的相关知识点,包括JVM内存结构、垃圾回收算法、Spring框架的工作原理以及数据库的锁管理。以下是详细解释: 1. JVM虚拟机结构: - 堆:存储所有对象实例,是线程共享的区域,分为新生代和老年代。 - 方法区(元空间):存储类信息、常量池、静态变量等。 - 栈:每个线程都有一个独立的栈,用于存储方法调用的局部变量、运算结果等。 - 本地方法栈:为Java Native Interface (JNI)方法服务。 - 程序计数器:记录当前线程执行的字节码指令地址。 2. 垃圾回收算法: - CMS(Concurrent Mark Sweep):包括初始标记、并发标记、重新标记、并发清理和并发重置几个阶段,主要用于减少停顿时间。 - G1(Garbage-First):采用分代收集,具有更好的整体暂停时间目标,其过程包括初始标记、并发标记、最终标记和筛选回收。 3. JVM执行流程: - 从.java源文件编译成.class字节码,然后由JVM加载到内存中执行。 4. Spring框架: - Spring是一个快速开发框架,用于管理对象和应用的生命周期。 - 在启动Spring容器时,会扫描所有BeanDefinition,并存入Map中,然后创建非懒加载的单例Bean,多实例Bean按需创建。 - Bean的生命周期包括合并BeanDefinition、选择构造方法、实例化、属性填充、初始化前、初始化和初始化后。AOP(面向切面编程)发生在初始化后。 5. 并发与同步: - Java中的wait()和notify()方法用于线程间的阻塞和唤醒,解决并发问题。 - 在多线程环境下,共享内存通信需要注意并发控制,如使用锁来确保数据一致性。 6. 数据库锁管理: - 查询锁表:`SHOW OPEN TABLES WHERE in_use > 0;` - 查看进程:`SHOW PROCESSLIST;` - 查看锁定的事务:`SELECT * FROM information_schema.INNODB_LOCKS;` - 查看等待锁的事务:`SELECT * FROM information_schema.INNODB_LOCK_WAITS;` 7. Spring的其他特性: - Spring启动时会处理@Import等注解,注册BeanFactoryPostProcessor和BeanPostProcessor,实现依赖注入。 - Spring的事务管理是基于数据库事务的,可以实现声明式事务管理。 这些知识点对于Java高级工程师的面试至关重要,涵盖了基础理论、内存管理、框架应用和数据库操作等多个方面。理解和掌握这些内容将有助于提升开发者在实际工作和面试中的表现。