1.下面有关forward和redirect的描述,正确的是(BCD) ?
A forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求
B 执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址
C 执行redirect时,服务器端告诉浏览器重新去请求地址
D forward是内部重定向,redirect是外部重定向
E redirect默认将产生301 Permanently moved的HTTP响应
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.
2.下面几个关于Java里queue的说法哪些是正确的(AC)?
A LinkedBlockingQueue是一个可选有界队列,不允许null值
B PriorityQueue,LinkedBlockingQueue都是线程不安全的
C PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))
D PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则
1、LinkedBlockingQueue:基于链接节点的可选限定的blocking queue 。 这个队列排列元素FIFO(先进先出)。 队列的头部是队列中最长的元素。 队列的尾部是队列中最短时间的元素。 新元素插入队列的尾部,队列检索操作获取队列头部的元素。 链接队列通常具有比基于阵列的队列更高的吞吐量,但在大多数并发应用程序中的可预测性能较低。
blocking queue说明:不接受null元素;可能是容量有限的;实现被设计为主要用于生产者 - 消费者队列;不支持任何类型的“关闭”或“关闭”操作,表示不再添加项目实现是线程安全的;
2、PriorityQueue:
2.1、基于优先级堆的无限优先级queue 。 优先级队列的元素根据它们的有序natural ordering ,或由一个Comparator在队列构造的时候提供,这取决于所使用的构造方法。 优先队列不允许null元素。 依靠自然排序的优先级队列也不允许插入不可比较的对象(这样做可能导致ClassCastException )。
2.2、该队列的头部是相对于指定顺序的最小元素。 如果多个元素被绑定到最小值,那么头就是这些元素之一 - 关系被任意破坏。 队列检索操作poll , remove , peek和element访问在队列的头部的元件。
2.3、优先级队列是无限制的,但是具有管理用于在队列上存储元素的数组的大小的内部容量 。 它始终至少与队列大小一样大。 当元素被添加到优先级队列中时,其容量会自动增长。 没有规定增长政策的细节。
2.4、该类及其迭代器实现Collection和Iterator接口的所有可选方法。 方法iterator()中提供的迭代器不能保证以任何特定顺序遍历优先级队列的元素。 如果需要有序遍历,请考虑使用Arrays.sort(pq.toArray()) 。
2.5、请注意,此实现不同步。 如果任何线程修改队列,多线程不应同时访问PriorityQueue实例。 而是使用线程安全的PriorityBlockingQueue类。
实现注意事项:此实现提供了O(log(n))的时间入队和出队方法( offer , poll , remove()和add ); remove(Object)和contains(Object)方法的线性时间; 和恒定时间检索方法( peek , element和size )。
3、ConcurrentLinkedQueue:基于链接节点的***并发deque(deque是双端队列) 。 并发插入,删除和访问操作可以跨多个线程安全执行。 A ConcurrentLinkedDeque是许多线程将共享对公共集合的访问的适当选择。像大多数其他并发集合实现一样,此类不允许使用null元素。
3.有关静态初始化块说法正确的是?(ABC)
A 无法直接调用静态初始化块
B 在创建第一个实例前或引用任何静态成员之前,将自动调用静态初始化块来初始化
C 静态初始化块既没有访问修饰符,也没有参数
D 在程序中,用户可以控制合适执行静态初始化块
父类静态代码块,父类静态成员变量(同级,按代码顺序执行)
子类静态代码块,子类静态成员变量(同级,按代码顺序执行)
父类普通代码块,父类普通成员变量(同级,按代码顺序执行)
父类构造方法
子类普通代码块,子类普通成员变量(同级,按代码顺序执行)
子类构造方法
注意点:
静态内容只在类加载时执行一次,之后不再执行。
默认调用父类的无参构造方法,可以在子类构造方法中利用super指定调用父类的哪个构造方法。
4.有关hashMap跟hashTable的区别,说法正确的是?(ABCD)
A HashMap和Hashtable都实现了Map接口
B HashMap是非synchronized,而Hashtable是synchronized
C HashTable使用Enumeration,HashMap使用Iterator
D HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
5.以下关于对象序列化描述正确的是(CD)
A 使用FileOutputStream可以将对象进行传输
B 使用PrintWriter可以将对象进行传输
C 使用transient修饰的变量不会被序列化
D 对象序列化的所属类需要实现Serializable接口