请问如何短时间突击 Java 通过面试？
Java面试题包括java集类和设计模式、spring工作原理、动态代理、事务的控制等方面，这边整理了一些要点，有兴趣可以收藏看一下。 Java在编程语言中，占据着重要的地位，随着技术的更新与发展，越来越多的人进入互联网行业、踏上Java编程之旅。本系列内容来源于阿里云大学Java面试技巧，面试真题+理论解析，主要针对Java编程应用领域就业的人群，找工作前看一看，希望该系列面试真题能助您一臂之力～ — TreeSet：是有序的，依靠的是Comparable排序— LinkedHashSet：继承了HashSet的特点，但是属于有序（增加顺序为保存顺序） 凡是这类问相不相等的，写个程序测试是比较方便的办法。范例：首先观察直接赋值*提到字符串，首先就要想到共享数据词，共享常量词    范例：采用构造法    范例：字符串    总结：从正常道理来讲，如果hashCode()相等，equals不一定相等。反过来equals相等，那么hashCode()一定相等。 -Anntation的时候必须要求有一个容器； -Struts2.x：必须通过拦截器完成；-实现：考虑到可扩展性的配置，所以在配置文件里面设置编码，在程序运行的时候动态取得设置的编码进行操作。但是需要设置两个操作：请求编码、回应编码。 -SpringMVC：它是基于方法的请求处理，所有的参数都提交到方法上，本质上还是一个DispatcherServlet；-Hibernate：就是反射和DOM4J解析处理流程。 这样的配置主要是在Spring里面，重点只有xml和annotation的扫描负责： “@scope=“prototype””来进行控制。 工厂设计模式、代理设计模式、单例设计模式、合成设计模式、门面设计模式（JDBC）、装饰设计模式、模版设计模式。 在Transaction Definition接口中定义了七个事务传播行为： 购物车的实现基于： IN是判断具体的几项数据:HAVING是针对于分组后的数据的筛选，依然要使用统计函数处理；EXISTS：只是需要判断子查询里面是否有数据。 Java本身提供有定时任务：Time Task、Timer；但是此类操作对于定时很难完成，它只能够做频率，但是这个频率不准，所以在定时开发之中会使用quartz组件，而且spring里面也提供有自己的定时实现，这个实现的好处是可以在准确的时间上进行触发。 内存分为：栈（java虚拟机栈）、堆、程序计数器（类似于寄存器）、方法区、本地方法栈。垃圾处理操作指的是堆内存：年轻代、老年代、永生代（JDK1.8移除）。会直接牵扯到JVM的内存调优问题。推荐《深入java虚拟机》 栈溢出：栈帧，所有的方法调用都是通过栈帧的形式控制的。栈如果保存的数据过多，那么就会产生内存溢出，如果堆内存中产生的数据量过大，那么就有可能出现“OutOfMemoryError”错误。 缓存的主要目的是提高查询的效率，常见的两种缓存组件：EhCache（用于数据库）、OSCache（用于页面），除了这样的操作之外，还有缓存的数据库：redis、memcached，其中redis可以将数据保存到磁盘上，并且支持的数据类型要多于memcached。这种redis的数据库每秒并发的访问量可以达到15W次。 还是需要考虑数据量问题，如果数据量大，考虑使用位图索引，如果数据量小就直接分组统计即可。 ... 更多java学习面试资料，可添加阿里妹官微(alimei6）备注【阿里技术】，还有更多阿里社招、校招、最新科技技术资讯、训练营学习名额和独家电子书可以领取。