Java面试宝典:核心技术深度解析

需积分: 1 0 下载量 138 浏览量 更新于2024-08-04 收藏 41KB DOCX 举报
"Java面试宝典包含了众多面试中常见的问题,涵盖了数据库管理、并发控制、线程池、分布式系统、JavaScript继承、Web框架原理等多个方面。" 在Java面试中,Oracle数据库的读写分离是一个常见的话题。有多种实现方式,包括使用RAC架构选择某个节点作为读库,通过Streams复制数据,利用第三方软件如GoldenGate或DSG,以及使用Logical Standby技术创建只读副本。这些策略旨在提高系统的并发处理能力和性能。 排它锁和读写锁是并发控制的关键概念。排它锁(Exclusive Locks)确保资源在同一时间仅能被一个线程独占,其他线程必须等待其释放。读写锁则分为读锁和写锁,读锁可以被多个线程共享,而写锁具有互斥性,只有一个线程能持有。当一个线程试图获取写锁时,所有读锁必须先被释放,并且在写锁被占用期间,不允许新的读锁请求。 防止幻读通常在事务隔离级别中通过多版本并发控制(MVCC)或序列化实现,但在特定场景下,如果不能使用这些机制,可以考虑使用读写锁策略。例如,通过在查询时添加适当的范围条件,确保事务在开始时锁定所有可能影响查询结果的行,从而避免在事务执行过程中新插入的记录导致幻读。 线程池是Java并发编程的重要工具,如`newCachedThreadPool`,它会创建一个可缓存的线程池。这种线程池会自动回收空闲超过60秒的线程,以节省资源。然而,如果不加以控制,可能会导致大量线程创建,影响系统性能。因此,在使用时需注意监控线程池大小,避免无节制地创建线程。 Oracle的联合主键是指在一个表中使用多个字段共同构成唯一标识,创建时需确保所有联合主键字段的唯一性和非空性。设计联合主键时,要考虑它们的业务含义和未来可能的变化,以确保数据完整性和一致性。 分布式系统是解决大规模计算问题的有效手段,它将大问题分解为多个子任务,分配给多台计算机并行处理,最后整合结果。理解分布式系统需要掌握分布式计算、负载均衡、容错处理、数据一致性等相关概念。 JavaScript的继承机制多样,包括原型链继承、构造函数借用、组合继承、原型式继承、寄生式继承和寄生组合式继承等,每种方法都有其特点和适用场景。 StrutsFilter和拦截器是两种不同的处理请求的机制。过滤器(Filter)遵循Servlet规范,基于函数回调,适用于处理所有类型的请求,但只能在容器初始化时配置。拦截器(Interceptor)则用于Struts2这样的MVC框架,基于Java反射,与具体动作(Action)关联,可以在Action执行前后多次调用,具有更丰富的功能和上下文访问。 抽象工厂方法和工厂方法都是设计模式中的概念,主要用来创建对象。抽象工厂方法关注于创建一系列相关或相互依赖的对象,而工厂方法则是类的接口,允许子类决定实例化哪一个类,强调的是类的层次结构。两者的区别在于抽象工厂方法更倾向于一组对象的创建,而工厂方法则聚焦于单个对象的实例化。