Java常会面试题

一、Get和Post的区别
一.get是从服务器上获取数据,post是向服务器传送数据,
二.get传递的数据量较小,不可能压倒2KB。post传送的数据量较大,壹般被暗中认可为不受限制。
三.get安全性相当的低,post安全性较高。但是进行效能却比Post方法好。
肆.在进行文件上传时只好利用post而不能够是get。
贰、多态各样呈现形式:
1.    接口和接口的贯彻。
二.    类和类的持续。
3.    重载。
4.    重写。
三、StringBuffer StringBuilder String 区别
String        字符串常量   不可变  使用字符串拼接时是例外的一个空中
StringBuffer  字符串变量   可变   线程安全 
字符串拼接直接在字符串后扩大
StringBuilder 字符串变量   可变   非线程安全 
字符串拼接间接在字符串后扩充
一.StringBuilder履行作用抢先StringBuffer高于String.
2.String是一个常量,是不可变的,所以对于每趟+=赋值都会创建多少个新的对象,StringBuffer和StringBuilder都是可变的,当举行字符串拼接时行使append方  
 法,在原来的底蕴上拓展追加,所以质量比String要高,又因为StringBuffer 
是线程安全的而StringBuilder是线程非安全的,所以StringBuilder的功效当先StringBuffer.
三.对于大数据量的字符串的拼凑,采取StringBuffer,StringBuilder.
四、Hashtable与HashMap的区别
     HashMap不是线程安全的,HashTable是线程安全。
     HashMap允许空(null的键和值(key,HashTable则不容许。
     HashMap品质优于Hashtable。
Map
1.Map是二个以键值对存款和储蓄的接口。Map下五个具体的兑现,分别是HashMap和HashTable.
二.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效能高于HashTable.
3.HashMap允许键或值为空,而HashTable不允许键或值为空.
5、9大隐式对象    
输入/输出对象:  request   response   out
功效域通信对象: session  application  pageContext
Servlet 对象:   page   config
荒谬对象:      exception
6、Forword(请求转发)与Redirect(重定向)    
一、从数量共享上
      Forword是二个伸手的后续,能够共享request的数量
      Redirect开启2个新的请求,不得以共享request的数额
2、从地址栏
      Forword转载地址栏不产生变化
      Redirect转载地址栏产生变化
七、XML和Json的特点    
   Xml特点:
  1、且仅3个根节点;
  二、是单独与软件和硬件的音讯传输工具(传输量较大
  3、所的价签都亟需自定义     
  四、仅仅是纯文本文件
 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关键字,它的意义范围是在同1页面。
PageContext是成效域通讯对象;日常选取setAttribute()和getAttribute()来设置和获得存放对象的值。
十、Ajax总结    
    AJAX 全称: 异步JavaScript及 XML(Asynchronous JavaScript And XML
Ajax的为主是JavaScript对象XmlHttpRequest(XH奇骏)。
Ajax的优点:
    进步用户体验度(UE)
    进步应用程序的属性
    实行部分刷新
 AJAX不是一种新的编制程序语言,而是1种用于创制越来越好更加快以及交互性更加强的 Web
应用程序的技艺。
二.  由此 AJAX,大家的 JavaScript
可选拔JavaScript的XMLHttpRequest对象来直接与服务器实行通信。通过这么些目标,大家的
JavaScript 可在不重载页面包车型地铁事态与Web服务器调换数据,即可局地刷新。
三.  AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP
请求,那样就可使网页从服务器请求少量的新闻,而不是任何页面,减轻服务器的负担,提高站点的品质。
 AJAX 可使因特网应用程序越来越小、越来越快,更友善,用户体验(UE好。
5.  Ajax是基于标准化并被广泛帮忙的技巧,并且不须要插件和下载小程序
十一、List,Set,Collection,Collections    
List和Set都是接口,他们都继承于接口Collection,List是三个静止的可重新的联谊,而Set是冬辰的不行重复的聚众。Collection是汇聚的顶层接口,Collections是1个打包了不少关于集合操作的静态方法的工具类,因为构造方法是私的,所以无法实例化。
贰.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));
    }
}

十四、osi7层模型    
    第一层:物理层
    第①层:数据链路层
    第层:网络层
    第四层:传输层    
    第五层:会话层
    第六层:表示层
    第七层:应用层
10五、线程和经过的分歧    
1.线程(Thread)与进程(Process
进程定义的是应用程序与应用程序之间的境界,日常来说1个经过就代表三个与之对应的应用程序。不一致的历程之间不可能共享代码和数据空间,而平等进度的区别线程可以共享代码和数量空间。
三个进度能够回顾若干个线程,同时制造四个线程来实现某项任务,正是多线程。
落实线程的三种办法:继承Thread类,落成Runable接口
十6、jvm的内部存款和储蓄器结构
java虚拟机的内部存款和储蓄器结构分为堆(heap)和栈(stack),堆里面存放是目标实例约等于new出来的靶子。栈里面存放的是着力数据类型以及引用数据类型的位置。
对于所谓的常量是储存在方法区的常量池里面。
拾柒、内部存款和储蓄器泄和内部存款和储蓄器溢出    
内部存款和储蓄器败露 (memory
le)ak),是指应用程序在申请内部存款和储蓄器后,无法自由已经报名的内部存款和储蓄器空间.一遍内部存储器走漏危机能够忽略,但要是任其发展最终会促成内部存储器溢出(out
of memory).
如读取文件后流要开始展览当下的关门以及对数据库连接的自由。
内部存款和储蓄器溢出(out of
memory是指应用程序在报名内存时,没充裕的内存空间供其利用。
如作者辈在项目中对此多量数据的导入,接纳分段批量付给的措施。
十八、单例    
单例正是此类只可以回到一个实例。
单例所全部的风味:
一.私化的构造函数
二.私的静态的全局变量
三.公的静态的章程
单例分为懒汉式、饿汉式和双层锁式
饿汉式:

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;
      }
}

相关文章