1、当点击鼠标或拖动鼠标是,触发的事件是 MouseEvent

2、JDK8之前版本,HashMap的数据结构是数组+链表;JDK8及之后时数组+链表/红黑树

3、Java Thread中,run方法和start方法的区别:

  • 1、start方法:用start方法启动线程,真正的实现了多线程,通过调用Thread类的start()方法来取启动线程,这是此线程处于可运行状态,一旦得到CPU时间片,就执行run()方法。
  • 2、run方法:fun()方法只是类的普通方法,run方法没有实现多线程

4、重载:同名不同参,返回值无关;

​ 覆盖/重写:同名同参

5、继承和实现:

  • 1、类与类之间的关系为继承,只能单继承,但可以多层继承
  • 2、类与接口之间的关系为实现,既可以单实现也可多实现,接口与接口之间的关系为继承,既可以单继承,也可以多继承。

6、关于集合类ArrayList、LinkedList、HashMap描述:

  • List 是一个有序集合,可以存放重复的数据(有序:存进是什么顺序,取出是还是什么顺序)
  • (1).ArrayList 底层是数组适合查询,不适合删除元素。
  • (2).LiskedList 底层是双向链表,不适合查询操作。
  • (3).Vector 底层和ArrayList相同,但是Vector是线程安全的,效率较低很少使用
  • Set 是一个无序集合,不允许放持重复的数据(无序不可重复,存进和取出的顺序不一样)
  • (1).HashSet 底层是哈希表/散列表
  • (2).TreeSet 继承sartedSet接口(无需不可重复,但存进去的元素可以按照元素的大小自动排序)
  • Map 是一个无序集合,以键值对的方式存放数据,键对象不允许重复,值对象可以重复。
  • (1).HashMap实现不同步,线程不安全。 HashTable线程安全
  • (2).HashMap中的key-value都是存储在Entry中的。
  • (3).HashMap可以存null键和null值,不保证元素的顺序恒久不变,它的底层使用的是数组和链表,通过hashCode()方法和equals方法保证键的唯一性

7、OutputStream类包含方法flush( ):flush()函数强制将缓冲区中的字符流、字节流等输出,原因是如果输出流输出到缓冲区完成后,缓冲区并并没有填满,那么缓冲区将会一直等待被填满。所以在关闭输出流之前要调用flush()。

8、Java中的集合类包括ArrayList、LinkedList、HashMap等类描述:

  • ArrayList底层维护了一个可变数组,LinkedList底层维护了一个双向链表
    • 增删效率:LinkedList > ArrayList
    • 查改效率:ArrayList < LinkedList
  • HashMap的K可以为null,只能存在一个

8、下面哪些类实现或者继承了Collection接口

  • Collection接口子类:
    • List接口:内容允许重复
      • ArrayList
      • LinkedList,也实现了Queue接口
      • Vector
    • Set接口:内容不许重复
    • Queue接口:队列接口
    • sortedSet接口:单值排序接口
  • Map接口 子类:
    • HashMap 接口:无序存放,key不重复
    • HashTable接口:无序存放,key不重复
    • TreeMap接口:按key排序,key不重复
    • WeakHashMap接口:弱引用Map集合

9、多态的作用:

  • 提高可重复性
  • 扩展代码模块

10、session 、 Cookie 、地址重写 、隐藏域技术可以用在WEB开发中实现会话跟踪实现

11、面向对象的理解:

  • 面向对象的最重要的特性是支持继承、封装和多态
  • 系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展
  • 函数式的语言必然是面向对象的语言 面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口
  • 过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装
  • Java和C++都是静态类型的面向对象编程语言