常见的Java面试题

来源:互联网 发布:向日葵软件下载 编辑:程序博客网 时间:2024/05/19 00:11
一、线程
1、如何实现线程
继承thread类
调用runnable接口
2、thread中run() 和start()
start()调用run()方法,run()直接调用方法,没有新的线程启动;start()启动新的线程
3、java中如何手动停止一个线程?
用volatile布尔变量来退出run()方法的循环或者是取消任务来中断线程。
4、死锁?
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
5、如何避免死锁?
避免死锁最简单的方法就是阻止循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以一定的顺序(升序或降序)做操作来避免死锁。
二、SQL
1、SQL优化
1) SQL语句及索引的优化
2) 数据库表结构的优化
3) 系统配置的优化
4) 硬件优化
2、什么是索引?
索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。
3、显示数据库中的最后一条记录的所有字段(ID是自增的)?
SELECT top 1 * FROM Table_Name ORDER BY ID DESC -- 或者
SELECT * FROM Table_Name WHERE ID=(SELECT MAX (ID) FROM Table_Name)
4、 显示数据库中的最后十条记录的所有字段(ID 是自增的  DESC 做降序 ASC 做升序)
SELECT top 10 * FROM Table_Name ORDER BY ID DESC
5、对来自表 authors 的前十个作者的 state 列进行更新
UPDATE s SET s.saleprice = s.saleprice+2 FROM sales s
WHERE s.saleid in (SELECT TOP 10 saleid FROM sales ORDER BY saleid)
6、找出公司里收入最高的前三名员工
select top 3 * from t1  order by a desc
7、找出公司里收入最高(低)的三->五名员工
select top 3 a from t1 where  a in ( select top 5 a from t1  order by a asc) order by a desc
8、取出表A中第31条到第40条记录(SQLServer,以自动增长的ID为主键,注意:ID可能不是连续的。)
-- top 10 可以省略
SELECT top 10 * FROM A WHERE ID not in (SELECT top 30 id FROM A)
9、显示出员工的平均工资大于3000元的部门名称(用SQL语句)
注意Full outer join,left join, right join,inner join区别和联系
SELECT Dept_Name
FROM t_Dept
WHERE ID in (SELECT Dept_IDFROM t_Salary
GROUP BY Dept_ID             --对部门分组(即:相同部门的,进行同一操作)
Having avg(Salary)>3000)
三、
1、接口和抽象类的区别
抽象类可以有抽象方法和普通方法,也可以有自己的数据成员.
接口只允许有常量,抽象方法和静态类成员.
接口可以被多继承,抽象类不行.接口被实现时,所有方法必须被重写.
抽象类被继承时如果有抽象方法没被重写,则子类也为抽象类.
2、用最有效的方法算出2乘以8等于几?
移位运算 int a=2<<3;
原创粉丝点击