java面试题02
1.JAVA内部使用的编码格式是(utf-8)
2.
public class Threads2 implements Runnable {
@Override
public void run() {
System.out.println("run.");
throw new RuntimeException("problem");
}
public static void main(String[] args) {
Thread t = new Thread(new Threads2());
t.start();
System.out.println("End of method.");
}
}
执行结果:
run.
End of method.
Exception in thread "Thread-0" java.lang.RuntimeException: problem
或者:
End of method.
run.
Exception in thread "Thread-0" java.lang.RuntimeException: problem
3.
public class SimpleCalc {
public int value;
public void calculate() {
value += 7;
}
}
public class MultiCalc extends SimpleCalc {
public void calculate() {
value -= 3;
}
public void calculate(int multiplier) {
calculate();
super.calculate();
value *= multiplier;
}
public static void main(String[] args) {
MultiCalc calculate = new MultiCalc();
calculate.calculate(2);
System.out.println("value is:" + calculate.value);
}
}
输出结果:vaue is:8
4.对于JSP的通用规则,描述正确的是:
如果URL不是以“/”开始的,就被解释为相对于当前的JSP路径。
5.在MVC设计模式中,JavaBean的作用域是:
model
6.在一个Filter中,处理Filter业务的是什么方法?
doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
7.对下面Spring声明式事务的配置含义的说明错误是(缺少SqlSessionFactory属性的注入)。
8、hibernate API中的几口有一下几类 配置hibernate的接口是 configuration
9、事务的原子性是指:事务的原子性是指事务的所有操纵在数据库中要么全部正确反映出来,要么全部不反映
10、外链接的条件可以放在以下哪一个语句中 where;
第二部分 简答题
1、List Map Set 三个接口在存取元素时各有什么特点?
答:
List与Set都是单列元素的集合,它们有一个功共同的父接口Collection。
Set里面不允许有重复的元素,
存元素:add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true;当集合含有与某个元素equals相等的元素时,此时add方法无法加入该元素,返回结果为false。
取元素:没法说取第几个,只能以Iterator接口取得所有的元素,再逐一遍历各个元素。
List表示有先后顺序的集合,
存元素:多次调用add(Object)方法时,每次加入的对象按先来后到的顺序排序,也可以插队,即调用add(int index,Object)方法,就可以指定当前对象在集合中的存放位置。
取元素:方法1:Iterator接口取得所有,逐一遍历各个元素
方法2:调用get(index i)来明确说明取第几个。
Map是双列的集合,存放用put方法:put(obj key,obj value),每次存储时,要存储一对key/value,不能存储重复的key,这个重复的规则也是按equals比较相等。
取元素:用get(Object key)方法根据key获得相应的value。
也可以获得所有的key的集合,还可以获得所有的value的集合,
还可以获得key和value组合成的Map.Entry对象的集合。
List以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。
2、列举你所知道的排序方法 请写出快捷排序的伪代码?
答:排序的方法有:插入排序,选择排序,冒泡排序,堆排序,快速排序,归并排序,计数排序,基数排序,桶排序
快速排序的伪代码:
public void QuickSort(SeqList R,int low,int high){
int pivotpos;//划分后的基准记录的位置
if(low<high){
//仅当区间长度大于1时才需排序
pivotpos = Partition(R,low,high);//对R[low...high]进行划分
QuickSort(R,low,pivotpos-1);
QuickSort(R,pivotpos+1,high);
}
}
3、谈谈 final、finally、finalize 的区别?
答:
1.final:如果一个类被final修饰,意味着该类不能派生出新的子类,不能作为父类被继承。因此一个类不能被声明为abstract,又被声明为final。将变量或方法声明为final。可以保证他们在使用的时候不被改变。其初始化可以在两个地方:一是其定义的地方,也就是在final变量在定义的时候就对其赋值;二是在构造函数中。这两个地方只能选其中的一个,要么在定义的时候给值,要么在构造函数中给值。被声明为final的方法也只能使用,不能重写。
2.finally:在异常处理的时候,提供finally块来执行任何的清除操作。如果抛出一个异常,那么相匹配的catch字句就会执行,然后控制就会进入finally块,前提是有finally块。
3.finalize:finalize是方法名,java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是在垃圾收集器确认一个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此,所有的类都继承了它。子类覆盖finalize()方法已整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
4、Struts的validate框架是如何验证的?(Struts1与Struts2任选其一)
答案:
方法一:Action类继承ActionSupport类,其中ActionSupport实现了Validateable接口,并定义了validation方法,只要在用户自定义的Action类中重写该方法就可以实现该功能。
其中错误信息可以通过addFieldError方法将错误信息保存起来。
方法二:在Action类的文件的路径下,添加一个校验文件ActionName-validation.xml,并配置校验器。
5、叙述Spring AOP事务的含义。
答案:
spring有两种事务配置方式,一种是配置的事务管理器,另一种的是代码控制的事务。
配置的事务管理器的方式是我们经常用到的经常会用到在配置文件中。代码控制的事务分为jdbc模板的和事务管理器的,jdbc默认自动提交,事务管理器的和咱们通常的一样会有commit rollback等操作。
第三部分:编程题
1、写出使用jdbc连接数据库进行查询的java代码。(数据库不限)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBCon {
//数据库驱动对象
public static final String DRIVER="oracle.jdbc.driver.OracleDriver";
//数据库连接地址(数据库名)
public static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//登陆名
public static final String USER="FM";
//登陆密码
public static final String PWD="FM";
//创建数据库连接对象
private Connection con=null;
//创建数据库预编译对象
private PreparedStatement
ps=null;
//创建结果集
private ResultSet rs=null;
//创建数据源对象
public static DataSource
source=null;
/**
* 获取数据库连接
*/
public Connection getCon(){
try {
Class.forName(DRIVER);
} catch
(ClassNotFoundException e) {
e.printStackTrace();
}
try {
con=DriverManager.getConnection(URL,USER,PWD);
} catch (SQLException e)
{
e.printStackTrace();
}
return con;
}
/**
* 关闭所有资源
*/
public void closeAll(){
if(rs!=null)
try {
rs.close();
} catch (SQLException e)
{
e.printStackTrace();
}
if(ps!=null)
try {
ps.close();
} catch (SQLException e)
{
e.printStackTrace();
}
if(con!=null)
try {
con.close();
} catch (SQLException
e) {
e.printStackTrace();
}
}
/**
* @param sql数据库查询语句
* @param pras参数列表(可传,可不传,不传为NULL,以数组形式存在)
* @return 返回结果集
*/
public ResultSet query(String
sql,String... pras){
con=getCon();
try {
ps=con.prepareStatement(sql);
if(pras!=null)
for(int
i=0;i<pras.length;i++){
ps.setString(i+1,
pras[i]);
}
rs=ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
}
2、写出实现下述功能的SQL语句
有两个表PRODUCT(产品信息表)和表PRODUCT_SS(产品进销表)。
PRODUCT表有下列字段:
字段 |
字段说明 |
字段类型 |
字段长度 |
说明 |
PRO_ID |
产品编号 |
字符型 |
10 |
主键 |
PRO_NAME |
产品名称 |
字符型 |
50 |
|
PRO_COUNT |
产品总量 |
数字型 |
10 |
PRODUCT_SALE表有下列字段:
字段 |
字段说明 |
字段类型 |
字段长度 |
说明 |
ID |
序号,自增 |
主键 |
||
PRO_ID |
产品编号 |
字符型 |
10 |
外键 |
SALE_COUNT |
销售数量 |
数字型 |
6 |
|
SS_DATE |
发生日期 |
日期型 |
1)写出建表的SQL语句
答案:
CREATE TABLE PRODUCT(
PRO_ID VARCHAR(10) PRIMARY KEY COMMENT '产品编号',
PRO_NAME VARCHAR(50) COMMENT '产品名称',
PRO_COUNT INT(10) COMMENT '产品总量'
)COMMENT='产品信息表';
CREATE TABLE PRODUCT_SALE(
ID INT(10) PRIMARY KEY AUTO_INCREMENT COMMENT '序号',
PRO_ID VARCHAR(10) COMMENT '产品编号',
SALE_COUNT INT(6) COMMENT '销售数量',
SS_DATE DATE COMMENT '发生日期'
)COMMENT='产品进销表';
ALTER TABLE PRODUCT_SALE
ADD CONSTRAINT
FOREIGN KEY(PRO_ID) REFERENCES PRODUCT(PRO_ID)
2)显示产品编号以”12”开头的产品信息。
答案:
SELECT * FROM product WHERE pro_id LIKE '12%';
3)插入PRODUCT_SALE表中产品编号为”67890”的产品销售数量为2000。(注 意事务)
答案:
BEGIN;
INSERT INTO product_sale (pro_id,sale_count)
VALUES(67890,2000);
COMMIT;
4)显示所有产品的库存,要求显示产品名称和库存数量(用一条SQL语句).
答案:
SELECT pro_name,pro_count
FROM product;
5)显示所有产品的库存,要求显示产品名称、库存数量、库存状态。(用一条 SQL语句).
当库存数 >=10000时,库存状态显示库存积压;
当库存数 <=1000时,库存状态显示库存不足;
其他情况,库存状态显示库存正常。
答案:
SELECT pro_name AS 产品名称, pro_count AS 库存数量,
(
CASE
WHEN pro_count >= 10000 THEN '库存积压'
WHEN pro_count > 1000 AND pro_count < 10000 THEN '库存正常'
WHEN pro_count <= 1000 THEN '库存不足'
END
)
AS 库存状态
FROM product;
java面试题02的更多相关文章
- Java面试题(全)--视频系列
此系列为面试笔试题的视频讲解,以下均为超链接,点击即可进入每个知识点的讲解. Java面试题01.面试的整体流程 Java面试题02.java的垮平台原理 Java面试题03.搭建一个java的开发环 ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- 一线互联网企业常见的14个Java面试题,Java面试题集大全等你拿,颤抖吧程序员!
本文由尚学堂学员们根据自己参加过的面试回忆.总结而成,一线互联网企业常见的14个Java面试题,包括各大互联网企业.创业小公司,互联网企业.传统软件公司.对于刚毕业和想要跳槽的宝宝们,再适用不过啦,赶 ...
- java面试题8
java面试题08 1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;编译 ...
- leetcode面试题 02.06. 回文链表,解题心路
目录 leetcode面试题 02.06. 回文链表,解题心路 1.题目描述 2.java语言题解一 3.java语言题解二 4.C语言题解一 leetcode面试题 02.06. 回文链表,解题心路 ...
- 面试题 02.02. [链表][双指针]返回倒数第 k 个节点
面试题 02.02. 返回倒数第 k 个节点 方法一:使用外部空间 // 执行用时: 1 ms , 在所有 Java 提交中击败了 16.75% 的用户 // 内存消耗: 36.8 MB , 在所有 ...
- Java基础语法02——流程控制
流程控制:顺序结构.分支结构(if-else.switch-case).循环结构(for.while.do-while)
- java面试题及答案(转载)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
随机推荐
- 第八章:部署Tornado
到目前为止,为了简单起见,在我们的例子中都是使用单一的Tornado进程运行的.这使得测试应用和快速变更非常简单,但是这不是一个合适的部署策略.部署一个应用到生产环境面临着新的挑战,既包括最优化性能, ...
- springboot统一异常处理及返回数据的处理
一.返回code数据的处理 代码: Result.java /** * http请求返回的最外层对象 * Created by 廖师兄 * 2017-01-21 13:34 */ public cla ...
- cordova安卓sdk
Android SDK在线更新镜像服务器来下载安装: 1.北京化工大学镜像服务器地址: IPv4: ubuntu.buct.edu.cn/ 端口:80 IPv4: ubuntu.buct.cn/ 端口 ...
- ML之多元线性回归
转自:http://www.cnblogs.com/zgw21cn/archive/2009/01/07/1361287.html 1.多元线性回归模型 假定被解释变量与多个解释变量之间具有线性关系, ...
- POJ 1160 经典区间dp/四边形优化
链接http://poj.org/problem?id=1160 很好的一个题,涉及到了以前老师说过的一个题目,可惜没往那上面想. 题意,给出N个城镇的地址,他们在一条直线上,现在要选择P个城镇建立邮 ...
- Java中操作Redis
一.server端安装 1.下载 https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6 下载后的文件为: 解压后,选择当前64位win7系统对 ...
- 11g OCM自动打补丁
1.先替换掉OPatch软件 每个实例都要运行 GRID_HOME和ORACLE_HOME的OPatch目录都去除掉 把OPatch软件p6880880_112000_Linux-x86-64.zip ...
- 安装VMware Tools:Ubuntu
1.首先准备好linux.iso,在安装目录下应该可以找到,我使用的是这个: 链接:http://pan.baidu.com/s/1nuGQyIt 密码:b5mn 2.打开Ubuntu,CD中加载该i ...
- C# 设计模式巩固 - 单例模式
前言 设计模式的文章很多,所以此文章只是为了巩固一下自己的基础,说的不详细请见谅. 介绍 - 单例模式 官方定义:确保一个类只有一个实例,并提供一个全局访问点. 通俗定义:就是一个类只有一个单个实例. ...
- Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory 解决办法
当你使用的Gradle版本是2.4以上,Android插件版本是1.3.0以上的时候就会出现这个问题,这时候你只需将android-maven-gradle-plugin插件版本改为classpath ...