Java时见面试题

一、Get和Post的区别
1.get凡是从服务器上获取数据,post是于服务器传送数据,
2.get传递的数据量较小,不能够压倒2KB。post传送的数据量较充分,一般被默认为无为限制。
3.get安全性非常低,post安全性比较高。但是执行效率也较Post方法好。
4.以展开文件及传时只能使用post而休克是get。
老二、多态四栽体现形式:
1.    接口及接口的落实。
2.    类和类的接轨。
3.    重载。
4.    重写。
三、StringBuffer StringBuilder String 区别
String        字符串常量   不可变  使用字符串拼接时是不同的2个空中
StringBuffer  字符串变量   可更换   线程安全 
字符串拼接直接当字符串后加
StringBuilder 字符串变量   可变   非线程安全 
字符串拼接直接在字符串后长
1.StringBuilder履效率超过StringBuffer高于String.
2.String凡是一个常量,是不可变的,所以对每一样次等+=赋值都见面创一个新的对象,StringBuffer和StringBuilder都是可变的,当进行字符串拼接时用append方  
 法,在原先的基本功及开展充实,所以性能比String要后来居上,又因为StringBuffer 
是线程安全的如果StringBuilder是线程非安全之,所以StringBuilder的频率超过StringBuffer.
3.对大数据量的字符串的拼接,采用StringBuffer,StringBuilder.
四、Hashtable与HashMap的区别
     HashMap不是线程安全的,HashTable是线程安全。
     HashMap允许空(null的键和值(key,HashTable则未同意。
     HashMap性能优于Hashtable。
Map
1.Map是一个坐键值对存储的接口。Map下两独实际的贯彻,分别是HashMap和HashTable.
2.HashMap是线程非安全之,HashTable是线程安全之,所以HashMap的频率高于HashTable.
3.HashMap允许键或值也空,而HashTable不允许键或值吗空.
五、九好隐式对象    
输入/输出对象:  request   response   out
作用域通信对象: session  application  pageContext
Servlet 对象:   page   config
错对象:      exception
六、Forword(请求转发)与Redirect(重定向)    
1、从数量共享上
      Forword是一个告的接轨,可以共享request的数据
      Redirect开启一个新的请求,不得以共享request的数
2、从地址栏
      Forword转发地址栏不发生变化
      Redirect转发地址栏发生变化
七、XML和Json的特点    
   Xml特点:
  1、且仅一个根节点;
  2、是单独和软件及硬件的音信传输工具(传输量较生
  3、所的签还要从定义     
  4、仅仅是纯文本文件
 Json(JavaScript Object Notation特点:
json分为两种植格式:
json对象(就是于{}中贮存键值对,键和价值期间为此冒号:分隔,键值对中因此逗号,分隔),json数组(就是[]遭到贮存多只json对象,json对象期间因此逗号分隔)(两者中可以拓展互动嵌套
  数据传的载体之一
区别:
  xml的传输数据量比json的假设挺,流行的凡基于json的数据传。
共同点:
    Xml和json都是传输数据的载体,并且拥有跨平台跨语言的特点。
八、request.getSession()、reqeust.getSession(false)和request.getSession(true)  
 
  
 getSession()/getSession(true):当session存在时时返回该session,否则新建一个    
session并回到该目标
    getSession(false):当session存在时时回来该session,否则回null
九、Page和PageContext的区别    
    Page是servlet对象;使用this关键字,它的图范围是当同一页面。
PageContext是作用域通信对象;通常采用setAttribute()和getAttribute()来设置与博存放对象的值。
十、Ajax总结    
    AJAX 全称: 异步JavaScript及 XML(Asynchronous JavaScript And XML
Ajax的基本是JavaScript对象XmlHttpRequest(XHR)。
Ajax的优点:
    提高用户体验度(UE)
    提高应用程序的性
    进行局部刷新
 AJAX不是如出一辙栽新的编程语言,而是相同种植用于创造更好又快和交互性更胜的 Web
应用程序的技巧。
2.  由此 AJAX,我们的 JavaScript
可利用JavaScript的XMLHttpRequest对象来直接和服务器进行通信。通过是目标,我们的
JavaScript 可在匪重载页面的动静及Web服务器交换数据,即可局部刷新。
3.  AJAX 在浏览器和 Web 服务器之间使用异步数据传(HTTP
请求,这样就是可一旦网页打服务器请求少量的音信,而非是通页面,减轻服务器的承受,提升站点的属性。
 AJAX 可要因特网应用程序更小、更快,更温馨,用户体验(UE好。
5.  Ajax是因标准化并吃广大支持的艺,并且不需插件与下载小程序
十一、List,Set,Collection,Collections    
List和Set都是接口,他们还蝉联给接口Collection,List是一个一如既往的不过还的集聚,而Set是无序的不得再的聚集。Collection是集的顶层接口,Collections是一个卷入了重重关于集合操作的静态方法的家伙类,因为构造方法是患得患失的,所以未可知实例化。
2.List接口贯彻类ArrayList,LinkedList,Vector。ArrayList和Vector是依据数组实现的,所以查询的早晚快快,而当拓展加及去的当儿快较迟缓LinkedList是根据链式存储结构,所以于开展询问的上快较迟缓而以展开加及去的时段快比较快。又坐Vector是线程安全之,所以他以及ArrayList相比而言,查询效率要没有。
十二、时间类型转换    

public class DateFormat {
    public static void fun() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        String newDate;
        try {
            newDate = sdf.format(new SimpleDateFormat("yyyyMMdd")
                    .parse("20121115"));
            System.out.println(newDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
    public static void main(String args[]) {
        fun();
    }
}

十三、阶乘    (递归思想)

public class Multiply {
    public static int multiply(int num) {
        if (num < 0) {
            System.out.println("请输入大于0的数!");
            return -1;
        } else if (num == 0 || num == 1) {
            return 1;
        } else {
            return multiply(num - 1) * num;
        }
    }
    public static void main(String[] args) {
        System.out.println(multiply(10));
    }
}

十四、osi七层模型    
    第一层:物理层
    第二叠:数据链路层
    第层:网络层
    第四层:传输层    
    第五层:会话层
    第六层:表示层
    第七层:应用层
十五、线程和经过的界别    
1.线程(Thread)与进程(Process
经过定义的凡应用程序与应用程序之间的鄂,通常来说一个历程就表示一个跟的相应的应用程序。不同之历程中无可知共享代码和数据空间,而平进程的例外线程可以共享代码和数目空间。
一个进程可以包括几独线程,同时创建多独线程来形成某项任务,便是多线程。
实现线程的简单种办法:继承Thread类,实现Runable接口
十六、jvm的内存结构
java虚拟机的内存结构分为堆(heap)和栈(stack),堆里存放是目标实例也不怕是new出来的目标。栈里面存放的凡核心数据类以及引用数据类型的地点。
对所谓的常量是储存在方法区的常量池里面。
十七、内存泄和内存溢出    
内存泄露 (memory
le)ak),是乘应用程序在申请内存后,无法自由已报名的内存空间.一坏内存泄露危害可以忽略,但若是任其发展最终见面促成内存溢出(out
of memory).
如读取文件后流一旦拓展即时的关闭和针对数据库连接的假释。
外存溢出(out of
memory是凭借应用程序在提请外存时,没足够的内存空间供其用。
一旦我们当品种中对此大批量数码的导入,采用分段批量交由的不二法门。
十八、单例    
单例就是此类只能回到一个实例。
单例所拥有的性状:
1.私化的构造函数
2.私之静态的全局变量
3.公的静态的点子
单例分为懒汉式、饿汉式和双层锁式
饿汉式:

public class Singleton1 {
      private Singleton1() {};
      private static Singleton1 single = new Singleton1();
      public static Singleton1 getInstance() {
          return single;
     }
 }

 懒汉式:

public class Singleton2 {
      private Singleton2() {}
      private static Singleton2 single=null;
      public tatic Singleton2 getInstance() {
           if (single == null) {  
              single = new Singleton2();
          }  
         return single;
     }
 }

线程安全:

public class Singleton3 {
      private Singleton3() {}
      private static Singleton3 single ;
      public static Singleton3 getInstance() {
        if(null == single){
            synchronized(Singleton3.class){
                if(null == single){
                    single = new Singleton3();
                }
            }
        }
        return single;
      }
}

相关文章