一、判断题
- 在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成一个各属性与赋值对象相同的新对象。 (X)
【分析】 对象赋值是引用传递; - 如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确的;(√)。
【分析】子类可以赋值给父类; - 抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。 (X)
【分析】并不是说抽象类中必须有抽象方法,即使一个类中的方法全部实现过,也可以用abstract修饰为抽象类,所以抽象类不一定都有抽象方法。 - Final类不能派生子类,Final类不能被覆盖。(√)
- 一个Java文件可以有多个class定义。 (√)
【分析】
Test2.java文件中:
class A{}
abstract class B{}
final class C{}
编译后: A.class B.class C.class
二、简答题
- Java有哪些数据类型?各占用多少字节?
答:boolean –不确定,视编译环境而定;byte –1字节;short– 2字节;int –4字节;long –8字节;char – 2字节;float – 4字节;double – 8字节; - 谈谈Java中int 和 Integer的区别与使用场景
答:
区别:1)int 是基本数据类型;Integer是int的封装类; 2)类初始化时,int 初始值是0;Integer初始值是null;
使用场景:1)加减乘除运算或参数传递时,用int; 2)希望像对象一样处理,使用Integer; - 谈谈你对MVC的理解
- CSS有哪几种选择符(Selectors)以及CSS优先级规则?
答:
行内样式 : 数值1000(不是二进制);
ID选择符:数值0100(不是二进制);
类选择符:数值0010(不是二进制);
类型选择符:数值0001(不是二进制);
例如,body #wrap p {…},那么它的优先级指数就是 1+100+1=102,而body div #wrap p {…}的优先级指数就是 1+ 1 +100 + 1 =103。 - 请描述一下你最熟悉的Web框架(平时如何使用,有何优缺点等)
- 已知数据表模型如下,其中学历用编码方式存储,定义为(01:研究生,02:本科,03:专科,04:高中)
a. 编写一个查询,找出2000年以后毕业的人员;
select a.*
from 人员表 a, 学历表 b
where a.人员编号=b.人员编号 and 毕业时间 > 2000;
b. 编写一个SQL,更新人员表中所有人的最高学历(最高学历来自于学历表);
update 人员表 a
set a.最高学历=(select max(学历) from 学历表 b where a.人员编号=b.人员编号);
c. 如果人员表要做多库合并,做为主键的人员编号该如何设计?
答:使用NewID()函数;
NewID()函数是从他们的网卡上的标识数字和CPU时钟的唯一的数字生成新的UniqueIdentifier数据 ,这个数据和GUID是一样的每台计算机能生成全球唯一的值
这样在多台计算机和多网络之间生成具有唯一性的标识符。
三、编程题
1.编写一个JavaScript函数,利用dom知识,创建一个div节点,div中有文字发“Hello World”,且div边框颜色为黑色,文字“hello world”字体颜色为红色。
<script type="text/javascript">
var oDiv=document.createElement('div');
oDiv.innerHTML="Hello World";
//设置颜色
oDiv.style.color="red";
oDiv.style.border="#aaaaaa 1px solid";
document.body.appendChild(oDiv);
</script>
2.Java编程,用数组实现栈。
Stack.java
//定义栈接口
public interface Stack<T> {
public void clear(); //清除栈
public boolean isEmpty(); //判断是否为空
public T peek(); //查看栈顶对象而不移除
public T pop(); //移除堆栈的顶部对象
public void push(T element); //放入栈中
public int size(); //查看栈大小
}
ArrayStack.java
import java.util.Arrays;
public class ArrayStack<T> implements Stack<T>{
private final int DEFAULT_SIZE = 5;//数组默认的容量
private int capacity;//栈的容量
private int size;//栈的大小
private int top;//指向下一个要添加的元素的位置
private Object[] array; //数组
public ArrayStack(){
this.capacity = DEFAULT_SIZE;
this.array = new Object[this.capacity];
this.size = 0;
}
public ArrayStack(int capacity){
this.capacity = capacity;
this.array = new Object[this.capacity];
this.size = 0;
}
@Override
public void clear() {
Arrays.fill(this.array, null);
this.size = 0;
this.top = 0;
this.capacity = DEFAULT_SIZE;
this.array = new Object[capacity];
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public T peek() {
if(isEmpty())
return null;
return (T)this.array[this.top - 1];
}
@Override
public T pop() {
T element = (T)this.array[top - 1];
array[top - 1] = null;
this.top = this.top - 1;
this.size--;
return element;
}
@Override
public void push(T element) {
if(this.size < this.capacity){
this.array[top] = element;
this.size++;
this.top++;
}else{ //若栈的容量不够则扩充栈的容量
addStackCapacity();
push(element);
}
}
private void addStackCapacity() {
this.capacity = this.capacity + DEFAULT_SIZE; //默认增加的幅度为5
Object[] newArray = new Object[this.capacity];
System.arraycopy(this.array, 0, newArray, 0, this.array.length); //把旧数组的值复制到新的数组中
Arrays.fill(this.array, null); //把原来数组的值都变为空
this.array = newArray;
}
@Override
public int size() {
return this.size;
}
}
四、数据库题
1.表内容如下
要生成下列结果,该如何写SQL语句?(自定义表,将对应的数据导入到自定义表中,然后查询出对应的数据)
该题主要是考临时表的使用,数据的导入及查询语句与group by的使用。
sql
Drop table if exists `competition`;
Create temporary table `competition`(
`id` int(20) not null auto_increment,
`name` varchar(10) default null,
`value` varchar(10) default null,
Primary key (`id`)
);
insert into competition(name, value) values('A','胜'),('A','胜'),('A','负'),('A','负'),('B','胜'),('B','胜'),('B','胜'),('C','负');
select c.name, sum(case when c.value='胜' then 1 else 0 end) as '胜', sum(case when c.value='负' then 1 else 0 end) as '负'
from competition c
group by c.name;
2.表Template中有A、B、C三列,用SQL语句实现,当列A大于列B时选择A列否则选择B列,当列B大于列C时选择B列否则选择C列。 这道题主要是考 case when的使用。
sql
select
Case when t.A > t.B then t.A
Else t.B
End
Case when t.B > t.C then t.B
Else t.C
End
from Template t;
3.将表temp1中t1字段的值更新为temp2中t2的值,他们的关联字段为id; 这道题主要是考update的使用。
sql
update temp1, temp2 set temp1 .t1 = temp2.t2 where temp1.id = temp2.id;
4.将人员表中A01中参加工作时间A0141小于等于“1987-10-30”的数据删除;这道题主要是考delete语句的使用。
sql
delete from A01 where A0141 <= ‘1987-10-30’;
5.字符串“abcd123”,分别取出该字符串前四个字符,右边三个字符。这道题主要考取部分字符串的函数使用。
sql
#取前四个字符
select left('abcd123', 4) as a;
#取右边四个字符
select right('abcd123', 3) as b;