一面
- session是什么,怎么实现的?
1)Session的实现方式有两种,一个是通过cookie,另一个是通过url重写
- 通过cookie
Cookie是保存在客户端的一小段信息,服务器在响应请求时可以将一些数据以"键-值"对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的Cookie通过请求信息带到服务器端。
(1)当有Session启动时,服务器生成一个唯一值,称为Session ID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该Session ID。
(3)服务器再将该Session ID写入浏览器的cookie。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。
(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的Session ID。
(6)然后,服务检查该Session ID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。
2.url重写
通过cookie可以很好地实现session,但是如果客户端由于某些原因(比如出于安全考虑)而禁用cookie,在这种情况之下,为了使session能够继续生效,可以采用url重写。
它会将SessionID的信息作为请求地址的一部分传到了服务器端
- http302,301表示什么
3.filter认识,response是在哪产生的
4.考察常量池概念
5.synchronized是什么
6.移动端怎么保持session
7.list删除用什么遍历,foreach是怎么实现的
1)如何删除
for (int i = 0; i < list.size(); i++)
删除了某一个元素后,集合里的元素个数减1,后面的元素往前移了1位,导致了被删除元素后面的元素被遗漏了
for (Integer value : list)
Exception in thread “main” java.util.ConcurrentModificationException
某个线程在 Collection 上进行迭代时,通常不允许另一个线性修改该 Collection。通常在这些情况下,迭代的结果是不确定的。
如果检测到这种行为,一些迭代器实现(包括 JRE 提供的所有通用 collection 实现)可能选择抛出此异常。执行该操作的迭代器称为快速失败 迭代器,因为迭代器很快就完全失败,而不会冒着在将来某个时间任意发生不确定行为的风险。
使用迭代器或者反向遍历
2)如何实现
对于list编译器会调用Iterable接口的 iterator方法来循环遍历数组的元素,iterator方法中是调用Iterator接口的的 next()和hasNext()方法来做循环遍历。
对于数组,就是转化为对数组中的每一个元素的循环引用
8.mvc是什么
二面
-
自我介绍
-
hashmap,hashtable,concurrenthashmap区别与应用场景
-
spring事物中隔离级别
-
一个几百g的字符文件在很小的内存中怎么公平的随机取100个字符
-
http代码、http协议、SQL语句
-
Servlet容器
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!