1乃正、請(qǐng)說(shuō)出八種基本數(shù)據(jù)類型和范圍住册,默認(rèn)值
類型 范圍 存儲(chǔ)空間大小 默認(rèn)值
byte -2^7 ~ +2^7 1字節(jié)(8bit ) (byte)0
char(16bit) '/u0000' ~ '/uffff' 2字節(jié)(16bit) '/u0000'(null)
short(16bit) -2^15 ~ +2^15 -1 2字節(jié) (short)0
int(32bit) -2^15 ~ +2^15 -1 4字節(jié) 0
long(64bit) -2^15 ~ +2^15 -1 8字節(jié) 0l
float(32bit) IEEE 4字節(jié) 0.0f
double IEEE 8字節(jié) 0.0d
boolean 沒有明確指定 false
2、request.getParameter()和request.getAttribute()的區(qū)別瓮具?
兩者都是HTTPServletReuest類的方法荧飞,用于傳遞數(shù)據(jù)的。
getParameter():當(dāng)web客戶端向web服務(wù)端發(fā)送請(qǐng)求并傳遞參數(shù)時(shí)名党,服務(wù)端可用該方法獲取參數(shù)叹阔,返回String類型數(shù)據(jù)。
getAttribute():它與setAttribute()方法成對(duì)传睹,能獲得request域內(nèi)的共享數(shù)據(jù)耳幢,既在請(qǐng)求處理階段通過setAttribute()存數(shù)據(jù),可以通過getAttribute()取數(shù)據(jù)欧啤。
3睛藻、我們?cè)趙eb應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso-8859-1等邢隧,如何輸出一個(gè)UTF-8的字符串修档?
public String translate(String str){
String trsl = "";
try {
trsl = new String(str.getBytes("ISO-8859-1"), "UTF-8");
trsl.trim();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return trsl;
}
4、
class Cal{
void show(String s){
String ns="";
for(int i=0;i<s.length();i++)
ns=s.charAt(i)+ns;
System.out.println(ns);
}
void show(int s){
int i,ns=0;
while(s!=0){
ns=ns+s%10;
s=s/10;
}
System.out.println(ns);
}
}
public class T{
public static void main(String[] args){
Cal c1 = new Cal();
c1.show(args[0]);
}
}
寫出命令行輸入12345后的程序運(yùn)行結(jié)果府框。
15
5吱窝、什么是事務(wù)和它的特性讥邻?
事務(wù)就是用戶定義的一系列操作,這些操作要么都執(zhí)行院峡,要么都不執(zhí)行兴使,它是一個(gè)不可分割的單位。
事務(wù)特性(ACID):
6照激、sleep 和 wait 的區(qū)別发魄。
7、請(qǐng)你說(shuō)下死鎖的產(chǎn)生俩垃,該怎么防止死鎖的產(chǎn)生励幼?
8、使用redis優(yōu)點(diǎn)和缺點(diǎn)是什么口柳?
- 為什么我們調(diào)用start()方法時(shí)會(huì)執(zhí)行run()方法苹粟,直接調(diào)用run()方法跟調(diào)用start()區(qū)別?
10跃闹、什么是鎖的粒度嵌削,如何通過降低鎖的粒度來(lái)提升并發(fā)性能?
對(duì)于數(shù)據(jù)庫(kù)和線程:
1.數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)引擎具有多粒度鎖定望艺,允許一個(gè)事務(wù)鎖定不同類型的資源苛秕。 為了盡量減少鎖定的開銷,數(shù)據(jù)庫(kù)引擎自動(dòng)將資源鎖定在適合任務(wù)的級(jí)別找默。 鎖定在較小的粒度(例如行)可以提高并發(fā)度艇劫,但開銷較高,因?yàn)槿绻i定了許多行惩激,則需要持有更多的鎖港准。 鎖定在較大的粒度(例如表)會(huì)降低了并發(fā)度,因?yàn)殒i定整個(gè)表限制了其他事務(wù)對(duì)表中任意部分的訪問咧欣。 但其開銷較低浅缸,因?yàn)樾枰S護(hù)的鎖較少。
數(shù)據(jù)庫(kù)引擎通常必須獲取多粒度級(jí)別上的鎖才能完整地保護(hù)資源魄咕。 這組多粒度級(jí)別上的鎖稱為鎖層次結(jié)構(gòu)衩椒。 例如,為了完整地保護(hù)對(duì)索引的讀取哮兰,數(shù)據(jù)庫(kù)引擎實(shí)例可能必須獲取行上的共享鎖以及頁(yè)和表上的意向共享鎖毛萌。
MySQL有三種鎖的級(jí)別:頁(yè)級(jí)、表級(jí)喝滞、行級(jí)阁将。
MyISAM和MEMORY存儲(chǔ)引擎采用的是表級(jí)鎖(table-level locking);BDB存儲(chǔ)引擎采用的是頁(yè)面鎖(page-level
locking)右遭,但也支持表級(jí)鎖做盅;InnoDB存儲(chǔ)引擎既支持行級(jí)鎖(row-level locking)缤削,也支持表級(jí)鎖,但默認(rèn)情況下是采用行級(jí)鎖吹榴。
MySQL這3種鎖的特性可大致歸納如下:
表級(jí)鎖:開銷小亭敢,加鎖快;不會(huì)出現(xiàn)死鎖图筹;鎖定粒度大帅刀,發(fā)生鎖沖突的概率最高,并發(fā)度最低。
行級(jí)鎖:開銷大远剩,加鎖慢扣溺;會(huì)出現(xiàn)死鎖;鎖定粒度最小瓜晤,發(fā)生鎖沖突的概率最低,并發(fā)度也最高锥余。
頁(yè)面鎖:開銷和加鎖時(shí)間界于表鎖和行鎖之間;會(huì)出現(xiàn)死鎖活鹰;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般只估。
每種鎖可以在網(wǎng)上查詢?cè)敿?xì)說(shuō)明志群。主要看你用什么存儲(chǔ)引擎。
簡(jiǎn)單算法題目:
11.猴子第一天摘下若干個(gè)桃子蛔钙,當(dāng)即吃了一半锌云,還不癮,
又多吃了一個(gè) 第二天早上又將剩下的桃子吃掉一半吁脱,又多吃了一個(gè)桑涎。
以后每天早上都吃了前一天剩下 的一半零一個(gè)。到第10天早上想再吃時(shí)兼贡,
見只剩下一個(gè)桃子了攻冷。求第一天共摘了多少(編程)。
public static int eat(int day){
int sum;
if (day == 1) {
return 1;
}
sum = eat(day-1);
sum = (sum + 1)*2;
return sum;
}
12遍希、打印出如下圖案(菱形)
*
*
@Test
public void printStart(){
int space;
int start;
for (int i = 1; i < 5; i++) {
space = 4 - i;
start = 2*i - 1;
while (space > 0) {
System.out.print(" ");
space--;
}
while (start > 0) {
System.out.print("*");
if (start == 1) {
System.out.println("");
}
start--;
}
}
for (int ii = 3; ii > 0; ii--) {
space = 4 - ii;
start = 2*ii - 1;
while (space > 0) {
System.out.print(" ");
space--;
}
while (start > 0) {
System.out.print("*");
if (start == 1) {
System.out.println("");
}
start--;
}
}
}
13.請(qǐng)編程實(shí)現(xiàn)函數(shù):接受一個(gè)小寫的英文字母為參數(shù)等曼,輸出參數(shù)的后三位英文字母。例如參數(shù)'d'則輸出'g',參數(shù)'y'則輸出'b'凿蒜。
public static Character character(char ch){
char x = 'x';
if (ch >= x) {
ch -= 23;
}
else {
ch += 3;
}
return ch;
}