试题2
1,short s1=1;s1=s1+1;有什么错? short s1=1;s1+=1;有什么错?
(1)高位转低位需要强制转换
(2)低位转高位自动转.
i 是int 型 s1 short型,通过 + 运算后s1自动转为int型,所以错!
s1+=1等效于 s1=(short)(s1+1),所以是正确的。
2,用最有效率的方法算出2乘以8等于几?
2 << 3,移位操作
3,请说出作用域public,private,protected,以及不写时的区别.
public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
默认情况(不写)下,属于一种包访问,即能被类本身以及同一个包中的类访问。
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
4,构造器Constructor是否可被override?
(1)构造器是干什么用的?(what)
构造器是用来生成一个类的实例是用来初始化这个实例用的
(2)构造器如何工作?(how)
Java在构造实例时的顺序是这样的:
1、分配对象空间,并将对象中成员初始化为0或者空,java不允许用户操纵一个不定值的对象。
2、执行属性值的显式初始化
3、执行构造器
4 、将变量关联到堆中的对象上
而执行构造器的步骤有可以分为以下几步:
1、Bind构造器的参数
2、如果显式的调用了this,那就递归调用this构造器然后跳到步骤5
3、递归调用显式或者隐式的父类构造器,除了Object以外,因为它没有父类
4、执行显式的实例变量初始化(也就是上边的流程中的第二步,调用返回以后执行,
这个步骤相当于在父构造器执行后隐含执行的,看样子像一个特殊处理)
(3)构造器不可被orerride(why)
构造器不是方法,那么用来修饰方法特性的所有修饰符都不能用来修饰构造器(并不等与构造器具备这些特性,虽然不能用static修饰构造器,但它却有静态特性)构造器只能用 public private protected这三个权限修饰符,且不能有返回语句。
5,是否可以继承String类?
因为Sting是这样定义的:public final class String extends Object,里边有final关键字,所以不能被继承。
什么样的类不能被继承?
(1)在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的。
(2)final是java中的一个关键字,可以用来修饰变量、方法和类。用关键词final修饰的域成为最终域。用关键词final修饰的变量一旦赋值,就不能改变,也称为修饰的标识为常量。如果一个类的域被关键字final所修饰,它的取值在程序的整个执行过程中将不会改变。
(3)假如说整个类都是final,就表明自己不希望从这个类继承,或者不答应其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)。
6,描述一下JVM加载class文件的原理机制?
7,java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的.
8,STRUTS的应用.
Struts是对JSP Model2设计标准的一种实现,下面分别从模型(Model)、试图(View)和控制器(Controller)3个部分介绍Struts的体系结构和工作原理。一般情况,Struts框架中的模型是有JavaBean或者EJB构成,视图是由JSP页面组成,控制器是由ActionServlet和Action实现。
1.模型
模型表示应用程序的状态和业务逻辑的处理,在一般的Web应用程序中,用JavaBean或EJB来实现系统的业务逻辑,在Struts框架中,模型层也是用JavaBean或EJN实现的。
2.视图
在Struts中,视图层广义上包括两个部分,即JSP页面和ActionForm。ActionForm封装了用户提交的表单信息,其实ActionForm在本质上就是JavaBean,在这些JavaBean中没有具体的业务逻辑。只提供了所有属性的getter和setter方法,这些属性和用户表单中的输入项是一一对应的。在Struts中就是通过ActionForm把用户的表单信息提交给控制器的。
Struts中的视图组件包括JSP页面,这也是经典MVC模式中主要的视图组件,这些JSP页面承担了信息展示和控制器处理结果显示的功能。
3.控制器
Struts框架中主要的控制器是ActionServlet,它处理用户端发送过来的所有请求。当ActionServlet接受到来自浏览器端的请求以后,会根据struts-config.xml这个配置文件寻求匹配的URL,然后把用户的请求发送到合适的控制器中。
Struts框架就是通过控制器ActionServlet完成模型层和业务逻辑层的分离,从而降低了Web应用程序的耦合度,实现了MVC的经典架构。
9,hibernate的inverse属性的作用?
hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的。inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联由对方控制。
10,介绍一下Hibernate的二级缓存.
11,用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红色字体.
<body> <table id="tbl"> <tr><td>1</td></tr> <tr><td>2</td></tr> <tr><td>3</td></tr> <tr><td>4</td></tr> <tr><td>5</td></tr> <tr><td>6</td></tr> <tr><td>7</td></tr> <tr><td>8</td></tr> <tr><td>9</td></tr> <tr><td>10</td></tr> </table> </body> <script type="text/javascript"> window.onload=function() { var tbl = document.getElementById("tbl"); rows = tbl.getElementsByTagName("tr"); for(i=0;i<rows.length;i++) { var j = parseInt(i/3); if(j%2==0) rows[i].style.backgroundColor="#f00"; else rows[i].style.backgroundColor="#0f0"; } } </script>
12,第一个人10,第二个比第一个人大2岁,以此类推,请用递归方式计算出第八个人多大?
public class Test { public static void main(String[] args) { System.out.println(computeAge(8)); } public static int computeAge(int n) { if (n == 1) { return 10; } else { return computeAge(n - 1) + 2; } } }
13,请写出用于校验HTML文本框中输入的内容全部为数字的JavaScript代码
<input type="text" id="d1" onblur=" chkNumber(this)"/> <script type=”text/javascript” /> function chkNumber(eleText) { var value =eleText.value; var len =value.length; for(vari=0;i<len;i++) { if(value.charAt(i)>"9"|| value.charAt(i)<"0") { alert("含有非数字字符"); eleText.focus(); break; } } } </script>
14,查出比经理薪水还高的员工信息
Drop table if not exists employees;
create table employees(id int primary key auto_increment,name varchar(50)
,salary int,managerid int references employees(id));
insert into employees values (null,' lhm',10000,null),
(null,' zxx',15000,1),(null,'flx',9000,1),(null,'tg',10000,2),(null,'wzg',10000,3);
Wzg大于flx,lhm大于zxx
解题思路:
根据sql语句的查询特点,是逐行进行运算,不可能两行同时参与运算。
涉及了员工薪水和经理薪水,所有,一行记录要同时包含两个薪水,所有想到要把这个表自关联组合一下。
首先要组合出一个包含有各个员工及该员工的经理信息的长记录,譬如,左半部分是员工,右半部分是经理。而迪卡尔积会组合出很多垃圾信息,先去除这些垃圾信息。
select e.* from employees e,employees m where e.managerid=m.id
and e.salary>m.salary;
15,一个用户表中有一个积分字段,例如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决?