Java面试全攻略:基础到高级,涵盖各类技术点

3星 · 超过75%的资源 需积分: 13 20 下载量 52 浏览量 更新于2024-08-02 1 收藏 579KB PDF 举报
"这篇博客文章提供了超过100道Java面试题,涵盖了基础篇、线程篇、JSP篇、JDBC与JDO篇、XML篇、EJB篇、J2EE与MVC篇、UML篇、CORBA篇、编程题以及JAVA代码查错等多个方面,旨在帮助求职者准备面试。" Java面试题集是一个全面的资源,包括了多个领域的知识点。让我们逐一探讨这些面试题所涉及的关键Java概念: 1. **访问修饰符**:`public`, `private`, `protected` 和默认修饰符(包访问权限)决定了类成员的可见性。`public` 可以在任何地方访问,`private` 只能在同一类中访问,`protected` 对同一包和子类可见,而默认修饰符仅限于同一包内的访问。 2. **匿名内部类**:匿名内部类是无名的类,它可以实现一个接口或继承一个类。但需要注意的是,它不能同时继承一个类并实现一个接口。 3. **静态嵌套类(Static Nested Class)与内部类(Inner Class)**:内部类是嵌套在另一个类中的类,拥有对外部类的隐式引用,可以访问外部类的私有成员。静态嵌套类则没有这种引用,因此它们不依赖于外部类的实例,可以被看作是普通的静态成员类。 4. **基础篇**:基础篇可能涵盖Java语法、数据类型、运算符、流程控制语句、异常处理等基本概念。例如,面试题可能包括对Java内存模型的理解,以及如何有效使用构造函数和析构函数。 5. **线程篇**:线程是并发执行的程序片段,Java提供了丰富的线程API。面试题可能涉及到线程的创建、同步机制(如synchronized关键字,wait()和notify()方法),死锁、活锁和饥饿现象,以及线程池的使用。 6. **JSP篇**:JSP(JavaServer Pages)是用于动态生成HTML的Java技术。面试题可能包括JSP生命周期、EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library)的使用。 7. **JDBC与JDO篇**:JDBC是Java连接数据库的标准API,JDO(Java Data Objects)提供了一种持久化框架。面试题可能关注数据库连接管理、事务处理、SQL查询优化、JDO配置和操作等。 8. **XML篇**:XML用于数据交换和配置文件。面试题可能包含DOM、SAX和StAX解析器的比较,XPath查询,以及使用Java的JAXB或DOM4J处理XML文档。 9. **EJB篇**:Enterprise JavaBeans是Java EE的一部分,用于构建可部署的企业级应用。面试题可能涉及EJB的生命周期、会话bean、实体bean和消息驱动bean的理解,以及EJB 3.x的注解驱动编程。 10. **J2EE与MVC篇**:J2EE(Java 2 Platform, Enterprise Edition)是企业级应用的平台,MVC(Model-View-Controller)是常见的架构模式。面试题可能考察Servlet、JSP、Filter和Listener,以及Spring MVC或JSF等框架的使用。 11. **UML篇**:统一建模语言用于软件设计和文档编写。面试题可能涵盖用例图、类图、序列图和状态图的理解与绘制。 12. **CORBA篇**:Common Object Request Broker Architecture是一种分布式计算模型。面试题可能关于ORB(对象请求代理)、IDL(接口定义语言)和CORBA服务的理解。 13. **编程题与代码查错**:这类题目测试实际编程能力,包括算法、数据结构、问题解决技巧,以及代码调试和优化的能力。 通过解答这些面试题,求职者能够全面评估自己的Java技能,并针对性地提高,以应对各种Java开发岗位的需求。
2013-02-17 上传
http://blog.csdn.net/methods2011/article/details/8584463 Java中的继承与静态static等的执行先后顺序的面试题 java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); static{ System.out.println("tttt"); } X(){ System.out.println("X"); } public static void main(String[] args) { new Z(); } } class Y{ Y(){ System.out.println("Y"); } } class Z extends X{ Y y=new Y(); static{ System.out.println("tt"); } Z(){ System.out.println("Z"); } } 先不告诉最后结果,我们先来分析下。一步一步推出结果。 1.首先分析一段程序的执行后的结果,我们得先找到程序的入口,然后才能着手分析。 也就是main()方法。 2.我们发现main()方法在X类中,要执行main()方法,还得先将X类加载到内存中。 3.X类加载完成后,会做什么事情呢?别急,先来看看static的作用,不知道吧。告诉你:static就是在类被第一次加载的时候执行,以后就不再执行。 4.知道了static的作用,那么X类被加载,那么就会先执行X类的静态属性和静态语句块(static),执行先后顺序看谁在前面就先执行谁。只在此时执行,以后都不会。 5.所以一个输出结果为tttt,没问题了吧。 6.X类的static语句块执行完了,就该执行main()方法啦。 7.new Z();此方法被执行。 8.既然new Z();那么Z类就要被加载。因为Z类继承X类。所以必须先加载X类才行。因为X类已经被加载。所以此时不用再加载X类了。Z类加载好了就要执行Z类的static语句块 9.那么就会打印出tt了吧。 10.都加在完后就要实例化对象了。 11.实例化Z之前,还得先实例化X对吧。因为子类的构造方法都会调用父类的构造方法。 12.那就先实例化X类吧。 13.执行X方法前还得先初始化对不。也就是获取所有属性。那么X类的属性Y就会获取。 14.即X类的Y y=new Y();要被执行。也就是会打印Y。 15.接着执行System.out.println("X"); 16.然后就是执行Z的构造方法 17.同样先获取Z的属性Y y=new Y();打印Y。 18.再执行System.out.println("Z"); 整个过程就是这样了。现在知道结果了吧: tttt tt Y X Y Z http://snow4909.diandian.com/post/2013-02-17/40049419937 记住,面试有可能会标出一些语句的,让你选择这些语句的执行顺序。不过只要知道原理,就没什么难的了。 执行先后顺序: 1、类加载到内存时static 加载进内润 2、调用类的构造方法时先调用父类的构造方法,在调用子类的构造方法 3、类初始化时,先初始化类的属性成员,在执行构造方法。