java遇到的面试题目
2018-04-01 03:03
344 查看
1、session与cookie的区别和联系
当客户端第一次请求时,服务器自动会创建一个session和sessionid与request绑定,用响应对象response来返回sessionid 放到客户端的cookies中存储下来。下次(第二次)发送请求时,请求中携带cookie请求头,通过cookie携带sessionid来检索服务器的会话(每次请求都会将所有的cookies带到服务器端)
区别:
1)、cookie 存放在客户端,而session存放在服务端
2)、Cookie不安全,他人可以分析本地的cookie进行cookie欺骗,session安全
3)、本地浏览器关闭本地session就会消失,但Session会在一定时间内存放在服务器上,会有一个超时时间,一定时间内不访问则会消失.而cookie用户不清除的话会一直存在.
4)、session是通过cookie工作的,服务器辨认是否是同一个用户是根据cookie中的sessionid辨识的
2、ArrayList LinkedList Vector(为何线程安全)
ArrayList(实现动态数组),查询快(随意访问或顺序访问),增删慢。整体清空快,线程不同步(非线程安全)。数组长度是可变的百分之五十延长 LinkedList(实现链表),查询慢,增删快。 Vector(实现动态数组),都慢,被ArrayList替代。长度任意延长。线程安全的原因(同步的类,函数都是synchronized)
3、final finally finalize区别(或者final什么作用)
Final:修饰变量 只能被初始化一次,初始化之后引用对象不能修改,但是可以修改对象的属性值
修饰方法 表示不可以被子类重写,(编译加快,因为是静态绑定的)
修饰类 不能被继承
好处:提升了性能,JVM都会缓存final变量,会对final变量方法类优化,可以在多线程下进行共享
Finally处理异常的时候使用,表示无论是否发生异常或者方法中断放回都要执行,可用来处理数据库连接关闭等操作
Finallize Object的方法,垃圾收集器执行的时候,调用被回收对象的此方法,该方法可以覆盖,提供此类的其他资源回收,比如关闭文件等等,一般处理善后工作
4、Hashtable和HashMap比较
1) 、HashMap支持null键和null值 而HashTable不支持仅仅只是做了throw处理 但并没有多大区别
2) 数据结构基本一致 数组和链表的结合体
3) 实现算法略有差别 初始容量大小不同
a. Hashtable初始11 每次扩充 2n+1 为素数、奇数---->故而结果会更均匀
b. HashMap初始16 每次扩充时翻倍大小(2的幂次方) -->为偶数 故而查找会更效率
4) 、线程安全
HashTable内部有同步机制 是线程安全的
而HashMap不是线程安全的
5) Hashtable已经淘汰了
当客户端第一次请求时,服务器自动会创建一个session和sessionid与request绑定,用响应对象response来返回sessionid 放到客户端的cookies中存储下来。下次(第二次)发送请求时,请求中携带cookie请求头,通过cookie携带sessionid来检索服务器的会话(每次请求都会将所有的cookies带到服务器端)
区别:
1)、cookie 存放在客户端,而session存放在服务端
2)、Cookie不安全,他人可以分析本地的cookie进行cookie欺骗,session安全
3)、本地浏览器关闭本地session就会消失,但Session会在一定时间内存放在服务器上,会有一个超时时间,一定时间内不访问则会消失.而cookie用户不清除的话会一直存在.
4)、session是通过cookie工作的,服务器辨认是否是同一个用户是根据cookie中的sessionid辨识的
2、ArrayList LinkedList Vector(为何线程安全)
ArrayList(实现动态数组),查询快(随意访问或顺序访问),增删慢。整体清空快,线程不同步(非线程安全)。数组长度是可变的百分之五十延长 LinkedList(实现链表),查询慢,增删快。 Vector(实现动态数组),都慢,被ArrayList替代。长度任意延长。线程安全的原因(同步的类,函数都是synchronized)
3、final finally finalize区别(或者final什么作用)
Final:修饰变量 只能被初始化一次,初始化之后引用对象不能修改,但是可以修改对象的属性值
修饰方法 表示不可以被子类重写,(编译加快,因为是静态绑定的)
修饰类 不能被继承
好处:提升了性能,JVM都会缓存final变量,会对final变量方法类优化,可以在多线程下进行共享
Finally处理异常的时候使用,表示无论是否发生异常或者方法中断放回都要执行,可用来处理数据库连接关闭等操作
Finallize Object的方法,垃圾收集器执行的时候,调用被回收对象的此方法,该方法可以覆盖,提供此类的其他资源回收,比如关闭文件等等,一般处理善后工作
4、Hashtable和HashMap比较
1) 、HashMap支持null键和null值 而HashTable不支持仅仅只是做了throw处理 但并没有多大区别
2) 数据结构基本一致 数组和链表的结合体
3) 实现算法略有差别 初始容量大小不同
a. Hashtable初始11 每次扩充 2n+1 为素数、奇数---->故而结果会更均匀
b. HashMap初始16 每次扩充时翻倍大小(2的幂次方) -->为偶数 故而查找会更效率
4) 、线程安全
HashTable内部有同步机制 是线程安全的
而HashMap不是线程安全的
5) Hashtable已经淘汰了
相关文章推荐
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
- 分享Java面试中遇到的一些经典算法题目
- Java面试中遇到的一些经典算法题目
- 分享Java面试中遇到的一些经典算法题目
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
- Java面试中遇到的一些经典算法题目
- Java面试中遇到的一些经典算法题目
- 分享Java面试中遇到的一些经典算法题目 (转)
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
- 那些年遇到过~整理过的java面试题目
- 分享Java面试中遇到的一些经典算法题目
- 最近面试java遇到过的题目
- JAVA面试题目整理
- Java面试常见题目汇总(主要是概念)
- Java 面试题目总结
- 最近看到有关java程序员面试题目的文章
- 面试遇到的代码纠错题目分享
- Java 面试中遇到的坑
- java面试常见题目
- Java面试题目汇总/英文Java面试题(核心知识)