Java 面试题及答案


1.Java 八个基本数据类型

基本数据类型包括byte、int、char、long、float、double、boolean和short。

String 不是基本数据类型。

2.String 传值是值传递。

例:

    public static String change(String source) {
        String source2 = source;
        source2 += "im changed";
        return source2;
    }

        String source = new String("hello");
 public static void main(String[] args) throws ParseException {
        change(source);
        System.out.print(source);
}

输出结果:hello
 
3.STRING与STRINGBUFFER的区别
 
 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
 
另外StringBuilder 比 StringBuffer 要快,将StringBuilder的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用StringBuffer。[StringBuilder类可以用于在无需创建一个新的字符串对象情况下修改字符串。StringBuilder不是线程安全的,而StringBuffer是线程安全的,但其在单线程中的性能比StringBuffer高。
 
4.JAVA中的Collection FrameWork
 
  Collection
 ├List
 │├LinkedList
 │├ArrayList
 │└Vector
 │ └Stack
 └Set
 Map
 ├Hashtable
 ├HashMap
 └WeakHashMap
 
5.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。
 
        1.无论try里面有没有return语句,finally语句一定都会执行。
 
        2.如果finally中没有return语句,try里面有return,那么在执行try中的return语句之前会先去执行finally中的代码,再去执行try中的return语句;如果在finally中也包含return语句,将会直接返回,不再去执行try中的return语句。
 
6.forward 和redirect的区别
 
  转发是服务器行为,重定向是客户端行为。
 
 转发过程:客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源 发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客 户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
 
重定向过程:客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器--》客户浏览器发现 是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的 路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
 
7.Java中的23种设计模式:
  Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
  Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
  Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
  Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
  Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
  Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
  Observer(观察者模式), State(状态模式), Strategy(策略模式),
  Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)

本文永久更新链接地址:

相关内容