Java岗位面试题(南京才丰软件技术开发有限公司)

一、判断题

  1. 在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成一个各属性与赋值对象相同的新对象。 (X)
    【分析】 对象赋值是引用传递;
  2. 如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确的;(√)。
    【分析】子类可以赋值给父类;
  3. 抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。 (X)
    【分析】并不是说抽象类中必须有抽象方法,即使一个类中的方法全部实现过,也可以用abstract修饰为抽象类,所以抽象类不一定都有抽象方法。
  4. Final类不能派生子类,Final类不能被覆盖。(√)
  5. 一个Java文件可以有多个class定义。 (√)
    【分析】
    Test2.java文件中:
    class A{}
    abstract class B{}
    final class C{}
    编译后: A.class B.class C.class

二、简答题

  1. Java有哪些数据类型?各占用多少字节?
    答:boolean –不确定,视编译环境而定;byte –1字节;short– 2字节;int –4字节;long –8字节;char – 2字节;float – 4字节;double – 8字节;
  2. 谈谈Java中int 和 Integer的区别与使用场景
    答:
    区别:1)int 是基本数据类型;Integer是int的封装类; 2)类初始化时,int 初始值是0;Integer初始值是null;
    使用场景:1)加减乘除运算或参数传递时,用int; 2)希望像对象一样处理,使用Integer;
  3. 谈谈你对MVC的理解
  4. CSS有哪几种选择符(Selectors)以及CSS优先级规则?
    答:
    行内样式 : 数值1000(不是二进制);
    ID选择符:数值0100(不是二进制);
    类选择符:数值0010(不是二进制);
    类型选择符:数值0001(不是二进制);
    例如,body #wrap p {…},那么它的优先级指数就是 1+100+1=102,而body div #wrap p {…}的优先级指数就是 1+ 1 +100 + 1 =103。
  5. 请描述一下你最熟悉的Web框架(平时如何使用,有何优缺点等)
  6. 已知数据表模型如下,其中学历用编码方式存储,定义为(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;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值