31.Iterator和ListIterator的區(qū)別是什么?
Iterator可用來遍歷Set和List集合躺酒,但是ListIterator只能用來遍歷List押蚤。
Iterator對(duì)集合只能是前向遍歷,ListIterator既可以前向也可以后向羹应。
ListIterator實(shí)現(xiàn)了Iterator接口揽碘,并包含其他的功能,比如:增加元素园匹,替換元素雳刺,獲取前一個(gè)和后一個(gè)元素的索引,等等裸违。
32.HashMap和Hashtable有什么區(qū)別掖桦?
HashMap和Hashtable都實(shí)現(xiàn)了Map接口,因此很多特性非常相似供汛。但是枪汪,他們有以下不同點(diǎn):
HashMap允許鍵和值是null,而Hashtable不允許鍵或者值是null怔昨。
Hashtable是同步的料饥,而HashMap不是。因此朱监,HashMap更適合于單線程環(huán)境岸啡,而Hashtable適合于多線程環(huán)境。
HashMap提供了可供應(yīng)用迭代的鍵的集合赫编,因此巡蘸,HashMap是快速失敗的。另一方面擂送,Hashtable提供了對(duì)鍵的列舉(Enumeration)悦荒。
一般認(rèn)為Hashtable是一個(gè)遺留的類。
33.throw和throws有什么區(qū)別嘹吨?
throw關(guān)鍵字用來在程序中明確的拋出異常搬味,相反,throws語句用來表明方法不能處理的異常蟀拷。每一個(gè)方法都必須要指定哪些異常不能處理碰纬,所以方法的調(diào)用者才能夠確保處理可能發(fā)生的異常,多個(gè)異常是用逗號(hào)分隔的问芬。
34.解釋下Servlet的生命周期悦析。
Servlet生命周期可以分成四個(gè)階段:加載和實(shí)例化、初始化此衅、服務(wù)强戴、銷毀亭螟。
當(dāng)客戶第一次請(qǐng)求時(shí),首先判斷是否存在Servlet對(duì)象骑歹,若不存在预烙,則由Web容器創(chuàng)建對(duì)象,而后調(diào)用init()方法對(duì)其初始化道媚,此初始化方法在整個(gè)Servlet生命周期中只調(diào)用一次扁掸。
完成Servlet對(duì)象的創(chuàng)建和實(shí)例化之后,Web容器會(huì)調(diào)用Servlet對(duì)象的service()方法來處理請(qǐng)求衰琐。
當(dāng)Web容器關(guān)閉或者Servlet對(duì)象要從容器中被刪除時(shí)也糊,會(huì)自動(dòng)調(diào)用destory()方法。
35.doGet()方法和doPost()方法有什么區(qū)別羡宙?
doGet:GET方法會(huì)把名值對(duì)追加在請(qǐng)求的URL后面狸剃。因?yàn)閁RL對(duì)字符數(shù)目有限制,進(jìn)而限制了用在客戶端請(qǐng)求的參數(shù)值的數(shù)目狗热。并且請(qǐng)求中的參數(shù)值是可見的钞馁,因此,敏感信息不能用這種方式傳遞匿刮。
doPOST:POST方法通過把請(qǐng)求參數(shù)值放在請(qǐng)求體中來克服GET方法的限制僧凰,因此,可以發(fā)送的參數(shù)的數(shù)目是沒有限制的熟丸。最后训措,通過POST請(qǐng)求傳遞的敏感信息對(duì)外部客戶端是不可見的。
36.HTTP響應(yīng)的結(jié)構(gòu)是怎么樣的光羞?
HTTP響應(yīng)由三個(gè)部分組成:
狀態(tài)碼(Status Code):描述了響應(yīng)的狀態(tài)绩鸣。可以用來檢查是否成功的完成了請(qǐng)求纱兑。請(qǐng)求失敗的情況下呀闻,狀態(tài)碼可用來找出失敗的原因。如果Servlet沒有返回狀態(tài)碼潜慎,默認(rèn)會(huì)返回成功的狀態(tài)碼HttpServletResponse.SC_OK捡多。
HTTP頭部(HTTP Header):它們包含了更多關(guān)于響應(yīng)的信息。比如:頭部可以指定認(rèn)為響應(yīng)過期的過期日期铐炫,或者是指定用來給用戶安全的傳輸實(shí)體內(nèi)容的編碼格式垒手。如何在Serlet中檢索HTTP的頭部看這里。
主體(Body):它包含了響應(yīng)的內(nèi)容驳遵。它可以包含HTML代碼淫奔,圖片,等等堤结。主體是由傳輸在HTTP消息中緊跟在頭部后面的數(shù)據(jù)字節(jié)組成的唆迁。
37.什么是cookie?session和cookie有什么區(qū)別竞穷?
cookie是Web服務(wù)器發(fā)送給瀏覽器的一塊信息唐责。瀏覽器會(huì)在本地文件中給每一個(gè)Web服務(wù)器存儲(chǔ)cookie。以后瀏覽器在給特定的Web服務(wù)器發(fā)請(qǐng)求的時(shí)候瘾带,同時(shí)會(huì)發(fā)送所有為該服務(wù)器存儲(chǔ)的cookie鼠哥。下面列出了session和cookie的區(qū)別:
無論客戶端瀏覽器做怎么樣的設(shè)置,session都應(yīng)該能正常工作看政∑涌遥客戶端可以選擇禁用cookie,但是允蚣,session仍然是能夠工作的于颖,因?yàn)榭蛻舳藷o法禁用服務(wù)端的session。
在存儲(chǔ)的數(shù)據(jù)量方面session和cookies也是不一樣的嚷兔。session能夠存儲(chǔ)任意的Java對(duì)象森渐,cookie只能存儲(chǔ)String類型的對(duì)象。
38. null和undefind的區(qū)別
null是表示一個(gè)空的對(duì)象冒晰,轉(zhuǎn)為數(shù)值為0同衣,undefind表示一個(gè)空的原始值,轉(zhuǎn)為數(shù)值為NAN
39. 哪些操作會(huì)造成內(nèi)存泄露
內(nèi)存泄露指任何對(duì)象在不再擁有或不再需要它之后依然存在
setTimeout第一個(gè)參數(shù)是字符串而不是函數(shù)的時(shí)候就會(huì)造成內(nèi)存泄露
閉包
控制臺(tái)日志
循環(huán)(兩個(gè)對(duì)象彼此引用且彼此保留)
40.ArrayList和LinkedList的大致區(qū)別如下:
1.ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)壶运,LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)耐齐。
2.對(duì)于隨機(jī)訪問get和set,ArrayList覺得優(yōu)于LinkedList蒋情,因?yàn)長(zhǎng)inkedList要移動(dòng)指針埠况。?
3.對(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢(shì)恕出,因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)询枚。