1.Python 中方法的參數(shù)是值傳遞還是引用傳遞?
答:如果參數(shù)是常量則為值傳遞,如果參數(shù)是變量則為引用傳遞
2.Python 中元組和列表的區(qū)別
答:1.元祖不可修改。2.元祖不可刪除
3.Linux 中查找某個(gè)文件并刪除它
答:find / -name “*filename” |xargs rm -rf
4.Linux 查詢(xún) CPU、內(nèi)存的指令
答:top
cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l ;查看物理CPU個(gè)數(shù)
free -h,
vmstat
5.Java 中的容器有哪些?它們的區(qū)別和特性?
答:
一.Collection類(lèi)
1.一個(gè)獨(dú)立元素的序列,這些元素都服從一條或多條規(guī)則.List必須按照插入的順序保存元素,而Set不能有重復(fù)元素.Queue按照隊(duì)列規(guī)則來(lái)確定對(duì)象產(chǎn)生的順序(通常與它們被插入的順序相同).
2.在實(shí)際編程中,Collection類(lèi)一般不會(huì)被使用,通常使用其三個(gè)子類(lèi).
二.Map類(lèi)
1.一組成對(duì)的"鍵值對(duì)"對(duì)象,允許你使用鍵來(lái)查找值.又被稱(chēng)為"關(guān)聯(lián)數(shù)組"或者"字典".
三.List類(lèi):
1.子類(lèi)包括ArrayList和LinkedList.
2.基本的ArrayList,它長(zhǎng)于隨機(jī)訪問(wèn)元素,但在List的中間插入和移除元素時(shí)比較慢.
3.LinkedList:它通過(guò)代價(jià)較低的在List中間進(jìn)行的插入和刪除操作,但對(duì)于隨機(jī)訪問(wèn)元素操作比較慢.
6.Java 多線程的創(chuàng)建
答:Thread和Runnable
7.性能測(cè)試關(guān)注哪些指標(biāo)?
答:cpu 的iowait,內(nèi)存的實(shí)際內(nèi)存與虛擬內(nèi)存。硬盤(pán)的讀寫(xiě),數(shù)據(jù)庫(kù)的讀寫(xiě)速度
8.算法:快排的實(shí)現(xiàn)
答:(java,python自行查找)
9.算法:數(shù)組中查找出現(xiàn)次數(shù)過(guò)半的數(shù)
答:給出一種解法:
class Solution:
def MoreThanHlafNum_Solution(self,numbers):
dict={}
for i in numbers:
if not dict.has_key(i):
dict[i]=1
else:
dict[i]+=1
if dict[i]>len(numbers)/2.0:
return i
return 0
10.算法:查找鏈表的倒數(shù)第三個(gè)數(shù)
答:
public class LastKNode {
public static void main(String[] args) {
Node head=ListNode.getSingleList();
ListNode.printList(head);
int k=3;
head=new LastKNode().getLastKNode(head,k);
System.out.println(head.data);
}
public Node getLastKNode(Node head, int k){
Node node=head;
while(node. next!= null&&k>0){
node=node. next;
k--;
}
while(node!= null){
node=node. next;
head=head. next;
}
return head;
}
}
11.登錄頁(yè)面怎么測(cè)?
答:用例設(shè)計(jì)參考:
功能測(cè)試:
1>輸入正確的用戶(hù)名密碼,點(diǎn)擊提交按鈕,驗(yàn)證能否正確登錄
2> 輸入錯(cuò)誤的用戶(hù)名或者密碼,點(diǎn)擊提交按鈕,驗(yàn)證登錄失敗,提示相應(yīng)的錯(cuò)誤信息
3 >登錄成功后能否跳轉(zhuǎn)到正確的頁(yè)面
4>賬號(hào)名或者密碼長(zhǎng)度過(guò)長(zhǎng)或者過(guò)短,應(yīng)該怎么處理(安全性,密碼太短是否有提示)
5>賬號(hào)和密碼有特殊字符(空格),是否做了過(guò)濾
6>密碼是否加密顯示
7>輸入密碼 ,大寫(xiě)鍵盤(pán)開(kāi)啟的時(shí)候要有提示信息
8>什么都不輸入,直接點(diǎn)擊提交(非空檢查)
9>登錄失敗后,不能記住密碼的功能
10>登錄頁(yè)面中忘記密碼等等鏈接跳轉(zhuǎn)是否正確
11>牽扯到驗(yàn)證碼,還要考慮文字是否扭曲過(guò)度導(dǎo)致辨認(rèn)難度大
UI測(cè)試:
1>布局是否合理,兩個(gè)textbox和一個(gè)按鈕是否對(duì)齊
2>textbox的長(zhǎng)度和高度是否符合要求
3>界面設(shè)計(jì)風(fēng)格和UI設(shè)計(jì)風(fēng)格是否一致
4>界面中的文字簡(jiǎn)潔易懂,沒(méi)有錯(cuò)別字
性能測(cè)試:
1>打開(kāi)登錄界面,需要幾秒
2>輸入正確的用戶(hù)名和密碼,登錄成功跳轉(zhuǎn)到新頁(yè)面,需要幾秒
安全性測(cè)試:
1>登錄成功后的cookie是否有HttpOnly(降低腳本風(fēng)險(xiǎn))
2>賬號(hào)和密碼是否通過(guò)加密的方式,發(fā)送給web服務(wù)器
3>賬號(hào)和密碼的驗(yàn)證,應(yīng)該是用服務(wù)器驗(yàn)證,而不單單是在客戶(hù)端用javaScript驗(yàn)證
4>賬號(hào)和密碼的輸入框,應(yīng)該屏蔽SQL注入攻擊
5>賬號(hào)和密碼的輸入框,應(yīng)該禁止輸入腳本(防止XSS攻擊)
6>錯(cuò)誤登錄的次數(shù)限制(防止暴力破解)
7>是否支持多用戶(hù)在同一臺(tái)機(jī)器上登錄
8>一用戶(hù)在多臺(tái)機(jī)器上登錄
可用性測(cè)試:
1>輸入框是否可以用tab鍵切換
2>輸入賬號(hào),密碼后按回車(chē),是否可以登錄
3>是否可用全用鍵盤(pán)操作,是否有快捷鍵
兼容性測(cè)試:
1>主流的瀏覽器下能否顯示正常已經(jīng)功能正常
2>不同的平臺(tái)是否能正常工作,eg:windows,mac
3>移動(dòng)設(shè)備上是否正常工作,比如iphone,android
4>不同的分辨率
12.搜索框怎么測(cè)試?
答:測(cè)試搜索框,需從以下幾個(gè)方面進(jìn)行考慮:
一、功能實(shí)現(xiàn)
輸入字符,有匹配的就展示出來(lái),沒(méi)有匹配的,會(huì)進(jìn)行處理
1.對(duì)輸入進(jìn)行測(cè)試
正常輸入存在的內(nèi)容,查看搜索結(jié)果展示的數(shù)據(jù)是否完整
正常輸入不存在的內(nèi)容,查看搜索返回的結(jié)果
輸入為空
超長(zhǎng)輸入
特殊符號(hào),包含空格,特別要注意英文單引號(hào)
各種字符,如數(shù)字、字母、中文
反復(fù)輸入相同的數(shù)據(jù),如5次以上,看處理是否正確
輸入正則表達(dá)式
驗(yàn)證搜索框的功能是否與需求一致,如模糊搜索或完全搜索
是否有忽略空格的功能,忽略前置空格和忽略后置空格,但是不能忽略中間空格
2.快捷鍵:
在輸入結(jié)束后,按回車(chē)鍵,看系統(tǒng)如何處理
使用Tab鍵 ,ctrl+c /v/xz
3.光標(biāo)和鼠標(biāo):
在光標(biāo)停留的地方進(jìn)行輸入,看光標(biāo)和輸入的字符位置是否正確,會(huì)否跳轉(zhuǎn)到別的地方
在輸入框中,左鍵單擊鼠標(biāo),雙擊鼠標(biāo),三擊鼠標(biāo),如百度輸入框,單擊是插入,雙擊選中兩個(gè)字符,三擊選中輸入的所有字符
輸入框中,鼠標(biāo)右鍵,會(huì)否有菜單欄,菜單欄下是否有常用的項(xiàng),并且各項(xiàng)可用
4.其它功能
如百度的即搜即得,隨著用戶(hù)的輸入,下面會(huì)列出好多實(shí)時(shí)變化的選項(xiàng),類(lèi)似于智能搜索
二、用戶(hù)友好與易用性
三、不同平臺(tái)的兼容性
瀏覽器,操作系統(tǒng),分辨率
13.TCP 和 UDP 的區(qū)別?如何保證 TCP 的可靠性?
答:區(qū)別在于:
是否連接:TCP是面向連接的,UDP是無(wú)連接的,TCP的發(fā)送發(fā)要確認(rèn)接收方是否收到數(shù)據(jù)段(3次握手協(xié)議)
傳輸可靠性:TCP是可靠的,UDP是不可靠的;TCP在數(shù)據(jù)包接收無(wú)序、丟失或在交付期間被破壞時(shí),負(fù)責(zé)數(shù)據(jù)恢復(fù),它通過(guò)為每個(gè)數(shù)據(jù)報(bào)提供一個(gè)序號(hào)來(lái)完成此恢復(fù),為確保正確收到數(shù)據(jù),TCP要求目標(biāo)計(jì)算機(jī)成功收到數(shù)據(jù)時(shí)發(fā)回一個(gè)確認(rèn)(即ACK),如果在某個(gè)時(shí)限內(nèi)未收到相應(yīng)的ACK,將重新傳送數(shù)據(jù)包。如果網(wǎng)絡(luò)擁塞,這種重新傳送將導(dǎo)致發(fā)送的數(shù)據(jù)包重復(fù),但是接收計(jì)算機(jī)可使用數(shù)據(jù)包的序號(hào)來(lái)確定它是否為重復(fù)數(shù)據(jù)包,并在必要時(shí)丟棄它。UDP協(xié)議不能保證數(shù)據(jù)準(zhǔn)確無(wú)誤的到達(dá)目的地,并不是說(shuō)UDP就完全無(wú)法知道是否發(fā)生了錯(cuò)誤,一個(gè)16位的UDP包包含了一個(gè)字節(jié)長(zhǎng)的頭部和數(shù)據(jù)的長(zhǎng)度,校驗(yàn)碼域使其可以進(jìn)行整體校驗(yàn),如:多媒體數(shù)據(jù)流,不產(chǎn)生任何額外的數(shù)據(jù),即使知道有破壞的包也不進(jìn)行重發(fā)。
TCP只支持點(diǎn)對(duì)點(diǎn)通信,UDP支持一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多的通信模式
TCP是面向字節(jié)流的,UDP是面向報(bào)文的(流模式和數(shù)據(jù)報(bào)模式)
TCP擁有擁塞控制機(jī)制,UDP沒(méi)有擁塞控制,適合媒體通信
TCP要求系統(tǒng)資源較多,UDP較少
可靠性:
校驗(yàn)和:檢驗(yàn)數(shù)據(jù)是否損壞
定時(shí)器:分組丟失則重傳
序號(hào):用于檢測(cè)丟失的分組和冗余的分組
確認(rèn):接收方告知發(fā)送方正確接收分組已經(jīng)期望的下一個(gè)分組;否定確認(rèn):接收方通知發(fā)送方未被正確接收的分組
窗口和流水線:用于增加信道的吞吐量
14.算法:二叉樹(shù)的深度計(jì)算
答:代碼過(guò)長(zhǎng),請(qǐng)自行百度
15.算法:一億個(gè)無(wú)序數(shù)找出 Top 100
答:參考代碼如下
package cn.usst.tophundred.quicksort;
import java.util.Random;
/**
獲取一億數(shù)據(jù)獲取前100個(gè)最大值
1. 假設(shè)數(shù)組為 array[N] (N = 1 億),首先利用quicksort的原理把a(bǔ)rray分成兩個(gè)部分,左邊部分比 array[N - 1] (array中的最后一個(gè)值,即pivot) 大, 右邊部分比pivot 小。然后,可以得到 array[array.length - 1] (即 pivot) 在整個(gè)數(shù)組中的位置,假設(shè)是 k.
2. 如果 k 比 99 大,我們?cè)跀?shù)組[0, k - 1]里找前 100 最大值。 (繼續(xù)遞歸)
3. 如果 k 比 99 小, 我們?cè)跀?shù)組[k + 1, ..., N ]里找前 100 - (k + 1) 最大值。(繼續(xù)遞歸)
4. 如果 k == 99, 那么數(shù)組的前 100 個(gè)值一定是最大的。(退出)
*/
public class TopHundredQuickSort {
public static void main(String[] args) {
// the size of the array
int number = 100000000;
// the top k values
int k = 100;
// the range of the values in the array
int range = 1000000001;
// input for minHeap based method
int[] array = new int[number];
Random random = new Random();
for(int i=0; i
= pivot){
swap(array, switchPointer, i);
switchPointer++;
}
}
// 交換后 array左邊的值比pivot大 右邊的值比pivot小
swap(array, end, switchPointer);
if(switchPointer < k-1){
tophundred(array, switchPointer+1, end, k);
}else if(switchPointer == k-1){
return;
}else{
tophundred(array, 0, switchPointer-1, k);
}
}
private void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
16.索引類(lèi)型和優(yōu)缺點(diǎn)
答:索引分類(lèi)如下:
0、查看索引 show index from 數(shù)據(jù)庫(kù)表名
1.普通索引
特點(diǎn):是最基本的索引,它沒(méi)有任何限制。
2.唯一索引
特點(diǎn):與前面的普通索引類(lèi)似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。
3.主鍵索引
特點(diǎn);是一種特殊的唯一索引,一個(gè)表只能有一個(gè)主鍵,不允許有空值。一般是在建表的時(shí)候同時(shí)創(chuàng)建主鍵索引
4.組合索引
特點(diǎn):指多個(gè)字段上創(chuàng)建的索引,只有在查詢(xún)條件中使用了創(chuàng)建索引時(shí)的第一個(gè)字段,索引才會(huì)被使用。使用組合索引時(shí)遵循**最左前綴**集合
如:`ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )`
這個(gè)表結(jié)構(gòu),每次使用索引的時(shí)候必須帶上最左側(cè)的索引值'column1',不然將會(huì)索引無(wú)效。
5.全文索引
從3.23.23版開(kāi)始支持全文索引和全文檢索,F(xiàn)ULLTEXT,可以在char、varchar或text類(lèi)型的列上創(chuàng)建。
索引的優(yōu)缺點(diǎn):
1.雖然索引大大提高了查詢(xún)速度,同時(shí)卻會(huì)降低更新表的速度,如對(duì)表進(jìn)行insert、update和delete。因?yàn)楦卤頃r(shí),不僅要保存數(shù)據(jù),還要保存一下索引文件。
2.建立索引會(huì)占用磁盤(pán)空間的索引文件。一般情況這個(gè)問(wèn)題不太嚴(yán)重,但如果你在一個(gè)大表上創(chuàng)建了多種組合索引,索引文件的會(huì)增長(zhǎng)很快。
索引只是提高效率的一個(gè)因素,如果有大數(shù)據(jù)量的表,就需要花時(shí)間研究建立最優(yōu)秀的索引,或優(yōu)化查詢(xún)語(yǔ)句。
17.Redis 中有哪些數(shù)據(jù)結(jié)構(gòu)
答:
redis提供五種數(shù)據(jù)類(lèi)型:string,hash,list,set及zset(sorted set)。
string(字符串)
string是最簡(jiǎn)單的類(lèi)型,你可以理解成與Memcached一模一樣的類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value,其上支持的操作與Memcached的操作類(lèi)似。但它的功能更豐富。
list(雙向鏈表)
list是一個(gè)鏈表結(jié)構(gòu),主要功能是push、pop、獲取一個(gè)范圍的所有值等等。操作中key理解為鏈表的名字。
Redis 哈希(Hash)
Redis hash 是一個(gè)string類(lèi)型的field和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象。
集合(Set)
set是集合,和我們數(shù)學(xué)中的集合概念相似,對(duì)集合的操作有添加刪除元素,有對(duì)多個(gè)集合求交并差等操作。操作中key理解為集合的名字。
zset(排序set)
zset是set的一個(gè)升級(jí)版本,他在set的基礎(chǔ)上增加了一個(gè)順序?qū)傩裕@一屬性在添加修改元素的時(shí)候可以指定,每次指定后,zset會(huì)自動(dòng)重新按新的值調(diào)整順序。可以理解了有兩列的mysql表,一列存value,一列存順序。操作中key理解為zset的名字。
18.數(shù)據(jù)庫(kù)的加鎖,比如樂(lè)觀鎖、悲觀鎖?
答:悲觀鎖–>
MySql的悲觀鎖就是打開(kāi)事務(wù),當(dāng)啟動(dòng)事務(wù)時(shí),如果事務(wù)中的sql語(yǔ)句涉及到索引并用索引進(jìn)行了條件判斷,那么會(huì)使用行級(jí)鎖鎖定所要修改的行,否則使用表鎖鎖住整張表
樂(lè)觀鎖–>
我們?cè)谑褂脴?lè)觀鎖時(shí)會(huì)假設(shè)在極大多數(shù)情況下不會(huì)形成沖突,只有在數(shù)據(jù)提交的時(shí)候,才會(huì)對(duì)數(shù)據(jù)是否產(chǎn)生沖突進(jìn)行檢驗(yàn)。如果數(shù)據(jù)產(chǎn)生沖突了,則返回錯(cuò)誤信息,進(jìn)行相應(yīng)的處理。
19.Java 的接口與抽象類(lèi)的區(qū)別(問(wèn)的比較多,逢面試基本必問(wèn))
答:
抽象類(lèi):抽象類(lèi)是無(wú)法實(shí)例化的特殊類(lèi)。所以問(wèn)題是為什么我們需要一個(gè)不能被實(shí)例化的類(lèi),抽象類(lèi)只能是子類(lèi)(繼承自)。換句話(huà)說(shuō),它只允許其他類(lèi)繼承它,但不能實(shí)例化。優(yōu)點(diǎn)是它為所有子類(lèi)執(zhí)行特定的層次結(jié)構(gòu)。簡(jiǎn)而言之,它是一種契約,它強(qiáng)制所有子類(lèi)執(zhí)行相同的層次或標(biāo)準(zhǔn)。
接口:接口不是類(lèi),由Interface關(guān)鍵詞定義,接口只有方法簽名,沒(méi)有方法實(shí)現(xiàn)(8之后支持默認(rèn)方法)。與抽象類(lèi)類(lèi)似,它也是一種契約,用于定義所有子類(lèi)的層次結(jié)構(gòu),或者它定義了特定的方法集和它們的參數(shù)。它們之間的主要區(qū)別是,一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類(lèi)。
20.面向?qū)ο蟮奶卣饔心男┓矫妫?
答:
1.抽象:
抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。
2.繼承:
繼承是一種聯(lián)結(jié)類(lèi)的層次模型,并且允許和鼓勵(lì)類(lèi)的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類(lèi)可以從現(xiàn)有的類(lèi)中派生,這個(gè)過(guò)程稱(chēng)為類(lèi)繼承。新類(lèi) 繼承了原始類(lèi)的特性,新類(lèi)稱(chēng)為原始類(lèi)的派生類(lèi)(子類(lèi)),而原始類(lèi)稱(chēng)為新類(lèi)的基類(lèi)(父類(lèi))。派生類(lèi)可以從它的基類(lèi)那里繼承方法和實(shí)例變量,并且類(lèi)可以修改或 增加新的方法使之更適合特殊的需要。
3.封裝:
封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。
4. 多態(tài)性:
多態(tài)性是指允許不同類(lèi)的對(duì)象對(duì)同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問(wèn)題。
21.int 和 Integer 有什么區(qū)別?
答:Java 提供兩種不同的類(lèi)型:引用類(lèi)型和原始類(lèi)型(或內(nèi)置類(lèi)型)。Int是java的原始數(shù)據(jù)類(lèi)型,Integer是java為int提供的封裝類(lèi)。Java為每個(gè)原始類(lèi)型提供了封裝類(lèi)。
原始類(lèi)型封裝類(lèi):
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
22.String 和StringBuffer的區(qū)別?
答:JAVA平臺(tái)提供了兩個(gè)類(lèi):String和StringBuffer,它們可以?xún)?chǔ)存和操作字符串,即包含多個(gè)字符的字符數(shù)據(jù)。這個(gè)String類(lèi)提供了數(shù) 值不可改變的字符串。而這個(gè)StringBuffer類(lèi)提供的字符串進(jìn)行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用StringBuffer。典型 地,你可以使用StringBuffers來(lái)動(dòng)態(tài)構(gòu)造字符數(shù)據(jù)。
23.HashMap和Hashtable的區(qū)別
答:HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。
HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須為之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。
24.Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型?
答:方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn), 重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被“屏蔽”了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方 法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。
25.啟動(dòng)一個(gè)線程是用run()還是start()?
答:?jiǎn)?dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。
26.char型變量中能不能存貯一個(gè)中文漢字?為什么?
答:能夠定義成為一個(gè)中文的,因?yàn)閖ava中以u(píng)nicode編碼,一個(gè)char占16個(gè)位,所以放一個(gè)中文是沒(méi)問(wèn)題的。
27.接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)?
答:接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。
28.List, Set, Map是否繼承自Collection接口?
答:List,Set是,Map不是。
29.數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法?
答:數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。String有有l(wèi)ength()這個(gè)方法
30.Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?
答:Set里的元素是不能重復(fù)的,那么用iterator()方法來(lái)區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。
equals()和 ==方法決定引用值是否指向同一對(duì)象equals()在類(lèi)中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類(lèi)型相配的話(huà),返回真值
31.是否可以繼承String類(lèi)?
答:String類(lèi)是final類(lèi)故不可以繼承。
32.try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?
答:會(huì)執(zhí)行,在return前執(zhí)行
33.當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
答:是值傳遞。Java 編程語(yǔ)言只有值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),
參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。
35.線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系
答:線程指在程序執(zhí)行過(guò)程中,能夠執(zhí)行程序代碼的一個(gè)執(zhí)行單位,每個(gè)程序至少都有一個(gè)線程,也就是程序本身。Java中的線程有四種狀態(tài)分別是:運(yùn)行、就緒、掛起、結(jié)束。
36.List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?
答:List 以特定次序來(lái)持有元素,可有重復(fù)元素。Set 無(wú)法擁有重復(fù)元素,內(nèi)部排序。Map 保存key-value值,value可多值
37.HTTP有沒(méi)有狀態(tài),怎么解決HTTP無(wú)狀態(tài)
答:
1、通過(guò)Cookies保存狀態(tài)信息Server通過(guò)Cookies,服務(wù)器就可以清楚的知道請(qǐng)求2和請(qǐng)求1來(lái)自同一個(gè)客戶(hù)端。
2、通過(guò)Session保存狀態(tài)信息
當(dāng)程序需要為某個(gè)客戶(hù)端的請(qǐng)求創(chuàng)建一個(gè)session的時(shí)候,服務(wù)器首先檢查這個(gè)客戶(hù)端的請(qǐng)求里是否已包含了一個(gè)session標(biāo)識(shí) - 稱(chēng)為 session id;
如果已包含一個(gè)session id則說(shuō)明以前已經(jīng)為此客戶(hù)端創(chuàng)建過(guò)session,服務(wù)器就按照session id把這個(gè) session檢索出來(lái)使用(如果檢索不到,可能會(huì)新建一個(gè));
如果客戶(hù)端請(qǐng)求不包含session id,則為此客戶(hù)端創(chuàng)建一個(gè)session并且生成一個(gè)與此session相關(guān)聯(lián)的session id,session id的值應(yīng)該是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個(gè)session id將被在本次響應(yīng)中通過(guò)Cookie返回給客戶(hù)端保存。
38.基于WEB B/S系統(tǒng)測(cè)試時(shí)應(yīng)考慮的因素有哪些?
答:
一、功能測(cè)試
1、鏈接測(cè)試
2、表單測(cè)試
3、Cookies測(cè)試
4、設(shè)計(jì)語(yǔ)言測(cè)試
5、數(shù)據(jù)庫(kù)測(cè)試
二、性能測(cè)試
1、連接速度測(cè)試
2、負(fù)載測(cè)試
3、壓力測(cè)試
三、可用性測(cè)試
1、導(dǎo)航測(cè)試
2、圖形測(cè)試
3、內(nèi)容測(cè)試
4、整體界面測(cè)試
四、客戶(hù)端兼容性測(cè)試
1、平臺(tái)測(cè)試
2、瀏覽器測(cè)試
五、安全性測(cè)試
40.什么是兼容性測(cè)試?兼容性測(cè)試側(cè)重哪些方面?
答:兼容性是指協(xié)調(diào)性,
1.硬件上就是說(shuō)你的電腦的各個(gè)部件,CPU,顯卡等等組裝到一起以后的情況,會(huì)不會(huì)相互有影 響,不能很好的運(yùn)作.
2.軟件上就是說(shuō)你的電腦的軟件之間能否很好的運(yùn)做,會(huì)不會(huì)有影響啊?還有軟件和硬件之間能否發(fā)揮很好的效率工作,會(huì)不會(huì)影響導(dǎo)致系統(tǒng)的崩潰.
1、平臺(tái)兼容性:市場(chǎng)上有很多不同的操作系統(tǒng)類(lèi)型,最常見(jiàn)的有Windows、Unix、Macintosh、Linux等。Web應(yīng)用系統(tǒng)的最終用戶(hù)究竟使用哪一種操作系統(tǒng),取決于用戶(hù)系統(tǒng)的配置。這樣,就可能會(huì)發(fā)生兼容性問(wèn)題,同一個(gè)應(yīng)用可能在某些操作系統(tǒng)下能正常運(yùn)行,但在另外的操作系統(tǒng)下可能會(huì)運(yùn)行失敗。因此,在Web系統(tǒng)發(fā)布之前,需要在各種操作系統(tǒng)下對(duì)Web系統(tǒng)進(jìn)行兼容性測(cè)試。
2、瀏覽器兼容性:瀏覽器是Web客戶(hù)端最核心的構(gòu)件,來(lái)自不同廠商的瀏覽器對(duì)Java,、JavaScript、 ActiveX、 plug-ins或不同的HTML規(guī)格有不同的支持。例如,ActiveX是Microsoft的產(chǎn)品,是為Internet Explorer而設(shè)計(jì)的,JavaScript是Netscape的產(chǎn)品,Java是Sun的產(chǎn)品等等。另外,框架和層次結(jié)構(gòu)風(fēng)格在不同的瀏覽器中也有不同的顯示,甚至根本不顯示。不同的瀏覽器對(duì)安全性和Java的設(shè)置也不一樣。測(cè)試瀏覽器兼容性的一個(gè)方法是創(chuàng)建一個(gè)兼容性矩陣。在這個(gè)矩陣中,測(cè)試不同廠商、不同版本的瀏覽器對(duì)某些構(gòu)件和設(shè)置的適應(yīng)性。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
