《Java面试题个人总结-+-复习资料.pdf》由会员分享,可在线阅读,更多相关《Java面试题个人总结-+-复习资料.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1/141/14 本人最近参加了大大小小很多公司的面试,在这里我把自己面试遇到的问题给大家说一下 基础篇 1、在类加载器中,系统类加载器和用户自定义加载器那个先加载?(遇到这个问题时感觉很意外,没有想到会问这样的问题)先加载系统类加载器 类加载器加载类顺序依次为:类加载器:这个模式会加载下的包 扩展类加载器:会加载下的包 系统类加载器:这个会去加载指定了参数指定的文件 用户自定义类加载器:提供的是可以被继承的,允许用户自己实现类加载器 2、堆和栈分别存放什么?栈:基本数据类型和对象的引用 堆:对象和数组 3、的区别(1)是不可变对象,也就是说每次修改都是新建了一个对象并赋值(2)是字符缓冲区,
2、修改它不会新建对象,可以使用()方法和()方法修改的值 2/142/14(3)可以替代,它是一个单线程使用的类,和比速度快、效率高,但是是非安全的(4)三者都是被修饰的(这一点面试官的问我的时候一直在说,你确定吗?搞得我有点虚)4、的异常和错误有什么区别?(1)是的错误,这种错误会严重影响程序的运行,设计者不会设计程序代码去捕捉这种错误,因为即使捕捉到也无法给予适当的处理,比如内存溢出。(2)包含了一般性的异常,这些异常同在在捕捉到之后便可做妥善的处理,以确保程序继续运行。有很多种分类,从产生的时机上我们可以把分为 运行时异常 运行时异常是指程序运行过程中可能出现的非正常状态 非运行时异常 非
3、运行时异常是指方法声明时的异常 5、&和的区别&是位运算符,表示按位与运算。是逻辑运算符,表示逻辑与。在条件判断的时候&必须逐一检查各个条件,具有短路功能,只要一3/143/14 个条件为则不会进行后续的判断。6、和的区别(1)是抽象类,声明方法的存在而不去实现它的类叫做抽象类,它用于创建一个体现某些基本行为的类。抽象类中不能有构造方法、不能有静态方法,抽象类不能被实例化。抽象类中可以有变量、可以有普通方法、可以有抽象方法,在继承抽象方法后,必须实现它的所有抽象方法。(2)是接口,接口中的变量必须是静态常量(),接口中的方法必须都是抽象方法(),不过由于接口中所有变量、方法修饰符都一致,因可以
4、不写。接口的实现必须实现接口中所有的方法。7、的区别(1)是用来描述变量、方法、类的关键字,表示变量值不可变、方法不可被重写、类不可被继承(2)是异常处理的关键字,表示块里面的代码一定会被运行到(3)是类中的方法,垃圾回收器执行的时候会调用被回收的类的此方法。8、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以实现实体类?4/144/14(1)接口可以继承接口(2)抽象类里可以有普通方法,因此抽象类可以实现接口,只需要实现接口内所有方法就可以了(3)抽象类里可以有普通方法,变量也不需要是常量,因此抽象类可以实现实体类 9、一个”源文件中是否可以包含多个类(非内部类)?有什么限制?可
5、以。必须只有一个类名与文件名相同且该类以修饰 10、是怎么通过包名.类名来获得该类的实例的?通过()方法 11、介绍一下集合?:是最基本的集合接口,一个代表一组,即的元素。:是的扩展,作用是收集对象,并以索引方式保留收集对象的顺序。其元素有放入顺序,元素可重复。1):利用类似于数组的形式来存储数据,它的随机访问速度极快。2):内部实现是链表,它适合于在链表中间需要频繁的插入和删除操作。3):与相似,但是两者不同,主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。5/145/14 4)与的区别:是非线程安全的,效率高 是基于线程安全的,效率低。:也是的扩展,在中的元素对象要
6、求不能重复(注意:元素虽然无放入顺序,但是元素在中的位置是有该元素的决定的,其位置其实是固定的)。常用实现类有和。1):其核心是,中存放的值为中的,这也就是不允许重复的原因。2):底层由平衡二叉树实现,它会将投入其中的元素自动排序,这就要求投入其中的元素是可排序的,也就是说,存放的必须是同一种数据类型。其实现自动排序的实质是,即 ()()0;1;这个方法称为比较器,可以比较两个对象,如果对象都一致相等,则返回 0 :没有继承接口,提供到的映射,也就是说,它是一种把键对6/146/14 象和值对象进行关联的容器。1):不允许重复,如果后面的重复,则会覆盖前面的值,允许为,但是只能有一个。2):如
7、果是一个对象的话,这个对象所在的类一定要实现接口,并且重写方法。3)与比较:非线程安全,高效率,支持:线程安全,低效率,不支持 12、和的遍历方法比较:可以用循环、循环和迭代。:可以用 循环和迭代。:只能用迭代。13、写一个单例设计模式:;()()()=();7/147/14 ;14、说说关键字:表示“全局”或“静态”的意思,可以用来修饰成员变量和成员方法,也可以形成静态代码块,还可以用来修饰类,但只能修饰内部类。变量:被修饰的变量叫静态变量或者类变量;没有被修饰的变量叫实例变量。二者的区别是:静态变量:在内存中只有一个拷贝(节省内存),只会为静态分配一次内存,而且在加载类的过程中就完成静态变
8、量的内存分配。可用类名直接访问(方便),也可以用对象来访问(不推荐)。静态变量一般用于对象之间需要共享值时。实例变量:每创建一个实例,就会为实例分配一次内存,实例变量在内存中可以有多个拷贝,互不影响(灵活)。静态方法:它可以直接通过“类名.静态方法”来访问,任何的实例亦可以调用。静态方法中不能用和关键字。不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态变量和成员方法。代码块:代码块也叫静态代码块,是在类中独立于类成员的语8/148/14 句块,可以有多个,位置也可以随便放,它不在任何的方法体内,在加载类时会执行这些静态代码块,如果有多个,则会按照他们在类中出现的先后顺序一次执行它们
9、,而且每个代码块只会执行一次。15、的生命周期:加载和实例化:在容器检测到需要这个来响应第一个请求时,创建实例。初始化:在实例化后,容器将调用的()方法初始化这个对象。请求处理:容器将调用的()方法对请求进行处理。服务终止:当容器检测到一个的实例应该从服务中被移除的时候,容器就会调用实例的()方法 16、九大内置对象范围比较:排序为:=。:服务器启动到停止这段时间。:会话开始到结束这段时间(浏览器打开到关闭):请求开始到结束这段时间,即一个页面发出请求到另一个页面之间。:页面执行,当前页面从打开到关闭这段时间,它只能在同一个页面中有效 :页面执行,包含了客户请求的有关信息,但中很少用到它。:页
10、面执行,向客户端输入内容时常用的对象 9/149/14 :页面执行,取得任何范围的参数,通过它可以获得、等对象。:页面执行,取得服务器的配置信息。:仅在错误处理页面 17、和的区别与联系:第一次运行的时候会编译成,驻留在内存中以供调用 是开发技术,是服务器端运用的小程序 更多的是进行页面显示,更多的是处理业务,即是页面,是实现方法 开发界面是时,可以直接编写:数据;而中则需要这样写:(数据);18、关键字的作用(1)修饰的基本数据类型的值不可被改变,修饰的引用类型的引用不可变而引用的值还是可以变的(2)修饰的方法不可被重写(3)修饰的类不可被继承(4)修饰的基本数据类型的形参在方法体内不可以被
11、重新赋值,修饰的引用类型的形参不可以被赋予一个新的引用 10/1410/14 数据库方面 1、问你怎么同时更新一个表中的两个字段?(假设表名为 A,要更新的字段分别为、)A =姚明,=35 =10;2、给添加一个来自的外键:(这个很容易被我们自己忽视)()();3、数据库三范式:属性唯一、记录唯一、表唯一 4、查询结果按排序(降序):*;(默认是按升序的)5、的左外连接 *d e =;框架 1、和相比有什么优势?1.对访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2.是一个基于的主流持久化框架,是一个优秀的实现。他很大程11/1411/14 度的简化层的编码工作 3.使用反射
12、机制,而不是字节码增强程序来实现透明性。4.的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。2、为什么要用?、技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,便应运而生。3、为什么要用?让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 后,公共服务(比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。允许创建一个可以构造对象的应用环境,然后
13、向这些对象传递它们的协作对象。正如单词 倒置 所表明的,就像反 过来的。没有使用一堆抽象工厂、服务定位器、单元素()和直接构造(),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象()。即使一个框架,也是一容器。最好的地方是它有助于您替换对象。有了,只要用 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。12/1412/14 4、什么是模式?有什么作用?全名 ,即模型-视图-控制器,是一种非常经典的软件架构模 式。从设计角度看,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。模式把用户界面交互分拆到不同的三个角色中,即:(1)
14、模型:持有所有的数据、状态和程序逻辑,独立于视图和控制器。(2)视图:用来呈现模型。视图通常直接从模型中取得它要显示的状态和数据。对于相同 的信息可以有多个不同的显示形式或视图。(3)控制器:位于视图和模型中间,负责接收用户的输入,将输入进行解析并反馈给模型,通常有一个模型具有一个控制器。5、的三种状态:瞬时状态 持久状态 游离状态 6、和的区别:优点:13/1413/14:占用网速小,对于一些网速比较慢的电脑有明显的优势。:不需要安装客户端,只需要浏览器就能打开。缺点:需要安装客户端,有时候需要更新。:对网速的需求大,对于一些网速慢的电脑不适合。7、2 的核心是什么?它与 1有什么关系?2的
15、核心是,与 1没关系 8、列举五个 2中的拦截器:实现在不同请求中相似参数别名的转换。:自动装配的拦截器,主要用于当 2和整合时,2可以使用自动装配的方式来访问容器中的。:该拦截器负责创建一个对象,主要用于那些需要有对象才能正常工作的拦截器。:当使用 2的开发模式时,这个拦截器会提供更多的调试信息。:这个拦截器负责处理异常,它将异常映射为结果。:这个拦截器主要用于文件上传,它负责解析表单文件域中的内容。i18n:支持国际化的拦截器,它负责把所选的语言、区域放入用户中。:这是一个最基本的拦截器,它负责解析请求中的参数,并将14/1414/14 参数值设置成对应的属性值。:防止重复提交,它检查传到中的,从而防止多次提交。:通过执行中定义的校验器,从而完成数据校验。9、注入方法:设值注入:通过访问容器实现 构造注入:通过构造函数实现 P命名空间注入 10、实现注解的配置:其中是指需要扫描的基类包,多个包之间用逗号隔开,默认扫描所有类路径