面试题(二)-java

38,说下java中的集合?
Collection下:List系 - 有序、元素允许重复;Set系 - 无序、元素不重复
Map下:HashMap - <Key,Value>,线程不同步;TreeMap线程同步

39,ArrayList跟Vector的区别?
ArrayList :
默认初始容量0 加载因子1 扩容1.5倍
底层数据结构是数组结构
线程不安全,效率高
若有设置的初始容量使用设置的初始容量。
Vector :
默认初始容量10 加载因子1 扩容2倍
底层数据结构是数组结构
线程安全,效率低
若有设置的初始容量使用设置的初始容量。

40,List Set Map的区别?
List接口:List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,允许有相同的元素。
Set接口:Set是一种不包含重复的元素的Collection,存放的元素是无序的。
Map接口:Map用来存两个字段:键和值。Map的key是不能重复的。如果重复后面覆盖前面的。

41,说下HashTable HashMap的区别?
存储: HashMAP允许key和value为null,而Hashtable不允许
线程安全: HashMAP是非线程安全的 Hashtable是线程安全的

42,HashMap(HashSet)用来装学生,人数在37-43人左右,请问如何初始化HashMap数量达到性能最优?
HashMap默认容量是2的幂次方。故初始容量为64性能最优。

43,重写equals是否需要重写hashcode? 重写hashcode是否需要重写equals?
前者不需要,后者需要

44,说下数组跟链表的区别?
从增删改查操作的效率上来谈
增删 链表的效率更高 , 改查 数组的效率更高

45,throw跟throws区别?
throw 是在方法体中主动抛出一个异常
throws 把异常往上抛 谁调用谁处理

46,你知道哪些JDK8新特性?
新的语言特性
集合对象的修改
JVM新特性
HashMap的修改

47,where跟having的区别?
where:
where是一个约束声明,使用where来约束来自数据库的数据;
where是在结果返回之前起作用的;
where中不能使用聚合函数。

having:
having是一个过滤声明;
在查询返回结果集以后,对查询结果进行的过滤操作;
在having中可以使用聚合函数。

48,JS中= =跟= = =有什么区别?
= = 表示相等 (值相等)
= = =表示恒等(类型和值都要相等)

49,请说下xml跟json的区别?
区别:
1、传输同样格式的数据,xml需要使用更多的字符进行描述,
2、 流行的是基于json的数据传输。
3、xml的层次结构比json更清晰。

50,请说下3次握手跟4次挥手?
三次握手:
第一次握手:客户端发送第一个包,其中SYN标志位为1, ACK=0,发送顺序号sequence=X(随机int)。客户端进入SYN发送状态,等待服务器确认。
第二次握手:服务器收到这个包后发送第二个包,其中包SYN、ACK标志位为1,发送顺序号seq=Y(随机int),接收顺序号ACK=X+1,此时服务器进入SYN接收状态。
第三次握手:客户端收到服务器传来的包后,向服务器发送第三个包,SYN=0, ACK=1,接收顺序号ACK = Y+1,发送顺序号seq=X+1。此包发送完毕,客户端和服务器进入ESTABLISHED建立成功状态,完成三次握手。
四次挥手:
第一次挥手:主动关闭方发送第一个包,其中FIN标志位为1,发送顺序号seq为X。
第二次挥手:被动关闭方收到FIN包后发送第二个包,其中发送顺序号seq为Z,接收顺序号ack为X+1。
第三次挥手:被动关闭方再发送第三个包,其中FIN标志位为1,发送顺序号seq为Y,接收顺序号ack为X。
第四次挥手:主动关闭方发送第四个包,其中发送顺序号为X,接收顺序号为Y。至此,完成四次挥手。

51,断开连接的时候客户端为什么需要的等待2MSL时间?

保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。

52,servlet是单线程还是多线程?是单例的吗?
servlet是单实例多线程

53,请说下servlet的生命周期?
Servlet的生命周期包含了下面4个阶段:
1.加载和实例化
2.初始化
3.请求处理
4.服务终止

54,get请求与post的请求的区别是什么?
get:
1,参数拼接在url,不安全
2,只能是字符串类型
3,大小有限制2kb,速度快
post:
1,参数封装到请求体,安全
2,还可以是非字符串类型比如文件
3,理论上大小没限制,速度慢

55,请求转发跟请求重定向的区别是什么?
转发:一次请求,返回200,地址栏没变化
重定向:二次请求,第一返回302,
第二次请求会使用第一次请求响应中的Location头信息地址进行访问。
第二次请求返回200或者304,地址栏会改变。

56,JSP是服务器端页面还是客户端页面?
客户端页面

57,jsp的本质是一个servlet
答:对

58,静态包含(指令)跟动态包含(动作)有什么区别
原理不同:
​静态包含:先合并再翻译
​动态包含:先翻译在包含

最终编译成java文件的数目不同。
静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,然后作为一个整体编译。最终编译为一个java文件。

静态包含在两个文件中不能有相同的变量,动态包含允许

语法不同:
静态包含语法: <%@inclue file=“被包含的页面”%>
动态包含语法: <jsp:include page=“被包含的页面”>

参数传递不同 :
静态包含不能向被包含页面传递参数
动态包含可以使用jsp:param标签向被包含页面传递参数

59,JSP的9大内置对象?
jsp有九大隐式对象(内置对象)
1.request:HttpServletRequest对象,代表请求
2.response:HttpServletResponse对象,代表响应
3.out:JspWriter对象,代表输出
4.session:HttpSession对象,代表每个会话
5.application:ServletContext应用对象,代表整个应用程序
6.config:ServletConfig配置对象,代表配置文件中的信息
7.pageContext:PageContext对象页面上下文对象,包含页面信息
8.page:当前页面对象(this)(基本不使用)
9.exception:Throwable异常对象,包含jsp异常信息

60,会话跟踪的几种技术?
会话跟踪常用的4种方法:

URL重写:URL重写技术就是在URL结尾添加一个附加数据以标识该会话,把会话ID通过URL的信息传递过去,以便在服务端进行识别不同的用户。

隐藏表单域:将会话ID添加到HTML表单元素中提交到服务器,此表单不再客户端显示。

cookie:Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。

session:在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户,Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效
session默认的会话时长为30分钟。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值