JSD2303结业分流考试

发布时间 2023-07-08 23:55:45作者: 905413993

JSDTN2303毕业分流考试-A副本

一、单项选择题(每题1分,共计30分)

1、如下哪个不是Java中有效的关键字? (    D     )

A:  const            

B:  null      

C:  super  

D:  TRUE        

2、如下Java代码的运行结果( C )

Java
public class SwitchTest01 {
    public static void main(String[] args) {
        int i=2;
        int result=0;
        switch (i){
            case 1: result=result+i;
            case 2: result=result+i*2;
            case 3: result=result+i*3;
        }
        System.out.println(result);
    }
}

A:0     

B:2     

C:10 

D:4

 

试题来源:云灿信息

 

3、阅读如下代码,其运行结果正确的是?(D)

 

Java
  public class Test {
  public static void main(String[] args) {
     int a=10;
     int b[]={20};
     change(a,b);
     System.out.println(a+","+b[0]);
  }
  static void change(int a,int[] b){
     a=11;
     b[0]=21;
  }
 }

A:10,20

B:11,21

C:11,20

D:10,21

 

4、如下对于数组的定义说法正确的是?(A)

SQL
1.int[] a={1,2,3};
2.int[] b=new int[5];
3.int[][] c={{1},{2,3}};
4.int[][] d =new int[5][];

A:1,2,3,4都正确(正确答案)

B:只有1,2正确

C:只有1正确

D:只有1,3正确

 

5、阅读如下代码,对运行结果说法正确的是:(D)

Java
public class StaticTest{
   static int x=10;
   public static void main(String[] args) {
      StaticTest t1=new StaticTest();
      t1.x++;
      StaticTest t2=new StaticTest();
      t2.x++;
      StaticTest.x++;
      System.out.println(StaticTest.x);
   }
}

   

A:编译错误

B:11

C:12

D:13

   

    试题来源:云灿信息笔试题

 

6、请指出以下代码的运行结果?D)

SQL
public class Test{
    private static Integer b;
    public static void main(String[] args){
        int a = 10;
        print(a);
        print(b);
        b = a;
        print(b);
    }
    private static void print(Integer value){
        int add = value+5;
        System.out.println(add);
    }
}

  

A:15,5,20

B:编译失败

C:15,5,15

D:运行时出现NullPointerException

 

7、以下程序在JDK1.8的环境下,描述正确的是( C

Java
  class A{
       int a=10;
       public A(int a){
           this.a=a;
       }
  }
  class B extends A{
        int a;
        public B(int a){
          this.a=a;
        }
  }
  public class Test13 {
     public static void main(String[] args) {
          A a=new B(20);
          System.out.println(a.a);
     }
  }

   A:10

   B:20

   C:编译失败

   D:0

 

8、在使用super this关键字时,以下描述正确的是?(A)

   A:假如有super()显式调用,则必须写在子类构造方法的第一行,否则编译不通过。

   B:super()和this()不一定要放在构造方法内第一行

   C:this()和super()可以同时出现在一个构造函数中

   D:this()和super()可以在static方法中使用

 

9、以下代码,描述正确的有( A

Java
 interface IDemo{
      public static final String name;  1
      void print();  2
      public void getInfo();  3
  }
  abstract class Person implements IDemo{  4
      public void print(){  }
  }

A:第1行错误,没有给变量赋值。        

B:第2行错误,方法没有修饰符。

C:第3行错误,没有方法的实现。        

D:第4行错误,没有实现接口的全部方法。

 

10、下面的程序输出的结果是?(D

Java
interface IC{
     int M = 10;
}
class C implements IC{
     int M = 20;
     int N = 30;
}
public class Test{
     public static void main(String[] args) {
        IC c1=new C();
        System.out.println(c1 instanceof C);
        System.out.println(c1.M);
        System.out.println(c1.N);
      }
}

 

A:true,10,30

B:false,10,30

C:true,20,30

D:编译失败

 

11、如下代码运行时,正确的输出结果应该是什么?D

 

Java
package com.cy.test;

import java.util.ArrayList;
import java.util.List;

public class Test16 {
   static void print(List<Object> list){
        System.out.println(list);
   }
   public static void main(String[] args) {
       List<Integer> list2=new ArrayList<>();
       list2.add(100);
       list2.add(100);
       print(list2);
   }
}
 

A:[100]
B:[100,100]
C:输出list对象地址
D:编译错误(正确答案)

 

12、在try-catch-finally语句块中,以下可以单独与finally一起使用的是(

A:catch       

B:try       

C:throws       

D:throw

 

13JDK8中如下代码的运行结果是?(A

Java
package com.cy.test;

enum Gender{
   MALE,FEMALE,NONE;
   private Gender(){}
   public static void value(Gender gender){
       switch (gender){
             case MALE: System.out.println("男士");break;
             case FEMALE: System.out.println("女士");break;
             default: System.out.println("未知");
       }
    }
}
public class Test{
      public static void main(String[] args) {
           Gender.value(Gender.MALE);
      }
}

   A:男士

   B:女士

   C:未知

   D:编译错误

 

14、以下程序运行结果是(  A

Java
 class TestABC {
    public int div(int a, int b) {
        try {
            return a / b;
        }catch(Exception e){
            System.out.println("Exception");
        }catch(NullPointerException e){
            System.out.println("ArithmeticException");
        }catch (ArithmeticException e) {
            System.out.println("ArithmeticException");
        } finally {
            System.out.println("finally");
        }  return 0;
    }
    public static void main(String[] args) {
        TestABC demo = new TestABC();
        System.out.println("商是"+ demo.div(9, 0));
    }
}

 

A:编译报错                  

B :Exception finally 商是:0

C:finally商是:0              

D:ArithmeticException finally 商是:0

 

15、阅读如下代码,给出正确运行结果?(C)

Java
package com.cy.test;

@Target(ElementType.TYPE)
@interface Entity{
String value();
}

@Entity(value="obj")
class Obj{}

public class Test18 {
    public static void main(String[] args) {
         Entity entity=Obj.class.getAnnotation(Entity.class);
         System.out.println(entity.value());
    }
}

 

A:obj

B:编译错误

C:运行时会出现空指针异常

D:null

 

16、阅读如下代码,给出正确的输出结果。(B)

Java
package com.cy.test;
import java.util.LinkedHashMap;
public class Test19{
   public static void main(String[] args) {
           LinkedHashMap<String,Object> map=
               new LinkedHashMap<>(3,0.75f,true);
           map.put("A", 100);
           map.put("B", 200);
           map.get("A");
           map.put("C", 300);
           map.put("D", 400);
           map.get("B");
           System.out.println(map);
    }
}

A:{A=100, B=200, C=300, D=400}

B:{A=100, C=300, D=400, B=200}

C:{B=200, A=100, D=400, C=300}

D:不确定

 

17、阅读如下代码,给出正确的输出结果。(A)

Java
package com.cy.test;

import java.util.LinkedHashMap;

public class Test{
public static void main(String[] args) {
   TreeMap<String,Object> map=new TreeMap<>();
   map.put("A", 100);
   map.put("B", 500);
   map.get("A");
   map.put("D", 400);
   map.put("C", 300);
   System.out.println(map);
}
}

 

A:{A=100, B=500, C=300, D=400}

B:{A=100, C=300, D=400, B=500}

C:{B=500, A=100, D=400, C=300}

D:不确定

18HashSet集合是的特点,描述正确的是( A

A:  HashSet集合是一个无序集合,不允许元素重复。

B:  HashSet集合是一个无序集合,不允许元素重复。 

C:  HashSet集合是一个有序集合,允许元素重复。

D:  HashSet集合是一个有序集合,不允许元素重复。

 

19、对以下程序说法正确的是?(D

SQL
  public class Test{
    static void f1(){
      throw new RuntimeException();
    }
    static void f2(){
      f1();
      throw new Exception();
    }
    public static void main(String[] args) {
        f2();
     }
  }

  

A:程序会抛出RuntimeException

B:程序会抛出Exception

C:程序会抛出RuntimeException,Exception

D:编译失败(正确答案)

 

20、下列有关查询的说法中,错误的是( C

A:GROUP BY子句用于对查询结果进行分组输出。

B:HAVING子句后面可以跟上统计函数。

C:子查询返回的是单个值,且不可以嵌套。

D:EXISTS子查询实际上不产生任何数据,只返回TRUE或FALSE值。

 

21、如下描述错误的是? ( C )

     A:@FunctionalInterface 描述的是JDK8推出的函数式接口。

     B:@FunctionalInterface 描述的接口中只能有一个抽象方法。

     C:@FunctionalInterface 描述的接口中可以有多个抽象方法。

     D:@FunctionalInterface 描述的接口中允许有静态方法。

 

22、阅读如下代码,正确的说法是?(C)

Java
package com.cy.test;

import java.util.Arrays;
import java.util.List;

public class Test22 {
  public static void main(String[] args) {
    List<Integer> list = Arrays.asList(3, 2, 12, 5, 6, 11, 13);
    long count = list.stream()
                           .filter(i -> i % 2 == 0||i % 3 == 0)
                           .count();
    System.out.println(count);
  }
}

 

A:JDK8环境下编译失败。

B:输出的结果为 6

C:输出的结果为 4

D:输出的结果为 3

 

23ISO-8859-1是用来拓展()编码的( C

A:  GBK

B:  UTF-16

C:  ASCII

D:  GB2312

 

24、如下哪个算法不是缓存淘汰算法有?D

A:FIFO

B:LRU

C:LFU

D:FILO

25Mybatis中哪个mybatis注解用于描述数据层方法参数( A )

A:@Param

B:@RequestParam

C:@PathVariable

D:@Params

 

26Mybatis1对多关联查询中可以使用以下哪一项做结果映射(  A )

A:resultMap

B:List

C:result

D:resultType

27、如下元素哪个不是MyBatis的动态SQL元素(B

A:if

B:else

C:foreach

D:choose

28Spring AOP 中环绕通知方法参数的类型只能是( B

A:JoinPoint

B:ProceedingJoinPoint

C:PointCut

D:String

29、如下API中哪个是SpringMVC中的拦截器类型( C

A:HandlerFilter

B:ControllerInterceptor

C:HandlerInterceptor

D:DispatcherInterceptor

30MyBatis#{}${}表达式描述错误的是?(D

 A:#{}是mybatis参数占位符,运行时#{}会替换为?号。

 B:#{}表达式应用在SQL参数中可以有效防止SQL注入。

 C:${}应用于静态文本替换,就是字符串替换,有SQL注入风险。

 D:${}用于替换SQL参数,可有效防止SQL注入。

 

二、多项目选择题(每题2分,共计30分)

 

1、在以下程序中的代码插入位置,插入哪行代码可以编译通过?BD

Java
class Test{
    public static void main(String[] args){
       doSomething(1);
       doSomething(1,2);
    }
    //代码插入位置
} [多选题] *

 

A:static void doSomething(int[] args){}

B:static void doSomething(int...args){}

C:static void doSomething(int...args,int x){}

D:static void doSomething(int x,int...args){}

 

2、下面语句中,表示过虑条件是vend_id=1002vend_id=1003的是 (   AB   )

A:select * from products where vend_id=1002 or vend_id=1003

B:select * from products where vend_id in (1002,1003);

C:select * from products where vend_id not in (1004,1005);

D:select * from products where vend_id=1002 and vend_id=1003

3MyBatis框架说法正确的是?ABD

A:MyBatis是一个数据持久层框架,实现了对JDBC的封装,简化了JDBC代码的编写。

B:MyBatis支持动态SQL语句,用于更好适配需要的变更。

C:MyBatis支持不支持原生SQL,不便于DBA介入进行SQL调优。

D:MyBatis提供了缓存,延迟加载等特性可以更好提高查询效率。

4MyBatis中获取insert操作时使用的自增主键值,说法正确的是?ABD

A:xml方式可以在insert元素中添加useGeneratedKeys和keyProperty属性

B:insert 操作执行完后主键值可以被设置到传入的参数对象中

C:MyBatis不支持获取自增主键值这种需求。

D:注解方式可以在@Options注解中添加useGeneratedKeys和keyProperty属性。

5、下面有关MyBatis拦截器说法正确的是?(ABCD

A:@Signature注解用于定义要拦截哪个接口类型的哪个方法。

B:我们自定义MyBatis拦截器时,可以实现MyBatis的Interceptor接口并复写intercept()方法。

C:Mybatis拦截器可以对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的方法进行拦截。

D:Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能。

6MyBatis中的延迟加载说法正确的是?(ABCD)

A:Mybatis仅支持association关联对象和collection关联集合对象的延迟加载
B:MyBatis中的可以通过配置的方法启动和关闭延迟加载。
C:MyBatis中的延迟加载底层是通过CGLIB创建目标对象的代理对象实现的。
D:MyBatis中的延迟加载指的是何时需要何时加载。

7Spring中用于描述Bean对象生命周期方法的注解是( AC )

A:@PostConstruct

B:@PostDestroy

C:@PreDestroy

D:@PreConstruct

8、下列哪些是Spring AOP的通知注解 ( BCD  )

A:@Aspect

B:@Around

C:@Before

D:@After

9、下列关于Spring IOC说法正确的是 ( BC )

A:Spring懒加载模式默认是开启的。

B:Spring懒加载机制可以提升程序启动速度。

C:Spring懒加载机制可以提高内存使用效率。

D:Spring懒加载是多例的一种形式。

10、下列关于Spring AOP描述正确的是 (  ABCD   )

A:Spring AOP中创建代理的方式有JDK代理和CGLIB代理。

B:Spring AOP中可以通过@Pointcut注解定义切入点表达式。

C:Spring Aop中可以通过@Aspect注解定义切面。

D:Spring Aop中连接点的类型为JointPoint类型。

11、如下SpringMVC注解中哪些注解用于描述控制层方法请求处理参数 ( ABC )

A:@RequestParam

B:@PathVariable

C:@RequestBody

D:@Param

12、有关索引说法正确的是?(ABCD

A:索引(Index)是一种数据结构。

B:索引(Index)的优点是可以加大数据的检索速度。

C:索引的缺陷是需要占用物理空间(默认是以数据页进行存储),会降低增/改/删的执行效率。

D:MySQL索引对表中指定列进行排序后可以另外保存

13、下列有关通知方法描述正确的是?(ABCD)

A:@Around描述的通知方法优先级最高

B:@Before描述的方法在目标方法执行之前执行.

C:@AfterThrowing与@AfterReturning描述的方法不可能同时执行

D:@After描述方法无论是否出现异常都会执行.

14Spring MVC中异常处理的方式是怎样的? ABCD

A:可以基于@ExcpetionHandler定义异常处理方法.

B:可以基于@RestControllerAdvice定义全局异常处理类

C:@ExcpetionHandler定义的异常处理方法可以直接写在@Controller描述的类中.

D:全局异常处理类中可以有多个异常处理方法.

15、如下哪些场景可以使用面向切面编程?(ABCD

A:用户行为日志获取

B:事务的处理

C:鉴权操作

D:异步操作

 

三、简答题(共计4题,每题5分,20分)

 

1、说出几种常见的异常类型?(至少写出5)

  • NullPointerException: 空指针异常
  • NoSuchMethodException:找不到方法
  • IllegalArgumentException:不合法的参数异常
  • IndexOutOfBoundException: 数组下标越界异常
  • IOException:由于文件未找到、未打开或者I/O操作不能进行而引起异常
  • ClassNotFoundException :找不到文件所抛出的异常
  • NumberFormatException:字符的UTF代码数据格式有错引起异常;
  • InterruptedException:线程中断抛出的异常

 

评分细则:每写出一个异常得1分(不限于只是上面的异常)

 

提交一个任务,线程池里存活的核心线程数小于线程数 corePoolSize 时,线程池 会创建一个核心线程去处理提交的任务。  如果线程池核心线程数已满,即线程数已经等于 corePoolSize,一个新提交的任 务,会被放进任务队列 workQueue 排队等待执行。  当线程池里面存活的线程数已经等于 corePoolSize 了,并且任务队列 workQueue 也满,判断线程数是否达到 maximumPoolSize,即最大线程数是否已满,如果 没到达,创建一个非核心线程执行提交的任务。  如果当前的线程数达到了 maximumPoolSize,还有新的任务过来的话,直接采 用拒绝策略处理。

 

2、描述一下数据库的三大设计范式以及特点?

范式是一种设计规范,一种关系模式,可以对表的设计起到一个指导性作用。

  • 第一范式(1NF):字段不可再分(原子性)。例如姓名可再分为姓和名,这属于可再分。
  • 第二范式(2NF): 首先要满足1NF,然后不存在非主键字段对主键字段的部分依赖。
  • 第三范式(3NF): 首先要满足1NF,然后不存在非主键字段对主键字段的传递依赖。

 

评分细则:范式的定义正确得2分,每个范式的解释1分。

试题来源:用友

 

 

 

3、描述一下javasleep()方法和wait()方法?

 

相同点:

  • 它们都可以让线程进入休眠状态。
  • 它们都可以响应 interrupt 中断(可以抛出 InterruptedException 异常)。

不同点:

  • 所属类不同(wait 方法属于 Object 类的方法,而 sleep 属于 Thread 类的方法)
  • 语法使用不同(sleep 可以单独使用,wait 方法必须配合 synchronized 一起使用,由对象锁调用)
  • 唤醒方式不同( sleep 方法具有主动唤醒功能,而不传递任何参数的 wait 方法只能被动的被唤醒。)
  • 释放锁不同(wait 方法会主动的释放锁,而 sleep 方法则不会)

 

评分细则:每个点1分【此题为中关村提交的面试题库中的题】。

 

 

4、描述一下Spring@Autowired可以描述的元素以及底层依赖注入过程?

  • @Autowired由spring框架定义,用于描述类中属性或相关方法(例如构造方法)。
  • 使用@Autowired注解描述的属性或方法,可以按照指定规则为属性赋值(DI)。
  • 基于@Autowired注解方式实现依赖注入,底层首先会检测容器中是否有与属性或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,没有则抛出异常。
  • 假如我们有明确要求,必须要注入类型为指定类型,名字为指定名字的对象还可以使用@Qualifier注解对其属性或参数进行描述(此注解必须配合@Autowired注解使用)。

 

评分细则:第三项2分,其它每项1分。

 

四、程序编写题(共计3题,总计20分)

 

1、不用中间变量,实现int ab两个变量值的交换。 (6)

Java
public static void main(String[] args) {
    int a=10,b=20;
    a = a + b;
    b = a - b;
    a = a - b;
    System.out.println(a+"/"+b);
}

 

评分细则:345行每个步骤2分。

 

2、现有关系表R(IDNAME),主键为IDNAME为角色名。基于MySQL数据库写一个SQLR表中删除name值重复的记录。(7)

 

Java
delete r2.*
from R r1 join R r2
on r1.name=r2.name
where r1.id<r2.id

 

评分细则:写出思路(name相同的id值,留一个最大的或最小的,其它的都删除)給3分,代码正确給4分。

 

 

3、现有雇员表EMP(IDNAME,SALARY),主键为IDNAME为雇员名,SALARY为薪资。基于MySQL数据库写一个SQL分别统计薪资大于10000,薪资小于8000的雇员人数?7分)

 

Java
select sum(case when salary>10000 then 1 else 0 end) '大于10000',
       sum(case when salary<8000 then 1 else 0 end) '小于8000'
from emp;

 

评分细则:写出思路(可以使用case when表达式,然后用sum函数求和或count函数统计)3分,代码正确給4分。