牛客用友201803

1、Java标识符

由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。

2、有关线程的哪些叙述是对的

DCB

A. 一旦一个线程被创建,它就立即开始运行。 (错误)
B. 使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。
C. 当一个线程因为抢先机制而停止运行,它可能被放在可运行队列的前面。
D. 一个线程可能因为不同的原因停止并进入就绪状态。

在这里插入图片描述

3、下面关于变量及其范围的陈述哪些是不正确的

正确答案: B C 你的答案: B (错误)

A. 实例变量是类的成员变量
B. 实例变量用关键字static声明
C. 在方法中定义的局部变量在该方法被执行时创建
D. 局部变量在使用前必须被初始化

解析:
A.类的成员变量包括实例变量和类变量(静态变量),成员方法包括实例方法和类方法(静态方法)。 A正确

B.类变量(静态变量)用关键字static声明,B错误

C. 方法中的局部变量在方法被调用加载时开始入栈时创建,方法入栈创建栈帧包括局部变量表操作数栈,局部变量表存放局部变量,并非在执行该方法时被创建,C错误

D.局部变量被使用前必须初始化,否则程序报错。D正确

4、子类父类成员变量覆盖?

当子类中定义的成员变量和父类中的成员变量同名时,子类的成员变量覆盖了父类的成员变量。

5、在Java程序运行时?

在Java程序运行时,系统自动通过System类创建三个静态的I/O对象
(1) 标准输入流对象 InputStream
(2) 标准输出流对象 OutputStream
(3) 标准错误流对象ErrorStream

6、问答题?

Q1:Java中如果一个public 类的protected方法的可见性是?
参考答案:声明该方法的类及其子类都可以访问该方法

Q2:Java自带的序列化框架中,实现接口java.io.Serializable

7、编程题1

编写函数,获取两段字符串的最长公共子串的长度,例如:S1= GCCCTAGCCAGDE ,S2= GCGCCAGTGDE,这两个序列的最长公共子串是GCCAG。

public class Test2 {
    public static void main(String[] args) {
        String s1 = "GCCCTAGCCAGDE";
        String s2 = "GCGCCAGDTGDE";

        String subString = "";
        String maxString = "";

        for (int i = 0; i <s1.length() ; i++) {
            for (int j = i+1; j <s1.length() ; j++) {
                subString = s1.substring(i,j);
                if (s2.indexOf(subString)>0){
                    maxString = maxString.length()>subString.length()?maxString:subString;
                }else{
                    break;
                }
            }
        }
        System.out.println(maxString);
    }
}

8、编程题2

请用自己熟悉的高级语言编程,统计整数n以二进制数表示时,它包含的0的个数。例如n = 10时,其二进制数1010包含的0的个数为2。

public class Test3 {
    public static void main(String[] args) {
        //测试栈
        Stack stack = method(10);
        while (!stack.empty()){
            int pop = (int) stack.pop();
        }
        //测试1
        System.out.println(count(10));
        //测试2
        System.out.println(getZeroNumber(10));
    }

    //十进制 转换 成二进制(进栈)
    public static Stack method(int number){
        Stack stack = new Stack();
        while (number > 0){
            int mod = number%2;//0
            stack.push(mod);
            number = number/2;//5
        }
        return stack;
    }

    //返回十进制对应二进制0的个数
    public static int count(int i){
        int counts = 0;
        while (i>0){
            int mod = i%2;
            i = i/2;
            if (mod==0){counts++;}
        }
        return counts;
    }

    //返回十进制对应二进制0的个数
    private static int getZeroNumber(int i) {
        int num = 0;
        while (i > 0){
            if ((i & 1) == 0){
                num++;
            }
            i >>= 1;
        }
        return num;
    }
}

9、编程题3

已知一个整数数组A[n],写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边,且奇数升序排列,偶数降序排列,并给出时间复杂度和空间复杂度。

void partition(int A[], int n)  
{  
    int x;  
    int i = 0;  
    int j = n-1;  
    while(i != j)  
    {  
        while( a[i]%2 == 1)  
            i++;  
        while (a[j]%2 == 0)  
            j++;  
        if(i < j)  
        {  
            x = a[i];  
            a[i] = a[j];  
            a[j] = x;  
        }  
    }  
}

10、已知关系模式:

Student(S#,Sname,Sage,Ssex) 学生表,
Course(C#,Cname,T#) 课程表,
SC(S#,C#,score) 成绩表,
Teacher(T#,Tname) 教师表 。

其中,S#代表学生号,C#代表课程号,T#代表教师号。
根据上述描述,请写出如下的查询语句:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
2、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
3、查询每门功成绩最好的前两名

-- 查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.s#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#; 

-- 查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# 
and C# in 
(select C# 
from SC 
where S#='1001');

-- 查询每门功成绩最好的前两名
select t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
from SC t1
where score IN 
(SELECT TOP 2 score
from SC
where t1.C#= C#
order by score DESC )
order by t1.C#; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值