每天10个面试题(day03)

1.下面哪个不属于HttpServletResponse接口完成的功能?

A.设置HTTP头标
B.设置cookie
C.读取路径信息
D.输出返回数据

解:C,
分析:本题考查Java Servlet的request和response的知识点。

A:设置HTTP头标

response.setHeader("Refresh","3"); //三秒刷新页面一次

B:设置cookie

Cookie cookie = new Cookie("name","eden");
response.addCookie(cookie);

C(错误):读取路径信息,request读取路径信息

//从request获取各种路径总结
request.getRealPath("url"); // 虚拟目录映射为实际目录
request.getRealPath("./");    // 网页所在的目录
request.getRealPath("../"); // 网页所在目录的上一层目录
request.getContextPath();    // 应用的web目录的名称

D:输出返回数据

HttpServleteResponse.getOutputStream().write();

2.判断对错。在java的多态调用中,new的是哪一个类就是调用的哪个类的方法。

解:错,如子类继承父类,但是没有实现父类的方法,当进行向上转型赋值时,调用的方法就是父类的


3.

public boolean returnTest()
{
    try
    {
        return true;
    }
    catch (Exception e)
    {

    }
    finally
    {
        return false;
    }
}

以下代码返回值是什么?

解:false,记住一条:无论如何都会执行finally中的代码。


4.有以下类定义:

abstract class Animal{
    abstract void say();
}
public class Cat extends Animal{
    public Cat(){
        System.out.printf("I am a cat");
    }
    public static void main(String[] args) {
        Cat cat=new Cat();
    }
}

运行后:

A.I am a cat
B.Animal能编译,Cat不能编译
C.Animal不能编译,Cat能编译
D.编译能通过,但是没有输出结果

解:B,当一个实体类继承一个抽象类,必须实现抽象类中的抽象方法,所以cat类编译不通过


5.有以下代码:

class A{
    public A(String str){

    }
}
public class Test{
    public static void main(String[] args) {
        A classa=new A("he");
        A classb=new A("he");
        System.out.println(classa==classb);
    }
}

请问输出的结果是:

A.false
B.true
C.报错

解:A,== 表示的是否指向的是同一个内存。
System.out.println(classa.equals(classb)); 如果这样输出, 答案也是错误的; 因为子类没有覆盖Object的equals()方法,而默认调用==的这个方法,所以判断两个对象是否相等需要覆盖equals()方法和hashcaode()方法。


6.下面哪一项不是加载驱动程序的方法?

A.通过DriverManager.getConnection方法加载
B.调用方法 Class.forName
C.通过添加系统的jdbc.drivers属性
D.通过registerDriver方法注册

解:A,DriverManager.getConnection方法返回一个Connection对象,这是加载驱动之后才能进行的

拓展:
加载驱动方法:
1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2.DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");


7.下面有关java和c++的描述,错误的是?

A.java是一次编写多处运行,c++是一次编写多处编译
B.c++和java支持多重继承
C.Java不支持操作符重载,操作符重载被认为是c++的突出特征
D.java没有函数指针机制,c++支持函数指针

解:B,Java不支持多继承
拓展:
Java没有指针的概念,被封装起来了,而C++有;Java不支持类的多继承,但支持接口多继承,C++支持类的多继承;C++支持操作符重载,Java不支持;Java的内存管理比C++方便,而且错误处理也比较好;C++的速度比Java快;C++更适用于有运行效率要求的情况,Java适用于效率要求不高,但维护性要好的情况。


8.String str = new String(“abc”),“abc”在内存中是怎么分配的?

A.堆
B.栈
C.字符串常量区
D.寄存器

解:AC,
堆和字符串常量池中,当你new String(“abc”)时,其实会先在字符串常量区生成一个abc的对象,然后new String()时会在堆中分配空间,然后此时会把字符串常量区中abc复制一个给堆中的String,故abc应该在堆中和字符串常量区。(这题不严谨,Java7中已经把常量池引进堆中了)


9.下面描述属于java虚拟机功能的是?

A.通过 ClassLoader 寻找和装载 class 文件
B.解释字节码成为指令并执行,提供 class 文件的运行环境
C.进行运行期间垃圾回收
D.提供与硬件交互的平台

解:ABCD,ABC不解释,D:虚拟机是运行在操作系统之上的,不与硬件交互。


10.下列选项中是正确的方法声明的是?()

A.protected abstract void f1();
B.public final void f1() {}
C.static final void fq(){}
D.private void f1() {}

解:ABCD,
java中抽象类中的抽象方法要么是public 要么是protect 不能是private
接口中的方法 要么是abstract的, 要么是public的, 不加public 默认是public的。
c++中没有abstract关键字。
拓展:

  1. 对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。
  2. 对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。
  3. 对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。
  4. 对于private来说,它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值