java攻城狮面试题(三)

一、判断题

1.利用equals()方法判定Date类时,判断的是对象的值而不是对象的地址。(T)

2.调用sleep()方法可以使一个线程停止运行。(T)

3.一个新线程启动start()方法,表示线程可为JVM的线程调度程序调度而不表示它可以立即运行。(F)
   解析:进入就绪状态,可以立即运行;

4.javac命令可以运行Demo.class文件(F)
   解析:javac可以把*.java文件编译成*.class文件(字节码文件),java可以运行*.class文件;

5.一个类中可以定义多个同名的方法,只要他们的返回值类型不同即可(F)
   解析:方法名相同,但参数类型或参数列表不同,这叫方法重载;

6.System.out.println('a' + 0) 语句的输出结果是a0(F)
   解析:这里会把字符‘a’转化成ASCII码来进行计算,结果为97,如果是("a"+0)则会发生字符串拼接,输出a0;

7.一个接口可以同时继承多个接口(T)
   解析:java是单继承的,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承呢?接口是一种特殊的抽象类, 全都是抽象方法继承谁都无所谓,所以接口可以多继承;

8.throws声明在一个方法上,说明这个方法一定会抛出异常(F)
  解析:有异常才会抛出,没有异常就不抛出了,除非自己每次都写个异常,应该没人会这么干吧;

9.线程结束等待或者阻塞状态后,会进入运行状态。(F)
    解析:应该是进入就绪状态;

10.使用length()可以获得字符串或数组的长度。(F)
   解析: 数组求长度用length属性;字符串求长度用length()方法:集合求长度用size()方法

二. 选择题(每个3分,共计24分)

1.下面那个赋值语句是合法的?(B C D)
    A. float a = 2.0                                            B. double b = 2.0   
    C. int c = 2                                                  D. long d = 2
    解析:float定义时必须后缀f  float a = 2.0f    long当数值大小超过int时必须加L,不超过时不必加

2.下列哪个类声明是正确的? (B)
  A. abstract final class HI{???}                    B. public abstract class Car{???}
  C. protected private number;                        D. abstract private move(){???}

3.若在一个for语句中加入break语句,它将?(C)
   A. 对for语句执行没有影响                            B.中断本次循环,进入下一次循环
  C.退出for循环,执行for语句后面的语句       D.以上说法均不对
   解析:请参照第三大题第3小题

4.以下代码说法正确的是?(A)  
   public class SystemUtil {
       int arr[] = new int[10];
       public static void main(String[] args) {
           System.out.println(arr[1]);
       }
   }
     A.编译时将产生错误                              B.编译时正确,运行时将产生错误
     C.输出零                                                D.输出空
     解析:第一反应可能会是C,因为整形数组如果不进行初始化,默认初始化为0,但此题关键点是main方法是static静态的静态方法只能调用静态属性或静态方法,所以编译错误

5.在JAVA中,类Worker是类Person的子类,Worker的构造方法中有一句"super()",下列说法正确的是?(B)
    A. 调用类Worker中定义的super () 方法     B. 调用类Person的构造函数
    C. 调用类Person中定义的super () 方法     D. 语法错误

6、下面关于多态性的说法,正确的是? (C)
A. 一个类中不能有同名的方法                                    B. 子类中不能有和父类中同名的方法
C. 子类中可以有和父类中同名且参数相同的方法       D. 多态性就是方法的名字可以一样,但返回的类型必须不一样

7、执行下列代码后,哪个结论是正确的? (B D)
      String[] s=new String[10];
      A. s[10] 为 ""                                             B. s[9] 为 null    
      C. s[0] 为 未定义                                       D. s.length 为10

8.下列哪个方法可用于创建一个可运行的类? (A)
     A. public class X implements Runable{ public void run(){ ......} }
     B. public class X implements Thread{ public void run(){ ......} }
     C. public class X implements Thread{ public int run(){ ......} } 
     D. public class X implements Runable{ protected void run(){ ......} }
     E. public class X implements Thread{ public void run(){ ......} }

三.问答题(共计46分)

1. 线程安全是什么?怎么解决线程安全问题?(6分)
 答:线程安全是在多线程环境中,能永远保证程序的正确性
         解决方法:实现同步互斥访问:synchronized和Lock

2. 说说JavaOOP的特性?(10分)
 答:面向对象编程   封装,继承,多态
        封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式
        继承:子类继承父类的特征和行为,使得子类对象具有父类的方法
        多态:同一消息可以根据发送对象的不同而采用多种不同的行为方式

3. 简述下return,break,continue的作用场景。(10分)
 答:continue: 终止本次循环,接着执行下一次的循环
        break:跳出循环体,执行后面的语句
        return:结束方法的执行

4. 简述SpringMVC的工作原理。(10分)
 答:客户端发送请求
        前端控制器接受客户端请求DispatcherServlet
        找到处理器映射HandlerMapping,找到处理器Handler
        处理器返回一个模型视图ModelAndView
        视图解析器进行解析,返回一个视图对象
        前端控制器的得到视图对象,显示给用户

5. 什么是面向对象编程?什么是面向切面编程?(10分)
 答:面向对象编程:OOP,把一切东西看成一个对象,封装起来,进行变成
        面向切面编程:AOP ,在运行时,动态地将代码切入到类的指定方法、指定位置上

 

猜你喜欢

转载自blog.csdn.net/qq_34181343/article/details/82344472
今日推荐