




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本人最近参加了大大小小很多公司的面试,在这里我把自己面试遇到的问题给大家说一下JAVA基础篇1、在 java 类加载器中,系统类加载器和用户自定义加载器那个先加载?(遇到这个问题 时感觉很意外,没有想到会问这样的问题)先加载系统类加载器Java类加载器加载类顺序依次为:JVM类加载器:这个模式会加载JAVA_HOME/lib下的jar包扩展类加载器:会加载 JAVA_HOME/lib/ext 下的 jar 包 系统类加载器:这个会去加载指定了 classpath 参数指定的 jar 文件 用户自定义类加载器:sun提供的ClassLoader是可以被继承的,允许用户自己实 现类加载器2、堆和栈
2、分别存放什么? 栈:基本数据类型和对象的引用 堆:对象和数组3、String、StringBuffer 、StringBuilder 的区别( 1)String 是不可变对象,也就是说每次修改String 都是新建了一个对象并赋值(2)StringBuffer 是字符缓冲区, 修改它不会新建对象, 可以使用 append() 方法和 delete() 方法修改 StringBuffer 的值(3)StringBuilder可以替代 StringBufer,它是一个单线程使用的类,和StringBufer比速度快、效率高,但是是非安全的( 4)三者都是被 final 修饰的 (这一点面试官的问我
3、的时候一直在说,你确定吗?搞得 我有点虚)4、Java的异常和错误有什么区别?( 1) ErrorError 是 JVM 的错误, 这种错误会严重影响程序的运行, 设计者不会设计程序代码 去捕捉这种错误,因为即使捕捉到也无法给予适当的处理,比如内存溢出。( 2) ExceptionException 包含了一般性的异常,这些异常同在在捕捉到之后便可做妥善的处理, 以确保程序继续运行。 Exception 有很多种分类,从 Exception 产生的时机上我们可以把 Exception 分为 运行时异常 运行时异常是指程序运行过程中可能出现的非正常状态 非运行时异常 非运行时异常是指方法声明时
4、throws 的异常5、&和& 的区别&是位运算符, 表示按位与运算。 & 是逻辑运算符, 表示逻辑与。 在条件判断的时 候&必须逐一检查各个条件, & 具有短路功能,只要一个条件为 false 则不会进行后续的判 断。6、abstract class 禾口 in terface 的区另 U(1)abstract class是抽象类,声明方法的存在而不去实现它的类叫做抽象类,它用于创建一个体现某些基本行为的类。抽象类中不能有构造方法、不能有静态方法,抽象类不能被实例化。抽象类中可以有变量、可以有普通方法、可以有抽象方法,在继承抽象方法后,必须实现它的所有抽象方法。(2) in terface是
5、接口,接口中的变量必须是静态常量(static final),接口中的方法必须都是抽象方法(abstract),不过由于接口中所有变量、方法修饰符都一致,因可以不写。接口的实现必须实现接口中所有的方法。7、final、fin ally、fin alize 的区别(1)final是用来描述变量、方法、类的关键字,表示变量值不可变、方法不 可被重写、类不可被继承(2)fin ally是异常处理的关键字,表示 fin ally块里面的代码一定会被运行到(3)finalize是Object类中的protected方法,垃圾回收器执行的时候会调用 被回收的类的此方法。8、接口是否可以继承接口?抽象类是否
6、可以实现接口?抽象类是否可以实现实体类?(1)接口可以继承接口(2)抽象类里可以有普通方法,因此抽象类可以实现接口,只需要实现接口 内所有方法就可以了(3)抽象类里可以有普通方法,变量也不需要是常量,因此抽象类可以实现 实体类9、 一个” java源文件中是否可以包含多个类(非内部类)?有什么限制?可以。必须只有一个类名与文件名相同且该类以public修饰10、java是怎么通过包名类名来获得该类的实例的?通过 Class.forName()方法11、介绍一下集合? Collection :是最基本的集合接口,一个collection代表一组 Object,即collection的 List
7、:是collection的扩展,作用是收集对象,并以索引方式保留收集对象的顺序。其元素有放入顺序,元素可重复。1)ArrayList:禾U用类似于数组的形式来存储数据,它的随机访问速度极快。2)LinkedList:内部实现是链表,它适合于在链表中间需要频繁的插入和删除 操作。3)Vector:与ArrayList相似,但是两者不同,Vector主要用在事先不知道数组 的大小,或者只是需要一个可以改变大小的数组的情况。4)ArrayList 与 Vector 的区别:ArrayList是非线程安全的,效率高 Vector 是基于 :线程安全的,效率低。 Set :也是collection的扩展
8、,在Set中的元素对象要求不能重复(注意:元素虽然无2 / 7放入顺序,但是元素在set中的位置是有该元素的HashCode 决定的,其位置其实是固定的)。常用实现类有 HashSet和TreeSet。1) HashSet:其核心是 HashMap, HashSet中存放的值为 HashMap中的key, 这也就是HashSet不允许重复的原因。2) TreeSet:底层由平衡二叉树实现,它会将投入其中的元素自动排序,这就要求投入其中的元素是可排序的,也就是说,存放的必须是同一种数据类 型。其实现自动排序的实质是compareable,即public int compareTo(Object
9、obj)if( equals( obj ) )return 0;elseReturn 1;这个方法称为比较器,可以比较两个对象,如果对象都一致相等,则返回0 Map :没有继承collection接口,提供key到value的映射,也就是说,它是一种把 键对象和值对象进行关联的容器。1) HashMap : key不允许重复,如果后面的key重复,则会覆盖前面的值,key 允许为null,但是只能有一个。2) TreeMap : key如果是一个对象的话,这个对象所在的类一定要实现 compareable 接口,并且重写 compareTo 方法。3) HashMap 与 HashTable比
10、较:HashMap :非线程安全,高效率,支持 null HashTable:线程安全,低效率,不支持 null12、list、set和map的遍历方法比较:List:可以用for循环、for each循环和Iterator迭代。Set:可以用for each循环和Iterator迭代。Map : HashMap 只能用 Iterator 迭代。13、写一个单例设计模式:Public class ApplePrivate static Apple apple;Private Apple( )Public static Apple getApple( )lf(null = apple)apple
11、 = new Apple();return apple;elsereturn apple;3 / 714、说说 static 关键字:Static 表示“全局”或“静态”的意思,可以用来修饰成员变量和成员方法,也可以形 成静态代码块,还可以用来修饰类,但只能修饰内部类。 static 变量:被 static 修饰的变量叫静态变量或者类变量;没有被 static 修饰的变量 叫实例变量。二者的区别是:静态变量: 在内存中只有一个拷贝 (节省内存) ,jvm 只会为静态分配一次内存, 而且在 加载类的过程中就完成静态变量的内存分配。可用类名直接访问(方便) ,也可以用对象来 访问(不推荐) 。静态
12、变量一般用于对象之间需要共享值时。实例变量: 每创建一个实例, 就会为实例分配一次内存, 实例变量在内存中可以有多个 拷贝,互不影响(灵活) 。 静态方法:它可以直接通过“类名. 静态方法”来访问,任何的实例亦可以调用。静态方法中不能用 this 和 super 关键字。不能直接访问所属类的实例变量和实例方法,只能 访问所属类的静态变量和成员方法。 static代码块:static代码块也叫静态代码块, 是在类中独立于类成员的static语句块,可以有多个,位置也可以随便放,它不在任何的方法体内,jvm 在加载类时会执行这些静态代码块, 如果有多个, 则会按照他们在类中出现的先后顺序一次执行它
13、们,而且每个代码块只会执行一次。15、Servlet 的生命周期: 加载和实例化:在 Servlet 容器检测到需要这个 Servlet 来响应第一个请求时,创建 Servlet 实例。 初始化:在Servlet实例化后,容器将调用Servlet的init ()方法初始化这个对象。 请求处理:Servlet容器将调用Servlet的service ()方法对请求进行处理。 服务终止:当容器检测到一个 Servlet 的实例应该从服务中被移除的时候,容器就会 调用实例的 destroy ()方法16、jsp 九大内置对象范围比较:排序为: Application Session Request
14、Page = Response = out = PageContext = config = exception 。Application :服务器启动到停止这段时间。Session: Http 会话开始到结束这段时间(浏览器打开到关闭)Request: Http 请求开始到结束这段时间,即一个 jsp 页面发出请求到另一个 jsp 页面之 间。Page:页面执行,当前页面从打开到关闭这段时间,它只能在同一个页面中有效Response:页面执行,包含了客户请求的有关信息,但jsp中很少用到它。Out :页面执行,向客户端输入内容时常用的对象PageC on text :页面执行,取得任何范围的
15、参数, 通过它可以获得 out、Requset、Respo nse、 Session、 application 等对象。Config:页面执行,取得服务器的配置信息。Exceptio n:仅在错误处理页面17、jsp 和 servlet 的区别与联系: JSP第一次运行的时候会编译成Servlet,驻留在内存中以供调用 JSP是 web开发技术,Servlet是服务器端运用的小程序 JSP更多的是进行页面显示,Servlet更多的是处理业务,即JSP是页面,Servlet是实现JSP方法 开发界面是JSP时,可以直接编写:数据; 而 Servlet 中则需要这样写: out.println(
16、数据 );18、fina l 关键字的作用(1) final 修饰的基本数据类型的值不可被改变,final 修饰的引用类型的引用不可变而 引用的值还是可以变的(2)final 修饰的方法不可被重写(3)final 修饰的类不可被继承(4) final 修饰的基本数据类型的形参在方法体内不可以被重新赋值,final 修饰的引用 类型的形参不可以被赋予一个新的引用数据库方面1问你怎么同时更新一个表中的两个字段?(假设表名为A,要更新的字段分别为name、age)update A set name = 姚明 , age = 35 where id = 10;2、 给student添加一个来自clas
17、ses的外键:(这个很容易被我们自己忽视)alter table student add constraint fk_stu_cls foreign key (cid) references classes (cid);3、数据库三范式:属性唯一、记录唯一、表唯一4、查询结果按 tid 排序(降序) : select * from test order by tid desc; (默认是按升序的)5、oracle 的左外连接Select * from dept d left outer join emp e on d.deptno = e.deptnoorder by d.deptno,e.e
18、name;SSH框架1 hibernate和JDBC相比有什么优势?1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4. hibernate 的性能非常好,因为它是个轻量级框架。 映射的灵活性很出色。 它支持各种 关系数据库,从一对一到多对多的各种复杂关系。2、为什么要用 struts ?JSP Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提
19、供了可能。但用这 些技术构建的系统非常的繁乱, 所以在此之上, 我们需要一个规则、 一个把这些技术组织起 来的规则,这就是框架, Struts 便应运而生。3、为什么要用 spring ?AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用 程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面 并应用到域对象上,同时不会增加域对象的对象模型的复杂性。IOC 允许创建一个可以构造对象的应用环境, 然后向这些对象传递它们的协作对象。 正如单 词 倒置 所表明的,IOC就像反 过来的JNDI。没有使用一堆抽象工厂、服务定位器、单元 素( s
20、ingleton )和直接构造( straight construction ),每一个对象都是用其协作对象构造的。 因此是由容器管理协作对象( collaborator )。Spring即使一个AOP框架,也是一 IOC容器。Spring最好的地方是它有助于您替换对象。 有了 Spring,只要用JavaBean属性和配置文件加入依赖性(协作对象)。然后可以很容易地 在需要时替换具有类似接口的协作对象。4、什么是MVC模式?有什么作用?MVC全名Model View Controller,即模型视图-控制器,是一种非常经典的软件架构模 式。从设计角度看, 它将多个设计模式在一种解决方案中结合
21、起来, 用来解决许多设计问题。 MVC 模式把用户界面交互分拆到不同的三个角色中,即:(1)模型:持有所有的数据、状态和程序逻辑,独立于视图和控制器。(2)视图:用来呈现模型。视图通常直接从模型中取得它要显示的状态和数据。对于相同 的信息可以有多个不同的显示形式或视图。(3)控制器: 位于视图和模型中间, 负责接收用户的输入, 将输入进行解析并反馈给模型, 通常有一个模型具有一个控制器。5、hibernate 的三种状态:瞬时状态持久状态游离状态6、C/S 和 B/S 的区别:优点:C/S:占用网速小,对于一些网速比较慢的电脑有明显的优势。B/S:不需要安装客户端,只需要浏览器就能打开。缺点:C/S:需要安装客户端,有时候需要更新。B/S:对网速的需求大,对于一些网速慢的电脑不适合。7、stru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程项目法务支持试题及答案
- 白水县2025-2026学年三上数学期末检测试题含解析
- 首饰营销方案设计
- 2025年工程经济备考路上试题及答案
- 谷雨品牌新媒体营销案例深度解析
- 知识整合的2025市政工程试题及答案
- 青春期心理健康安全教育
- 协作之美的2025年市政工程考试试题及答案
- 钉钉项目管理功能解析
- 项目档案管理试题及答案
- 《脑干出血》课件
- 2024年甘南州临潭县卫生健康系统引进紧缺卫生专业技术人才真题
- 成都市公共交通集团有限公司招聘笔试真题2024
- 2025高中英语电子版单选题100道及答案
- 2024年宁波市杭州湾大桥管理有限公司招聘笔试真题
- GB/T 2684-2025铸造用砂及混合料试验方法
- 粮食合伙收购协议书
- 案场仪容仪表规范要求
- 2025超市承包经营合同
- 2025-2030中国桥梁检查与维护行业市场发展趋势与前景展望战略研究报告
- 泡沫混凝土施工方案
评论
0/150
提交评论