面试题-烽火卷(烽火通信科技股份有限公司 )

一、填空题(每空2分,共26分)

1.Java类的种类有 class、 interface和  ---enum--- 。

2.字符串 String类中使用 ---charAt(int index)--- 函数来取得某一个下标位置的字符(只需写出函数名称)。

3.在子类构造函数中使用  ---super---  关键字来调用父类的构造函数。

4.Java中回收垃圾的方法名是 ---System.GC()---。

5.异常类 Exception的父类名是 ---Throwable--- 。

6.使用 ---static--- 修饰符定义的类成员,可以通过类直接访问而不需要创建对象后再访问.

7.在Java中,如果需要对对象的序列化进行深度控制,需要实现---Serializable---接口,并且需要实现---writeObject()---和---readObject()---方法。 序列号反序列化

8.启动Java线程的方法名是---start()---

9.按照标准I/0模型,Java提供3种标准输入或输出,分别是System.out、System.in 和---System.err---方法。

10.若a,b为int型变量且已分别赋值为8,10。表达式(a++)+(++b)+a*b的值是 118。

二、单项选择题(每题2分,共20分)

1.下列四个不同数制表示的数中,数值最大的是(B)

 (A)二进制数1101101
 (B)八进制数334  
 (C)十进制数219 
 (D)十六进制数DA

2.以下关于进程和线程叙述正确的是(D)

(A)同一进程中的两段代码不能够同时执行        
(B)线程问是独立的
(c)进程是属于线程的                          
(d)线程处于进程空间内

3.汉字国际码规定,每个汉字用(B)个字节表示。

(A)1    
(B)2    
(C)3    
(D)4

4.下面哪个SQL语句描述了每一个部门的每个工种的工资最大值?(b)

(a) select dept _, job cat, max(salary) from employees where salary>(salary)
(b) select dept id, job cat, max(salary) from employees group by dept id, job cat
(c) select dept _ ,job cat, max (salary) from employees group by dept id
(d)select dept id , job cat, max (salary) from employees group by dept id, job cat salary

5.下列不可作为java语言修饰符的是 (c)

(A)a1    
(B)$1    
(C)_1    
(D)11

6. Character流与Byte流的区别是(c)

(A)每次读入的字节数不同        
(B)前者带有缓冲,后者没有
(C)前者是字符读写,后者是字节读写
(D)二者没有区别,可以互换使用

7.指出下列程序运行的结果(b)

public class example
    String str = new string( “good”);
    char[] ch = {'a','b','c'};

    public static void main(string args[]){
            Example ex= new Example();
            ex.change(ex.str, ex.ch);
            System.out.print(ex.str + “and”);
            System.out.print(ex.ch);
}
    public void change(string str, char ch[]){
        str= “test ok”;
        ch[0] = ‘g’;
}
}

(A)good and abc  
(B)good and gbc  
(C)test ok and abc  
(D)test ok and gbc

8.ArrayList list = New ArrayList(20);中的List扩充了几次(A)

(A)0    
(B)1    
(C)2    
(D)3

9.以下代码运行输出是(c)

public class person{
private string name = “Person”;
int age=0;
}
public class Child extends person{
public string grade;
public static void main((String[] args){
Person p = new child();
Systen out. println(p.name);


(A)Person   
(B)没有输出    
(C)编译出错  
(D)运行出错

10.Java中的集合类包括 Arraylist、linkedlist.、hashmap等类,下列关于集合关描述错误的是(D)

(A)    ArrayList和LinkedList均实现了List接口
(B)    ArrayList的访问速度比LinkedList快
(C)    HashMap实现Map接口,它允许任何类型的键和值对象,并允许Null作为键或值
(D)    添加和删除元素时,ArrayList的表现更佳。

三、判断题(每题2分,共20分)

1.Java程序中的起始类名称必须与存放该类的文件名相同。( √ ) 
    一个文件中可以有多个类,如果没有public类,则可以与任意类名相同,如果有public类则文件名必须与此类名相同,因为一个文件中只能有一个public类。如果文件中只有一个类,则文件名必须与类名相同


2.原生类中的数据类型均可任意转换。( × ) 
    基本数据类型(或叫做原生类、内置类型)  四类八种间的转换限制 (例如:boolean类型数据和其他七种不能互相转换 )


3.final修饰的方法不能被重载。( × )
    被final修饰的类不能继承。被final修饰的方法不能重写。被final修饰的变量为常量,值不能改变(实际上是值的引用不能改变 如stringBuilder)。


4.GC线程是守护线程。( √  )
    守护线程最典型的应用就是 GC (垃圾回收器)。


5.声明为final的方法不能在子类中重载。(√ )
    被final修饰的方法不能重写,子类又如何重载?

6.不通过构造函数也能创建对象。( √ )
    百度4种方法创建对象 clone new reflect  反序列化

7.Java中所有的类都是java.lang的子类。( × )
     虽然object在java.lang中

8.Java语言中的接口可以继承,一个接口通过关键字 extends可以继承另一个接口。一个JAVA的类可以有多个接口,它们通过关键字 implements来实现。( 对 )


9.每个try块都必须至少有一个catch块与之相对应。( × )
     try块后面不一定需要跟着catch块,可以只跟着finally块,catch和finally不能同时忽略

10. abstract是抽象修饰符,可以用来修饰类及其属性和方法。( ×  )
    abstract 不能修饰属性 

四.程序改错题(每题5分,共10分)

1、下面的程序不能正常编译,请改正程序中的错误,并说明理由。(注意:不改动程序的结构,不得增行或删行)

interface A{
int x = 0;
}
Public class B {
int x = 1;
}
Public class C extends  B implenets A {
 public void pX() {
        System.out.print(x);
    }
//报错 Reference to 'x' is ambiguous, both 'B.x' and 'A.x' match
    public static void main(String[] args){
        new C().pX();
    }



} 
 **解:**   Reference to 'x' is ambiguous, both 'B.x' and 'A.x' match
    这里只谈调用    输出语句里打印x 更换为super.x 明确指定调用父类
                   或者将A.x 明确指定调用接口(接口的属性默认隐含为 public static final)  
                   或者将接口或者父类的变量名改掉

2、下面的程序是打印所有的 Integer整数是否是奇数,请改正下面的程序使它得到正确结果。(注意:不改动程序的结构)

public class question1 {
/**
*判断是否为奇数
*@param i
*@Return true为奇数 false为偶数
*/
public static boolean isOdd ( int i){
return i%2==1;
}
/**
*@param args
*/
public static void mai(string[] args) {
for(int i=Integer.MIN_VALUE;i<=Integer.MAX_VALUE;++i){
     boolean isOdd=isOdd(i);
     System.out.println(String.format("i=%d,isOdd=%b", i, isOdd));
  }

}
1、for语句是死循环; i++

2、判断int型是否为奇数return i%2==1错误,应该为:return i%2!=0;

五、简答题(每题6分,共24分)

1. 有一个学生成绩表SCORE,请写出一条SQL语句查询出每门课都大于80分的学生的姓名?

NAME SUBJECT score
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
最低分不低于80:
SELECT NAME FROM SCORE
GROUP BY NAME
HAVING MIN(score)>=80


同姓名不存在低于80分
select name from stu
group by name
having name not in (
select name from stu
where score <80)

自连接 将三个科目全都补上 粗暴
SELECT  D.name  FROM (
SELECT  S.name,S.score AS ITEM1,S1.score AS ITEM2,S2.score AS ITEM3
FROM Student S 
INNER JOIN Student S1 ON S.name = S1.name AND S.course != S1.course
INNER JOIN Student S2 ON S.name = S2.name AND  S2.course NOT IN (S.course,S1.course)
WHERE S.score>=80 AND S1.score>=80 AND S2.score>=80
) D 
GROUP BY D.name

2. 编程实现字符串中单词的反转。假设所有的单词均有空格分隔且标点符号当做字母处理。如“welcome to Innovation works.”变换成“works.Innovation to welcome”.

 public static String change(String string){
        //根据空格分隔
        String[] splitArray = string.split(" ");
        //通过Collections来反转
        Collections.reverse(Arrays.asList(splitArray));
        //创建stringbuffer来组成新字符串
        StringBuilder stringBuilder = new StringBuilder();

        for (String s : splitArray) {
            System.out.println("s = " + s);
            stringBuilder.append(s);
            stringBuilder.append(" ");

        }
        return stringBuilder.toString();
    }

3.请用递归算法打印出斐波那契数列(从第三个数开始每个数等于它前面的两个数相加)。如:1,1,2,3,5,8,13,21。。。。

斐波那契数列又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。

//建立一个函数,用于计算数列中的每一项
    public static int fib(int num) {
        //判断:是否是第一个数和第二个数
        if(num == 1 || num == 2) {
            return 1;
        }else {
            //循环调用本函数
            return fib(num - 2) + fib(num - 1);
        }
    }

    //主函数(程序入口)
    public static void main(String[] args) {

        //建立一个for循环,用于打印第一个至第十个数字
        for(int i = 1;i <= 20;i++) {
            //调用函数进行打印
            System.out.print(fib(i) + "\t");
        }
    }

4. 编写一段java代码,求两个字符串StringA和StringB的最长公共子串。

    public static String iQueryMaxCommString(String stringA, String stringB) {
        if(stringA==null || stringB==null){
            return null;
        }
        if(stringA.length()<1 || stringB.length()<1){
            return "";
        }
        if (stringA.contains(stringB)) {
            return stringB;
        }
        else if (stringB.length() == 1) {
            return "";
        }

        String leftSerach = iQueryMaxCommString(stringA, stringB.substring(0, stringB.length() - 1));
        String rightSerach = iQueryMaxCommString(stringA, stringB.substring(1, stringB.length()));
        return leftSerach.length() >= rightSerach.length() ? leftSerach : rightSerach;
    }
全部评论
面试题?线上笔试后,线下面试当场发试卷写吗😳
1 回复 分享
发布于 2021-03-12 11:06

相关推荐

8 29 评论
分享
牛客网
牛客企业服务