JAVA面试题
- 格式:docx
- 大小:12.32 KB
- 文档页数:6
1,你觉得Java有什么好处?
答:(1)Java开源免费。
(2)跨平台性,一次编写,随处运行。
(3)是企业级应用的成熟平台。
(4)开源组织或非盈利性机构的支持。
(5)开发工具成熟。
(6)应用范围广,从手机到网站甚至桌面开发,从小型软件到大型软件都可以用Java
2,你了解ssh吗?请简述一下他们的流程?
答:JSP页面发出请求,Struts的action接收页面请求,由action调用业务逻辑组件,业务逻
辑组件调用Dao,Dao通过Hibernate访问数据库。
Spring通过依赖注入、AOP等功能,可以
管理Struts和Hibernate。
3,你懂swing开发吗?
答:Swing是一个用于开发Java应用程序用户界面的开发工具包,以抽象窗口工具包(AWT)为基础,可以实现跨平台。
使用NetBeans开发,开发步骤:
(1)导入Swing包
(2)选择界面风格
(3)设置顶层容器
(4)把各种控件(如按钮、标签)拖放到容器上
(5)设置各个控件的属性
(6)为各个控件添加事件处理
(7)可以使用Spring、Hibernate实现三层结构
4,你了解存储过程吗?
答:存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句的集合。
用户通过指
定存储过程的名字,并给出参数来执行它。
同时,存储过程可以带输出参数,也可以嵌套调用。
优点:(1)存储过程大大增强了SQL语言的功能和灵活性。
可以用流程控制语句编写(2)可保证数据的安全性和完整性
通过调用存储过程可以使没有权限的用户间接进行数据库操作,保证数据的安全。
通过存储过程可以使相关的数据库操作一起执行,从而可以维护数据库的完整性。
(3)存储过程的执行速度快
在运行存储过程前,数据库已经对其进行了编译
(4)可以降低网络的通信量
(5)存储过程可以重复使用,减少数据库开发人员的工作量
5,你用过sqlserver2008吗? sqlserver2005和sqlserver2008区别?
答:(1)SQL Server 2008 有智能提示,SQL Server 2005
(2)SQL 2008 增加了Date类型(仅表示日期)、Time类型(仅表示时间)
6,HQL和SQL语句有什么区别?
答: HQL语句是面向对象的,它要转换成SQL语句执行,HQL在各种数据库通用。
SQL是面向数据库表查询,不具有面向对象的特性,不同数据库SQL的语法会有些不同
7,反射机制是什么?
答:反射机制是指程序可以访问、检测和修改它本身状态或行为的一种能力。
Reflection是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性和方法。
允许程序于执行期取得任何已知名称的class的内部信息,并于执行期生成实例,改变属性,调用方法。
8,描述jvm加载class文件的原理机制?
答:在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分为检验、准备、解析
装载:查找和导入类或接口的二进制数据
链接:执行下面的校验、准备和解析步骤,其中解析步骤可以选择的
校验:检查导入类或接口的二进制数据的正确性
准备:给类的静态变量分配并初始化存储空间
解析:将符号引用转换成直接引用
初始化:激活类的静态变量,初始化Java代码和静态Java代码块
9,写出spring中的IOC的三种方法?
答:(1)接口注入:在接口中定义要注入的信息,并通过接口来完成注入(2)设置注入:在被注入类中定义set方法,并在参数中定义需要注入的对象。
先查找待依赖的对象,然后将其实例化,最后调用set方法将依赖对象注入
(3)构造注入:在要被注入的类中声明一个构造方法,并在此方法的参数中定义要注入的对象。
Spring调用构造方法时,会将这些对象都实例化好,然后经这些对象作为参数注入。
10,Error和exception的区别?
答: Error和Exception都继承自Throwable
Exception(1)可以被控制或不可控制
(2)表示一个由程序员导致的错误
(3)应该在应用程序级被处理
Error(1)总是不可控制的
(2)经常用来表示系统错误或底层资源错误
(3)如果可能的话,应该在系统级被捕捉
11,Tomact重启与结束进程的命令?
答:启动:net start tomcat6
结束:net stop tomcat6
12,String 和 StringBuffer有什么区别?
答:String:(1)是对象不是原始类型
(2)是不可变对象,一旦被创建,就不能修改它的值
(3)对于已经存在的String对象的修改都是重新创建一个新的对象,然后把
新的值保存进去
(4)String是final类,即不能被继承
StringBuffer:(1)是可变对象,当对它进行修改的时候不会像String那样重新建立对象
(2)它只能通过构造函数来建立
(3)在字符串连接操作中,StringBuffer比String的效率高
13,Jsp中有哪些内置对象?作用分别是什么?
答:
内置对象代表内容范围
request
request
触发服务器调用的请求
response对请求的应答
page
session为请求用户创建会话session application从servlet配置对象获得servlet上下文application
out向输出流写入内容的对象
page pageContext本JSP页面的上下文page
page实现处理本页当前请求的类的实例
page
config本JSP的ServletConfig page
exception表示JSP页面运行时产生的异常page
14,用SSH有什么优势?
答:(1)Struts:使用配置文件减少的代码的编写量,丰富的标签库,提高了易用性,以及
对url管理的一致性,增加了表单验证、formbean等特性,提高了程序的规范性。
(2)Hibernate:相对于JDBC,以操作对象去操作数据库,可以不用考虑SQL语句的具体形式,直接在对象上操作,极大减少了代码量
(3)Spring:IOC、AOP和数据库事务的自动管理,集成对各种框架的良好支持,低耦合、低入侵性,可以管理在容器中的框架,管理他们的生命周期和内存分配。
15,Spring有什么用?
答:(1)依赖注入
(2)AOP应用
16,写出Java中线程的几种同步方法,并简述其作用
答:(1)wait方法:
该方法属于obxxxxject的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所在的代码块的锁,并在其他线程调用notify
或者notifyAll方法时恢复到竞争锁状态(一旦获得锁就恢复执行)。
(2)notify方法和notifyAll方法:
notify方法通知调用了wait方法,但是尚未激活的一个线程进入线程调度队列(即进入锁竞争),注意不是立即执行。
并且具体是哪一个线程不能保证。
另外一点就是被唤醒的这个线
程一定是在等待wait所释放的锁。
notifyAll方法则唤醒所有调用了wait方法,尚未激活的进程进入竞争队列。
(3)synchronized关键字:
第一点:synchronized用来标识一个普通方法时,表示一个线程要执行该方法,必须取得该
方法所在的对象的锁。
第二点:synchronized用来标识一个静态方法时,表示一个线程要执行该方法,必须获得该
方法所在的类的类锁。
第三点:synchronized修饰一个代码块。
类似这样:synchronized(obj) { //code.... }。
表示一个线程要执行该代码块,必须获得obj的锁。
这样做的目的是减小锁的粒度,保证当不同块所
需的锁不冲突时不用对整个对象加锁。
利用零长度的byte数组对象做obj非常经济。