亚信笔试题
一.问答题(每题4分,共20分)
1.HashMap和HashTable的区别?
2.String和StringBuffer的区别?
3.数据库内连接和外连接的区别?
4.Select语句中,哪些情况下,虽然在列上建立了索引,但索引不起作用?
5.在Unix系统当前的test目录中查找所有以test开头的文件?
二.Java编程题(每题12分,共24分)
1.请编写程序,实现对”5,8,2,4,3,6,1”数字按升序,降序进行输出?
2.写一段Jdbc连接Oracle的程序,并实现数据查询?
三.数据库基础知识(每题8分,共16分)
1.请问下面这条SQL执行后,哪些EmpID将作为结果中的一部分返回?
SELECT empid,dept,salary FROM employee outer
WHERE salary>(SELECT min(salary) FROM employee inner
WHERE inner.dept=outer.dept)
表结构如下:
Empid | Dept | Salary | HireDate | SupervisorID |
---|---|---|---|---|
1001 | Finance | 10000 | 1-Nov-98 | 1020 |
1002 | Finance | 15000 | 12-Dec-96 | 1020 |
1020 | Finance | 30000 | 9-Feb-93 | 1020 |
1015 | HumanResources | 20000 | 15-Mar-01 | 1035 |
1008 | Operations | 9000 | 22-Aug-97 | 1045 |
1010 | Operations | 12000 | 9-Jul-01 | 1013 |
1035 | Operations | 40000 | 14-Sep-95 | 1000 |
1007 | Maintenance | 5000 | 7-Oct-01 | 1017 |
1050 | HumanResources | 10000 | 5-Apr-98 | 1045 |
1000 | Executive | 60000 | 25-Nov-93 | |
1016 | HumanResources | 11000 | 13-Oct-01 | 1045 |
2.表acct_item(acct_item_id,acct_id,acct_item_tpye_id,charge(费用,单位分))
问题:查询acct_id 总费用大于100元的合同号,按总费用降序排序,总费用相同时,按acct_id升序排序
答案
一、问答题
1、
1)HashMap不是线程同步的,HashTable是线程同步的,所以在多线程的情况下HashMap速度会高于HashTable
2)HashMap允许空键值,HashTable不允许空键值
3)HashMap实现了Map接口,而HashTable是继承了Dictionary类
2、
String是final修饰的类,所以值一旦确定就不能更改,如果值发生变化会新建一个String对象
StirngBuffer的内容是可变的
3、
内连接:inner outer join 参与查询的两张表都必须满足连接条件
外连接:left|right outer join连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。
包括左外连接、右外连接和全外连接full join[左外+右外]
4、
1)where子句中使用+,-这类的运算符
2)模糊查询时使用 % 开头
3)建立的索引的列根本没有查询时
4)where子句中有or作为条件连接
5)如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
6) 查询条件使用函数在索引列上
7)where子句中使用了not in ,not exist等等
5、find /path路径 -name “test*"
二、编程题
1、
for (int i = 0; i < arr.length -1; i++){
for(int j = 0 ;j < arr.length - i - 1; j++){
if(arr[j] < arr[j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
2、
Class.for(“oracle.jdbc.driver.OracleDriver”);
String url=”jdbc:oracle:thin:@localhost:1521:orcl”;
Connection conn=DriverManager.getConnection();
Statement stat=conn.createStatement();
ResultSet rs=stat.executeQuery(“select * from table”);
While(rs.next()){
Int id=rs.getInt(“id”);
}
Rs.close();
Stat.close();
Conn.close();
Class.forName() //加载驱动
Connection conn = DriverManager.getConnection() //建立连接
PreparedStatement pstmt = conn.prepareStatement(sql); //预编译sql语句
//如果需要设置值
ResultSet result = pstmt.执行sql语句 ,获取结果集
三、数据库
1、排除各部最低工资的所有员工ID
1002 Finance 15000
1010 Operations 12000
1015 HumanResources 20000
1016 HumanResources 11000
1020 Finance 30000
1035 Operations 40000
2、
select acct_id,sum(charge) ch
from acct_item
group by acct_id
having sum(charge)>100
order by sum(charge) desc,charge asc
或
Select acc_id,sum(charge) sum_charge
from acct_item
Group by acc_id
Having sum(charge)>100
Order by sum_charge desc,acct_id asc