A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 八戒 中级黑马   /  2015-6-17 22:37  /  306 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前面10个发表过了...

10.接口中的成员变量默认都是public static final类型的,必须被显式初始化
   接口中的成员方法默认都是public abstract类型的
11.struts2中,actionerror与fielderror的区别
        (1).actionerror里面加入的为错误信息,为一个集合
            fielderror里面加入的为一个键值对,为一个map
            this.addFieldError("birthday","birthday should be before gradution");
            this.addActionError("birthday should be before gradution");       
        (2).在struts标签中,能自动显示fielderror中的错误,根据map里面的key找到错误信息
            actionerror显示不出来,需在jsp页面上加上<s:actionerror/>
        (3).如果不想显示struts自带的类型转换错误,可以将form的表单的theme设置为simple,这时
                struts表单就完成了一个html表单
                <s:form action="register" theme="simple">
12.面试:==和equals()的区别?
     ==:
        可以比较基本类型,也可以比较引用类型
        比较基本类型,比较的是值是否相同
        比较引用类型,比较的是地址值是否相同               
     equals:
        只能比较引用类型
        默认情况下,比较的是地址值是否相同
        如果想比较内容,请自己重写Object类的equals()方法
13.面试:
        (1).字符串一旦被赋值就不能被改动。 注意:这里的改动指的是字符串内容
        (2).String s = new String("hello")和String s = "hello"有区别吗?是什么?
                有
                前者创建了两个对象
                后者创建了一个对象
14.关键字instanceof
        instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。
15.浅谈字符与字符串
        'A'~'z'都是字符,而''为字符串(中间什么都没有),而' '为字符(因为中间有一个空格,也算字符)
16.面试:
        String和StringBuffer的区别?
                String的长度固定
                StringBuffer的长度可变
        StringBuffer和StringBuilder的区别?
                StringBuffer的线程安全,效率低
                StringBuilder的线程不安全,效率高
17.抽象类和接口中有构造方法吗?
        抽象类有,接口没有
        几个接口中不能定义构造器的理由:
                1.构造器用于初始化成员变量,接口没有成员变量
                2.类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序
                3.构造器是属于类自己的,不能继承,因为是纯虚的,接口不需要构造器
18.java中的String为什么可以使用==比较字符串内容?
一句话概括:
java中的String是final类,final类是共享数据的,而java中==比较的是内存地址,而final类的String相同字符串,指向的是同一个地址!
详细:
“==”在任何时候都是比较地址,这种比较永远不会被覆盖。

java中的String类是final类,final修饰类,被final修饰的类将不能被继承。final类中的方法也都是final的。
对象一旦创建属性就不会改变,不变模式可以实现对象的共享(可以用一个对象实例赋值给多个对象变量)。
池化的思想,把需要共享的数据放在池中(节省空间,共享数据)只有String类可以用“”中的字面值创建对象。在String类中,以字面值创建时,会到Java方法空间的串池空间中去查找,如果有就返回串池中字符串的地址,并把这个地址付给对象变量。如果没有则会在串池里创建一个字符串对象,并返回其地址付购对象变量,当另一个以字面值创建对象时则会重复上述过程。
如果是new在堆空间中创建String类的对象,则不会有上述的过程(String做字符串连接效率低原因)。
所以相同字符串在内存是同一个对象,一个永不变的对象!
19.document.getElementsByName()与 document.getElementById()、document.getElementsByTagName()的区别
document.getElementsByName()    是根据控件名称获取这个控件对象,因为控件名称可以相同,返回的是一个对象数组。
document.getElementById()      是根据控件ID获取这个控件对象,因为控件ID唯一,返回的是一个对象。
document.getElementsByTagName() 是根据控件TAG获取这个控件对象,返回的是一个对象数组。
例如:
HTML中有控件如下:
    <input type="radio" id="radio1" checked="checked" name="radiogroup1"  value="1"/>
    <input type="radio" id="radio2" name="radiogroup1" value="2"/>
    <input type="radio" id="radio3" name="radiogroup1" value="3"/>
则:
document.getElementsByName('radiogroup1') 取得的是这三个控件,可以用      document.getElementsByName('radiogroup1')[0] 取得的是第一个控件。
document.getElementById('radio1')取得的是第一个控件,
document.getElementsByTagName('input') 取得的是这三个控件,
可以用document.getElementsByTagName('input')[0] 取得的是第一个控件。
getElementsByName('delID')返回的是所有名称为'delID'的控件组成的数组,数组就是一种集合。
20.
null值不能被打印,如果String s;syso(s),会报错,s未被初始化,但是如果String s=null;syso(s) 则不会报错,会打印null值
21.
所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同。
“懒汉式”是在你真正用到的时候才去建这个单例对象:
比如:有个单例对象
public class Singleton{
    private Singleton(){}
    private static Singleton singleton = null;  //不建立对象
    public static synchronized Singleton getInstance(){
             if(singleton == null) {        //先判断是否为空               

                 singleton = new Singleton ();  //懒汉式做法
             }
             return singleton ;
     }

}
“饿汉式”是在不管你用的用不上,一开始就建立这个单例对象:比如:有个单例对象

public class Singleton{
    public Singleton(){}
    private static Singleton singleton = new Singleton();  //建立对象

    public static Singleton getInstance(){

        return singleton ;//直接返回单例对象    }}

它有以下几个要素:

    私有的构造方法
    指向自己实例的私有静态引用
    以自己实例为返回值的静态的公有的方法

22.EL表达式的4大域
属性范围      El中的名称
page                pageScope
request        requestScope
session               sessionScope
application    applicationScope

23.
char a = '\u1432';万国码
char c = 65535;
syso(c);
考点可以通过编译:16进制编码(ffff=65535)

23.servlet是单例,而Action不是单例,每个请求都会创建新的Action对象,以及ValueStack和OgnlContext
   action一个请求就是一个线程,不会出现线程安全问题

24. 方法中的内部类能不能访问方法中的局部变量,为什么?
不能,方法中的内部类和局部变量的生命周期不一样,内部类也是一个类
,储存在堆中,也只有当对该类的引用消失时,内部类才会消失,而方法
的局部变量是储存在栈中的,当调用结束时会退栈,即在内存中消失,也就
是说,内部类的生命周期超过了方法中的局部变量的生命周期,内部类可能
会调用到已经消失的属性,因此内部类不能访问方法中的局部变量,解决方法
是在局部变量前加修饰final,此时局部变量就会存在堆中,生命周期跟工程
的生命周期是一样的,此时内部类就可以访问方法中的局部变量.

5 个回复

倒序浏览
这几个题很有针对性啊,看了之后查缺补漏
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
来复习复习
回复 使用道具 举报
总结的不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马