JAVA 面试重点知识总结
一、集合:
1 、Collection(是java.util下的接口) 和 Collections(是java.util下的类)。
2 、List, Set,是否继承自Collection接口,Map不是。
3 、ArrayList(线程不安全)和Vector(线程安全)。
4 、HashMap(是线程安全的)和Hashtable(是线程不安全的)。值:只有HashMap可以让你将空值作为一个表的条目的key或value
List、Map、Set三个接口,存取元素时,各有什么特点?
List特点:元素有放入顺序,元素可重复
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
Map特点:元素按键值对存储,无放入顺序 (应该知道什么是键值对吧!)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)
Query接口有一个实现类:LinkList
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对
set 一般无序不重复.map kv 结构 list 有序
2,集合与数组:数组也是用来存储操作对象,但,数组长度固定,不可变;数组只能存储基本数据类型,例如int,String等;集合长度可变,且一个集合可存储不同类型的对象(个人觉得这点很厉害);
3,集合分类:根据每种容器(集合)对数据的存储方式(数据结构)不同。collection---(List,Set),
List----(ArrayList(底层是数组数据结构),linkedList(底层是链表数据结构),Vector(底层数据结构是数组))
Set----(HashSet(底层数据结构是哈希表),TreeSet(底层数据结构是二叉树));
4,List:元素有序(可索引,所以有很多和索引有关的方法),元素可重复;Set:元素无序(存入和取出的顺序不一定一致)且不允许重复;其中,HashSet能保证元素唯一性(利用HashCode方法和equals方法);TreeSet可以对集合中元素进行排序(自然顺序)
5,Map相当于和Collection一个级别的;Map<K,V>该集合存储键值对,且要求保持键的唯一性;
Map----(HashMap,Hashtable,TreeMap)。
其中,HashMap:底层是哈希表数据结构,不可以存null键、null值,且线程同步
TreeMap:底层是数据机构是二叉树,可以用于给map中的键排序,且线程不同步。
二、数据库:增删改查方法实现
三、框架:SpringMVC的5大组件:
DispatcherServlet:前端控制器,用于请求到达前端控制器,由它调用其他组件处理用户的请求。
HandlerMapping:处理器映射器,负责根据用户请求找到Handler(处理器),springmvc提供了不同的映射器实现方式。
Handler:处理器,对具体的用户请求进行处理。
HandlerAdapter:处理器适配器,通过HandlerAdapter对处理器进行执行。
View Resolver:视图解析器,负责将处理结果生成view视图。View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。
四、JSP内置对象:
1.输出输入对象:request对象、response对象、out对象
2.通信控制对象:pageContext对象、session对象、application对象
3. Servlet对象:page对象、config对象
4.错误处理对象:exception对象
五、Java基本类型
基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。
六、说出作用域public,private,protected,以及不写时的区别