一. List 与 Set 区别
1.List的功能方法

  List(interface): 次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。

  ArrayList: 由数组实现的List。它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。

  LinkedList: 对顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。

 2.Set的功能方法

  Set(interface): 存入Set的每个元素必须是唯一的,因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。

  HashSet: 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。

  TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。

  LinkedHashSet: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

  HashSet采用散列函数对元素进行排序,这是专门为快速查询而设计的;TreeSet采用红黑树的数据结构进行排序元素;LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的。需要注意的是,生成自己的类时,Set需要维护元素的存储顺序,因此要实现Comparable接口并定义compareTo()方法。


 
二.final 与 static 区别<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
 
    final关键字
     1.--final类不能有子类
     2.--final方法不能被覆盖
     3.--final变量是一个常量
 
   static关键字
      1.--修饰变量--静态变量(可以用类名直接点取)
      2.--修饰方法--静态方法
             --非static方法中可以使用static成员
             --static方法中不能直接使用非静态成员
             --static方法中不能用this
             --static方法中不能被覆盖
      3.--初始化块---静态块(类装载时执行一次)
      4.--static关键字声明的属性或方法与类相关,当成一个胜于此类的所有独特对象整体,因此,static成员通常叫做“类成员”
 

三.面向接口编程的好处?

 

接口(Interface)---方法定义和常量值集合

1.一个“公有接口”是客户代码和实现此接口的类之间的合约

2.一个Java接口是包含没有实现的方法合约

3.许多不相关的类可以实现同一个接口

4.一个类可以实现许多不相关的接口

用处:

1.定义不相关类的共同行为,不需要这些类之间的层次关系

2.可以指明多个类需要实现的方法

3.可以了解对象的编程界面,而不需要了解对象对应的类

4.通过一个接口列表可以实现多重继承

 

四. 什么是单例模式,在什么情况下使用?

 

单例模式:在单例模式中,对活动的单例只有一个实例。对单例类的所有实例化得到的都是相同的一个实例。这个模式也提供一个全局的接口来访问这个类的实例。

 
public class Singleton {

//Fields
    private static Singleton instance;
    //Standard default Constructor
    protected Singleton(){};
    //Static method for creating the single instance of the Constructor
    public static Singleton Instance(){
        //initialize if not already done
        if(instance == null)
        instance = new Singleton();
        //return the initialized instance of the Singleton Class 
        return instance;
    }
}

public class Client {

public static void main(String []args){
      Singleton s1 = Singleton.Instance();
      Singleton s2 = Singleton.Instance();
      if(s1 == s2)
      System.out.println("The same instance");
    }
}

单例模式的优点:

    1。实例控制:单例模式防止其它对象对自己的实例化,确保所有的对象都访问一个实例。
    2。伸缩性:因为由类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性。
五.什么是策略模式,在什么情况下使用?
 
策略模式(Strategy Pattern)中体现了两个非常基本的面向对象设计的基本原则:封装变化的概念;编程中使用接口,而不是对接口实现。策略模式的定义如下: 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。
策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是弱连接的关系。弱连接的特性使软件具有更强的可扩展性,易于维护;更重要的是,它大大提高了软件的可重用性。
 
 

转载于:https://blog.51cto.com/tscjsj/86087

Java 笔试题---Java与编程模式--7月6日相关推荐

  1. Java笔试题库之编程题库 总共30道编程题,掌握了就可以应付中级以内Java面试题

    1.编程实现:二分搜索算法 解答: public class SearchTest { /** 被搜索数据的大小 */ private static final int size = 5000000; ...

  2. 唯品会校招java笔试题,唯品会校招编程题详解

    题目:输入一串字符串,去除多余的空格,并将每个单词的字符倒叙输出.如输入"iew  nip     iuh" 输出"wei pin hui" java实现: ` ...

  3. 深圳太极软件笔试题回顾(2013年12月11日)

    1.指出Truncate Table.Delete Table和Drop Table的区别? 答:Truncate Table与Delete Table都是用来删除表中的数据的,而Drop Table ...

  4. 2016最新Java笔试题集锦

    更新时间:2015-08-13         来源:网络投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文"2016最新Java笔试题集锦",供大家阅读参考 ...

  5. [转载] Java笔试题集锦

    参考链接: 关于Java中文件名和类名的误解 Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写."Mode ...

  6. java笔试题分类集锦

    合格的java工程师仅仅要有技术,还要懂得产品才能少修改,懂得测试要求,才能一次通过,懂得运维问题才能减少后期维.这些大方向体现在设计模式,程序架构,小方面就是语言的准确有效性,比如effective ...

  7. 2018科大讯飞的Java笔试题附带参考答案

    分享一下自己做过的科大讯飞的Java笔试题,题量有点大哦~(附带参考答案) 单选题 1.下列关于继承的描述错误的是(  ) A.  在Java中允许定义一个父类的引用,指向子类对象 B.  在Java ...

  8. 艺龙java面试题_艺龙2018秋招Java笔试题

    在牛客做了那么多题,终于轮到我分享了~~这是我做过的艺龙的Java笔试题哦~~ 单选题 1.设有以下递归函数: int f(int m,int n) { if(m==0) { return n+1; ...

  9. 东软信息学院java试题,东软Java笔试题答案

    东软Java笔试题答案 Java面向对象程序设计考试卷班级:姓名:时间:90分钟一.选择题(没有注明多选,则为单选)1. 下列变量定义错误的是A. int a; B. double b=4.5; C. ...

最新文章

  1. 松翰松翰c语言编程指导,松翰C程序检单例程代码下载
  2. centos selinux mysql 5.6_centos 6.4下安装mysql 5.6.11
  3. c语言启动程序句柄无效,电脑中玩英雄联盟提示“句柄无效”是怎么回事
  4. android ble从设备,从Android设备发送命令到蓝牙
  5. k8s mysql 配置文件_k8s配置文件模板
  6. 解决VirtualBox里Ubuntu的共享文件夹无法访问(终极解决方案)
  7. Spring Boot Debug调试
  8. Cucumber+Rest Assured快速搭建api自动化测试平台
  9. java web swing 教程_好程序员Java教程解读什么是swing
  10. M2Det论文解读和开源代码
  11. 《望洞庭湖赠张丞相》 孟浩然
  12. 手机图片怎么压缩,简单的压缩方法
  13. 类似911的代理ip,911代理的官网,yilu代理软件,911s5替代软件海外代理平台哪里有?
  14. 设置swiper中的高度
  15. Kafka知识点概述
  16. java 石头剪刀布_java循环练习:石头剪刀布
  17. 51单片机PWM调速风扇转速显示转速设置
  18. arcmap给tif添加地理坐标_如何将JPG格式的图片转化为带地理坐标的TIFF格式
  19. 滚动轴承频谱分析详解
  20. springboot整合rabbitmq的发布确认,消费者手动返回ack,设置备用队列,以及面试题:rabbitmq确保消息不丢失

热门文章

  1. Tex, LaTex概念及实例
  2. [设计模式-创建型]工厂方法(Factory Method)
  3. Teamcenter - Index search 找不到相关物件的解决方法
  4. java保护访问,Java中的受保护的访问修饰符
  5. 火狐浏览器允许ajax,ajax如何解决火狐浏览器或其它非ie浏览器的兼容性问题
  6. java 生成二维码,并跟其他图合成新图 图片添加水印
  7. Docker容器虚拟化与传统虚拟机比较
  8. 怎么查询服务器绑定的网站吗,服务器绑定网站吗
  9. mm1排队系统仿真matlab实验报告,MM1排队系统仿真matlab实验报告.doc
  10. go语言和java比_python与java、php、go的优势对比,各语言不要引起恐慌哈