一、简答题
1、Collection和Collections的区别?
答:Collection是集合类的上级接口,继承与他的接口主要有Set和List。
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
2、Truncate和delete的区别?
答:Delete删除的记录如不提交可以恢复,此命令不能删除回滚段中的数据。
truncate删除的记录不能回复,并可以删除回滚段中的数据。
3、用正则表达式获取由数字和26个英文组成的字符串
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test{
public static void main(String[] args){
String str="akl今天是个jj.A@好日子_2.33";
String s = "[a-zA-Z0-9]";
Pattern pattern=Pattern.compile(s);
Matcher ma=pattern.matcher(str);
while(ma.find()){
System.out.print(ma.group());
}
}
}
运行结果如下:
4、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别?
答:区别主要有两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型 b.逻辑操作不会产生短路
5、public class Something{
void doSomething(){
private String s="",
int l = s.length();
}
}
请找出以上程序中的错误
答:局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量。所以要删除private或者将private换成final。
6、运行时异常与一般异常有何异同?
答:异常表示程序过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作过程中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
第二种更清晰的解释:
Java提供了两类主要的异常:运行时异常runtime exception和一般异常checked exception。checked 异常。对于后者这种异常,JAVA要求程序员对其进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。
运行时异常我们可以不处理。这样的异常由虚拟机接管。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。
7、Servlet可以存储数据的三个不同的作用域是?
答:请求、会话和上下文。
详细解释:
就servlet规范本身,servlet可以再三个不同的作用域存储数据,分别是:Request对象、Session对象和ServletContext对象中保存。
二、java编程题
1、有一个字符串"ECALYHWEQAEFSZC",请写程序找出其中有多少字符,每种字符有几个,并打印出来?
import java.util.HashMap;
import java.util.Map.Entry;
public class Test2 {
public static void main(String[] args) {
String s="ECALYHWEQAEFSZC";
HashMap<Character,Integer> map=new HashMap<Character,Integer>();
for (int i=0;i<s.length();i++) {
char c=s.charAt(i);
Integer num=(Integer)map.get(c);
if(num==null){
num=1;
}else{
num++;
}
map.put(c, num);
}
for(Entry<Character, Integer> entry:map.entrySet()){
System.out.print(entry.getKey()+"="+entry.getValue()+" ");
}
}
}
运行结果如下:
2、写一段Jdbc连接Oracle的程序,并实现数据查询?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* 写一段Jdbc连接Oracle的程序,并实现数据查询?
* @author Taylor
*
*/
public class Test3 {
String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String dbUser="scott";
String dbPwd="tiger";
Connection con =null;
PreparedStatement pstmt=null;
ResultSet rs=null;
public Test3(String sql){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
con=DriverManager.getConnection(dbUrl,dbUser,dbPwd);
pstmt=con.prepareStatement(sql);
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet excuteQuery(){
rs=null;
try {
rs=pstmt.executeQuery();
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
public void closeCon(){
try {
if(pstmt!=null){
pstmt.close();
}
if(con!=null){
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ResultSet rs;
Test3 test3=new Test3("select * from emp");
rs=test3.excuteQuery();
try {
while(rs.next()){
System.out.print(rs.getString("empno")+"-"+rs.getString("ename")+" ");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
test3.closeCon();
}
}
}
运行结果如下:
java连接oracle的jar包:http://download.youkuaiyun.com/download/zenglinshan/9866943
三、数据库基础知识
emp表中的示例数据如图-1所示:
dept表中的示例数据如图-2所示:
注意:这个题中用到的表刚好可以从上一题得通过select * from emp;select * from dept;这两条语句得到
1、查询出薪水比本部门平均薪水高的员工信息。
答:select a.* from emp a,(select deptno,avg(sal) avgsal from emp group by deptno)b where a.deptno=b.deptno and a.sal>b.avgsal
执行结果如下图所示
2、查出不在部门20,且比部门20中任何一个人工资都高的员工姓名,部门名称
select ename,deptno from emp where deptno!=20 and sal>(select max(sal) from emp where deptno=20)
执行结果如下图所示