Java笔试总结(选择题)

1、下面哪些是Thread类的方法(A B D)

A、start()    B、run()         C、exit()       D、getPriority()

解析:

A、start():使该线程开始执行,Java虚拟机调用该线程的run方法。

B、run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作写在此方法中。

C、exit():是System类的方法,如System.exit(0)。

D、getPriority():返回线程的优先级。

更详细的可以看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/

2、下面关于java.lang.Exception类的说法正确的是(A)

A、继承自Throwable        B、Serialable                    C D、不记得,反正不正确

解析:Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException

3、String是基本数据类型吗?(B)             

 A、是                            B、不是

解析:String不是基本数据类型,而是一个类(class),属于引用类型,是Java编程语言中的字符串。Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。

4、下列说法正确的有(C)

A、class中的constructor不可省略          B、constructor必须与class同名,但方法不能与class 同名

C、constructor在一个对象被new时执行                   D、一个class只能定义一个constructor

解析:

class中的constructor不可省略          //省略,系统会提供默认的无参构造函数

constructor必须与class同名,但方法不能与class同名      // 方法也可以的,带返回值就好

constructor在一个对象被new 时执行   // 正确

一个class只能定义一个constructor   // 可以重载

5、以下for循环的执行次数是:(D) for(int x =0;y=0;(y!=0)&& (x<4);x++)

A 、无限次               B、执行4次                        C、执行3次                  D、一次也不执行

解析:y初始值为0,在整个for循环中,y的值不变,故判断语句中的(y!=0)不成立,故一次也不执行。

6、以下哪些情况可以终止当前线程的运行?(A)

A、抛出一个异常时。                                               B、当该线程调用sleep()方法时。
C、当创立一个新线程时。(与当前进程无关)            D、当一个优先级高的线程进入就绪状态时。

解析:

A、当抛出一个异常后程序会结束,所以线程也会被终止

B、sleep方法阻塞一个线程并不会终止

C、创建一个新的线程时也不会终止另一个线程

D、优先极高的并不一定会马上执行。

7、下面哪些为构造的特性定义(D)

A、在类中声明构造函数时,名称应该与类名相同

B、具有重载特性,可以建立多个相同的名称

C、使用类建立新对象时,会自动执行构造函数,因此在构造函数内设定变量的初值或进行分配

D、以上都是

8、关于异常处理机制的表达哪些正确(C)

A、catch局部捕捉到异常情况时,才会执行finally局部(无论是否有毛病,都执行)

B、当try区段的程序发生异常时,才会执行catch区段的程序

C、不管程序是否发生错误及捕捉到异常情况,都会执行finally局部

D、以上都是

9、以下关于接口的表达中哪些是正确的(AB)

A、接口中的数据必须设定初值(就是接口中的常量)

B、接口中的方法都是方法

C、接口可以声明引用

D、以上都正确

10、执行如下程序代码后,C的值是( C )

a=0;c=0;
do{
  --c;
a=a-1;
}while(a>0);

A、0                               B、1                       C、-1                               D、死循环

解析:do-while循环的特点是先执行后判断,所以代码先执行--c操作,得到c为-1,之后执行a=a-1的操作,得到a为-1,然后判断a是否大于0,判断条件不成立,退出循环,输出c为-1。

11、关系数据库规范化是为解决关系数据库中(A)的问题而引入的

A 、减少数据操作的复杂性

B、提高查询速度

C、插入异常,删除异常和数据冗余

D、保证数据的安全性和完整性

解析:关系数据库进行规范化的目地:使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。关系模式进行规范化的原则:遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。 关系模式进行规范化的方法:将关系模式投影分解成两个或两个以上的关系模式

12、关于SQL优化,以下说明哪个是错误的(B)

A、类似分页功能的SQL,建议先用主键关联,然后返回结果集,效率会高很多

B、通常情况下,join的性能比较差,建议改造成子查询写法

C、多表联接查询时,关联字段类型尽量一致,并且都要有索引

D、尽可能不使用TEXT/BLOB类型,确实需要的话,建议拆分到子表中,不要和主表放在一起,避免SELECT*的时候性能太差

13、下列哪些语句关于内存回收的说法是正确的(B )

A、程序员必须创建一个线程来释放内存          B、内存回收程序负责释放无用内存

C、内存回收程序允许程序员直接释放内存       D、内存回收程序可以在指定的时间释放内存对象

解析:

A:有GC线程,无需创建

C:java当中,内存的回收由GC完成,程序员不能直接释放内存,只能通过System.gc()提醒GC进行垃圾回收,GC不一定会回收

D;只能System.gc()提醒,不能指定时间

14、继承是JAVA语言的一个特性,针对类的继承,虚拟机会如何进行父类和子类的初始化加载呢?请阅读代码选择出该段代码的输入结果。(C)

public class Test{
    public static void main(String[] args){

        System.out.print(B c);
    }

}

class A{
    public static String c ="C";
    static{

        System.out.print("A");
    }
}

class B extends A{
    static{

        System.out.print("B");
    }
}

A、BAC                         B、BAC                                C、AC                           D、C            E、BC

15、mysql表业务如储蓄所有多个储户,储户在多个储户所存取款,储蓄所与储户之间的表关系是(A)

A、多对多的联系             B、一对多的联系             C、一对一的联系                D、多对一的联系

16、下列代码输出结果是(B)int i =10;

while
(i>0){i=i+1;
if(i==10){
break;}
}

A、while循环执行10次            B、死循环          C、循环一次都不执行         D、循环执行一次

17、单选题:有如下一段代码,请选择其运行结果(D)

public class StringDemo {
      private static final String MESSAGE="abcd";
      public static void main(String args){
                 String a="ab"+"cd";
                 String b="ab”;
                 String c="cd";
                 System.out.println(a==MESSAGE);
                 System.out.println((b+c)==MESSAGE);
        }
}

A、true true                        B、false false                  C、false true                D、true false

解析:

要注意两个问题:

1,字符串在java中存储在字符串常量区中

2,==判断的是对象引用是否是同一个引用,判断字符串相等要用equals方法

首先判断a==MESSAGE 同一份字符串常量在内存中只有一份,因此是同一地址,返回true

再次比较(b+c)==MESSAGE 这相当于 new String(b+c)==MESSAGE 这里new了一个String对象,所以返回false

18、下列说法正确的是( BD)

A、我们直接调用Thread对象的run方法会报异常,所以我们应该使用start方法来开启一个线程

B、一个进程是一个独立的运行环境,可以被看做一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源

C、synchronized可以解决可见性问题,volatile可以解决原子性问题

D、ThreadLocal用于创建线程的本地变量,该变量是线程之间不共享的

解析:

A选项错在调用Thread的run方法不会抛出异常。

C选项,synchronized很强大,既可以保证可见性,又可以保证原子性,而volatile不能保证原子性!

D选项,ThreadLocal存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递

19、String a = new String(“1+2”)最终创建了几个对象(B)

A、1                          B、2                C、3                                 D、4

20、如下代码,输出结果是什么?(D)

public class Test{
    public int aMethod(){

        static int i=0;
        i++;
        return i;
    }
    public static void main(String args[]){
        Test test = new Test();
        test.aMethod();
        int j = test.aMethod();
        System.out.println(j);
    
    }
}

A、0                        B、1                         C 、2                                 D、编译失败

解析:static用来修饰全局变量,不能修饰局部变量

21、在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)?(C)

A、正好1000毫秒        B、1000毫秒不到            C、>=1000毫秒                   D、不一定

解析:在程序sleep之后线程进入就绪态,在这种状态下,需要检查现在是否有资源允许现在的线程继续运行,如果条件不满足,则需要等待。如果是现在有资源则立即执行。

22、下面关于垃圾收集的说法正确的是(D)

A、一旦一个对象成为垃圾,就立刻被收集掉。

B、对象空间被收集掉之后,会执行该对象的finalize方法。

C、finalize方法和C++的析构函数完全是一回事情。

D、一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此。

23、按照学生平均成绩(avg_grade)将students表中的数据检索出来,下面SQL语句正确的是(ACD)

A、SELECT * FROM students ORDER BY avg_grade

B、SELECT * FROM students GROUP BY avg_grade ASC

C、SELECT * FROM students ORDER BY avg_grade DESC

D、SELECT * FROM students ORDER BY avg_grade asc

解析:

order by是表示排序 ,asc表示升序,desc表示降序;

group by表示分组

24、下面的程序中,temp的最终值是什么?(B)

long temp =(int) 3.9;
temp%=2;

A、0                                 B、1                 C、2              D、3                                 E、4

解析:浮点型强转int会丢失精度,所以前面的(int)3.9 会等于3,后面的temp%=2后temp=1;

25、下面程序的运行结果是:(B)

public static void main(String args[]){
    Thread  t = new  Thread(){
        public void run(){
            pong();
        }
    };
    t.run();
    System.out.print("ping");
}
static void pong(){
    System.out.print("pong");
}

A、pingpong              B、pongping              C、pingpong和pongping都有可能        D、都不输出

解析:因为线程的run()方法只是普通方法的方式调用,所以程序还是要按顺序执行,要等待run方法体执行完毕后,才可以继续执行下面的代码;扩展【但如果第7行换成t.start( )方法,答案就应该选择C,因为t.start( )后,线程变为就绪状态,什么时候开始执行时不确定的,可能是主程序先继续执行,也可能是新线程先执行。】

26、String s =“123”,这个语句有多少对象产生?(B)

A、0                          B、1                          C、2                                 D、3

解析:

String s = “123”;1个,常量池
String str=new String("123");   //2个 常量池、堆

27、在Java中,有如下两个类Student和Person。如果Student是Person的子类,则下列声明对象x的语句中错误的。(C)

A、Peron X = new Student()

B、Person X = new Peron()

C、Student X = new Peron()

D、Student X = new Student()

28、下列方法中可以用来创建一个新线程的是?(D)

A、实现java.lang.Runnable接口并重写run()方法

B、实现java.lang.Runnable接口并重写start()方法

C、实现java.lang.Thread类并实现start()方法

D、继承java.lang.Thread类并重写run()方法

29、switch(){}结构中,括号中可使用的数据类型不能是。(AD)

A、long                  B、int                  C、short                                   D、float

解析:

JDK 1.5以前:x 只能是byte, short, char, int

JDK 1.5之后:x 的类型也可以是枚举类型啦!

JDK 1.7之后:x 的类型又多了一个String类型~

其实,x 准确的说,数值型的只可以是 int 类型,但是 byte, short, char 都可以自动转换成 int 类型,所以 x 也可以是byte, short, char。当然了,对应的包装类也是可以自动转换,所以 x 也可以是包装类型的。

无论哪个版本的JDK,都是不支持 long,float,double,boolean 这个一定要注意

30、下列叙述中,正确的是?(A)

A、java语言的标识符是区分小写的

B、源文件名与public类名可以不相同

C、源文件名其扩展为.jar

D、源文件中public类的数目不限

解析:java的原文件的名称必须跟公有类的名称一致,且一个源文件中只有一个公有类,源文件的扩展名是.java

31、Iterator有哪些方法?(ACD)

A、next                      B、equals                     C、remove                           D、hasNext

解析:

Iterator迭代器包含的方法有:

hasNext():如果迭代器指向位置后面还有元素,则返回 true,否则返回false

next():返回集合中Iterator指向位置后面的元素

remove():删除集合中Iterator指向位置后面的元素

32、关于构造器是否可以被override,是否可以被overload?(C)

A、能,能                 B、不能,不能                C、不能,能                   D、能,不能

解析:构造器(构造方法)Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload(不同参数即可)。

Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数

33、下面哪个流属于面向字符的输入流?(D)

A、BufferedWriter                                    B、FilelnputStream

C、ObjectlnputStream                              D、lnputStreamReader

解析:

以InputStream(输入)/OutputStream(输出)为后缀的是字节流;
以Reader(输入)/Writer(输出)为后缀的是字符流。

详细的请看Java流类图结构

34、java application中的主类包含main方法,main方法的返回类型是什么?(D)

A、int                   B、float                                   C、double                          D、void

35、有程序片段如下,以下哪个表达式结果为true(B)

Float s = new Float(0.1f);

Float t = new Float(0.1f);

Double u = new Double(0.1);

A、s==t                     B、s.equals(t)                    C、u.equals(s)                        D、t.equals(u)

解析:

A:s==t 判断的是两个对象的引用地址是否相等,因为不是同一个对象肯定不相等
B:s.equals(t); //这个判断,首先判断t是不是float类型,然后调用floatToIntBits方法,将float转成int进行比较,两个肯定相等了。
C:u.equals(s) ;//因为s不是Double类型,不符合判断条件,所以返回false
D:t.equals(u);//因为u不是Float类型,不能比较,所以返回false

36、Spring boot 如何添加开发者工具集(A)

A、spring-boot-devtools                                    B、spring-boot-starter

C、spring-starter-ribbon                                    D、spring-starter-feign

37、使用SpringBoot作为我们的框架,连Tomcat都不用自己配置。Tomcat默认的端口是(A)

A、8080                        B、8085                          C、8095                                 D、8888

38、SpringBoot中,在yml文件中配置属性,那么我们在Controller中可以使用(B)属性来进行获取。

A、@parameter                      B、@value                   C、@Component             D、@name

39、默认情况下SpringBoot使用()作为日志框架?(A)

A、Logback                      B、Logger                   C、si4jback                 D、都不是

40、启动Ribbon的类注解是:(A)

A、@RibbonClient                                                      B、@EnableClient

C、@EnableDisscoveryClient                                    D、@Ribbon

41、下面哪个注解不是@SpringbootApplication包含的默认属性值:(D)

A、@Configuration                                   B、@EnableAutoConfiguration

C、@ComponentScan                             D、@EnableFeignClients

解析:启动类上面的注解是@SpringBootApplication,它也是 SpringBoot 的核心注解,主要组合包含了以下 3 个注解:

@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。

@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项, 例如:java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration、class })。

@ComponentScan:Spring组件扫描。

42、下列关于 springClound不正确的是:(D)

A、服务发现——Netflix Eureka                             B、客服端负载均衡——Netflix Ribbon

C、断路器——Netflix Hystrix                                 D、分布式配置——Netflix Zuul

43、下列对 Ribbon的解释不正确的是:(D)

A、Ribbon主要提供客户侧的软件负载均衡算法。                   B、简单轮询负载均衡

C、加权响应时间负载均衡                                                        D、绝对负载均衡

44、下列关于Kafka中涉及的一些基本概念错误的是:(D)

A、Topic:(主题)是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名。

B、Producer(生产者):是能够发布消息到话题的任何对象。

C、Broker(服务代理):已发布的消息保存在一组服务器中,它们被称为代理(Broker)或Kafka集群。

D、Consumer(消费者):只能订阅一个话题,并从 Broker拉数据,从而消费这些已发布的消息。

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值