java面试题1

来源:互联网 发布:mac上编程软件 编辑:程序博客网 时间:2024/06/14 01:41

一、简答题

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.csdn.net/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)

执行结果如下图所示


原创粉丝点击