经典面试题汇总[一]

1.抽象类和接口的区别:

  1. 接口要被实现,抽象类要被子类继承;
  2. 接口只能用方法声明,抽象类既可以用方法声明还可以用方法实现;
  3. 接口定义的变量只能是公共的静态的变量,抽象类中定义的是普通的变量;
  4. 接口和抽象类都是抽象具体的对象的,但是接口的抽象级别是最高的;
  5. 接口里面只有方法和不可变常量,抽象类具有具体的方法和属性;
  6. 接口是抽象功能的,抽象主要是抽象类别的;
  7. 接口是设计的产物,抽象是重构的产物;

2.get 和 post的区别:

  1. get是从服务器上获取数据,post是从服务器上传送数据;
  2. get传送的数据量少,不能大于2KB.post传送的数据量大,一般默认为不受限制.
  3. get安全性非常低,post安全性较高.但是执行效率get比post要好.
  4. 文件上传只能用post而不能用get.

3. stringBuffer和stringBuilder、string的区别:

  1. stringBuilder执行效率要高于stringBuffer高于String
  2. String是一个常量,不可变的,所以每一次+=附值都会创建一个新对象,stringBuffer和stringBuilder是可变的,用自带的append方法拼接赋值的时候,是在基础上进行追加,性能比string要高.又因为stringBuffer是线程安全的,所以stringBuilder的运行效率比stringBuffer要高.
  3. 对于字符串的拼接,尽可能的采用stringBuffer和StringBuilder.

4.HashTable和HashMap的区别:

  1. hashMap是线程不安全的,hashTable是线程安全的.
  2. hashMap是可以允许空值的,允许(null Key)和(bull Value),hashTable是不允许的.
  3. hashMap的性能要高于hashTable.
  4. hashMap初始size为16,扩容:newsize = oldsize*2,size一定为2的n次幂,hashTable初始size为11,扩容:newsize = oldsize*2+1.
  5. 对于map的负载极限系数,一般默认都是0.75,如果系数高的话,对于查询访问这方面有很大的提升,但是占有内存空间大,而如果系数低的话,那对于空间占有小,而对于查询访问这一块就很慢.一旦超过负载极限系数比,map就会对相应的空间就行扩容.

5.Forword(请求转发)和Redirect(重定向)的区别:

  1. 从数据共享上说:
    1. forword是一个请求的延续,是可以共享request数据的;
    2. redirect则是一个请求的重新请求,不可以共享request数据信息;
  2. 从地址变化来说:
    1. forword转发地址栏的时候地址是不会发生改变的;
    2. redirect转发地址栏的时候地址是要发生改变的;

6.xml和json的特点:

  1. xml的特点:
    1. xml是纯文本格式;
    2. 有且只有一个根结点;
    3. 标签需要自己定义;
    4. 数据传输的载体;
  2. json的特点:
    1. json的对象格式:就是{}中储存键值对,键和值之间用:分隔,键值对之间用,分隔;
    2. json的数组格式:就是[]中包含着多个json对象,json对象之间用逗号分隔;
    3. json的对象和数组可以互相嵌套,是数据传输的载体之一.
    4. 对于spring里面有个专门的@RequestBody 注解可以自动将返回的数据转换为json格式;
  3. 两种格式的区别:
    1. 传输都是同样格式的数据,xml需要多的字符去描述,json比xml更加简洁;
    2. xml的层次结构比json更加清晰;
    3. 当前流行的是json数据传输;
  4. 两者的共同点:都是传输数据的载体,且都有良好的跨平台语言的特性;

 7 对于ajax的简单介绍:

  1. 对于ajax的全称:异步javaScript及xml(Asynchronous JavaScript And XML) Ajax的核心是javaScript 对象 XmlHttpRequest(XHR)
  2. ajax不是一门新的编程语言,而是一种用于创建更好更快的交互性更强的web应用查询的技术他的优点有:
    1. 提高UE(用户体验度)
    2. 提高应用程序的性能
    3. 进行局部刷新
  3. 我们可以用JavaScript使用xmlHttpRequest对象来直接和服务器进行通信,通过这个对象我们可以在不重载页面下和web服务器交换数据,实现局部刷新.
  4. ajax在个web服务器之间使用的是异步数据传输(http请求),这样网页和服务器之间请求少量的信息,从而一定程度上减轻服务器的负担,提升站点的性能.
  5. Ajax是基于标准化的且是被广泛支持的技术,不需要插件和小程序.

8  jsp中9大隐式对象四个作用域的大小和作用范围:

四个作用域的大小分别为:application>session>request>page

  1. application的作用域是全局范围,整个应用程序共享,生命周期为:应用程序启动到停止.
  2. session的作用域范围是整个会话,当用户首次访问的时候,会产生一个会话,以后服务器可以记住这个会话状态.
  3. request的作用域是一个请求,就是客户端的一次请求
  4. page的作用域是一个jsp页面

  以上作用域的范围越来越小,request和page页面的生命周期是短暂的,他们之间一个request页面可以包含多个page页面; 

9 线程和进程的区别:

  1. 线程定义的是应用程序与应用程序之间的边界,通常来说一个进程代表这一个应用程序,不同进程之间不能共享代码和数据内存空间.
  2. 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态。
  3. 一个进程可以包含多个线程,同是创建多个线程来完成某项任务,就是多线程.
  4. 实现线程的两种方式,继承thread类和实现Runable接口;

 10 什么是单例模式:

单例模式就是改类只能返回一个单例:

单例模式具有三个特点:

  1. 私有化的构造函数;
  2. 私有化的全局变量;
  3. 公有的静态方法;

单例模式分别为懒汉式、饿汉式、双层锁式;

  1. 懒汉式:当程序第一次访问单例模式实例时才创建(线程不安全);
    1. 代码:
      public class singleton{
          private Singleton(){};
          private static Singleton single = null;
          public static Singleton getInstance(){
              if(single == null){
                  single = new Singleton();
              }
              return single;
          }    
      }

       

  2. 饿汉式:当程序启动或单例模式被加载时,单例模式的实例就已经被创建了(线程不安全);
    1. 代码
      public class singleton{
          private Singleton(){};
          private static Singleton single = new Singleton();
          public static Singleton getInstance(){
              return single;
          }    
      }

       

  3. 双层锁式是线程安全的单例模式(实现方法有很多种,就不贴出代码样例了);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值