1.以下代碼的運行結果是
public static void main(String[] args) {
ArrayList<Integer> integers = new ArrayList<Integer>() ;
integers.add(2);
integers.add(4);
integers.add(1);
integers.add(3);
integers.add(5);
for (int i = 0; i <integers.size() ; i++) {
if (integers.get(i)%2==0){
integers.remove(integers.get(i));
}
}
System.out.println(integers);
}
不是1,3,5 是4,1,3,5(當第一個2被移除后,4會第一個,不會被比較移除。驚喜意外...)
2.求運行結果
public class Demo {
class Super {
int flag=1;
Super(){
test();//2步,此處調用了一個test(),雖然子類和父類中都有test()但是會優先調用子類
}
void test(){
System.out.println("Super.test() flag="+flag);
}
}
class Sub extends Super{
Sub(int i){//4步,3執行完后調用子類構造器
flag=i;
System.out.println("Sub.sub() flag="+flag);
}
void test() {//3步
System.out.println("Sub.test() flag="+flag);
}
}
public static void main(String[] args) {
new Demo().new Sub(5);//1步,new的子類,但是子類繼承了父類,
//會先訪問父類的無參構造方法
}
}
Sub.test() flag=1
Sub.sub() flag=5
3.java體系結構包括四個方面:
java程序設計語言
java class文件格式
java API
java 虛擬機
4.下列哪些語法結構是正確的
public class Demo extends B implements A
public class Demo implements A,B
5.下面哪些情況可以引發異常
A.數組越界
B.指定url不存在
C.使用throw語句拋出
D.使用throw語句
ABC
6.面向對象優點
1、易維護
采用[面向對象思想](https://www.baidu.com/s?wd=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%9D%E6%83%B3&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)設計的結構,可讀性高,由于繼承的存在,即使改變需求,那么維護也只是在局部模塊,所以維護起來是非常方便和較低成本的。
2、質量高
在設計時,可重用現有的,在以前的項目的領域中已被測試過的類使系統滿足業務需求并具有較高的質量。
3、效率高
在軟件開發時,根據設計的需要對現實世界的事物進行抽象,產生類。使用這樣的方法解決問題,接近于日常生活和自然的思考方式,勢必提高軟件開發的效率和質量。
4、易擴展
由于繼承、封裝、多態的特性,自然設計出高內聚、低耦合的系統結構,使得系統更靈活、更容易擴展,而且成本較低。
7.下列哪些方法可以獲取cookis
A.request.getAttribute
B.request.getHeader
C.request.getParameter
D.request.getCookies
A. request.getAttribute:getAttribute是在服務器端的操作。
比如說 request.setAttribute(k,v),其行為動作在服務器端。
而在服務端放入cookies是通過response.addCookie(cookie)。因此,A錯了
B. Accept 瀏覽器可接受的MIME類型
Accept-Charset 瀏覽器支持的字符編碼
Accept-Encoding 瀏覽器知道如何解碼的數據編碼類型(如 gzip)。Servlets 可以預先檢查瀏覽器是否支持gzip并可以對支持gzip的瀏覽器返回gzipped的HTML頁面,并設置Content-Encoding回應頭(response header)來指出發送的內容是已經gzipped的。在大多數情況下,這樣做可以加快網頁下載的速度。
Accept-Language 瀏覽器指定的語言,當Server支持多語種時起作用。
Authorization 認證信息,一般是對服務器發出的WWW-Authenticate頭的回應。
Connection 是否使用持續連接。如果servlet發現這個字段的值是Keep-Alive,或者由發出請求的命令行發現瀏覽器支持 HTTP 1.1 (持續連接是它的默認選項),使用持續連接可以使保護很多小文件的頁面的下載時間減少。
Content-Length (使用POST方法提交時,傳遞數據的字節數)
Cookie (很重要的一個Header,用來進行和Cookie有關的操作,詳細的信息將在后面的教程中介紹)
Host (主機和端口)
If-Modified-Since (只返回比指定日期新的文檔,如果沒有,將會反回304 "Not Modified")
Referer (URL)
User-Agent (客戶端的類型,一般用來區分不同的瀏覽器)
C.request.getParameter()方法獲取從客戶端中通過get 或者post方式傳送到服務器端的參數。行為操作在服務器端。所以cookies明顯不是通過url或者form表單提交過來的。C錯
D.看方法名字就行了。
BD
8.下列錯誤的是
A.一個類可以有多個基類和多個基接口
B.抽象類自身可以定義成員而接口不可以
C.抽象類和接口都不能被實例化
D.類不可以多重繼承而接口可以
C抽象類是可以實例化的,接口不可以
9.有關線程說法正確的是( )
A線程是程序的多個順序的流動態執行
B 線程有自己獨立的地址空間
C 線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制
D 線程是系統進行資源分配和調度的一個獨立單位
進程是具有一定獨立功能的程序關于某個數據集合上的一次運行活動,是操作系統進行資源分配和調度的一個獨立單位;
線程是進程的一個實體,一個進程中包含多個線程。是CPU調度和分派的基本單位,是比進程更小的能獨立運行的基本單位
B進程有獨立的地址空間,線程沒有。線程是共享進程的地址空間,因此B錯誤
D進程是 操作系統進行資源分配和調度的一個獨立單位,而線程只是CPU調度和分派的基本單位,因此D錯誤
AC
10.下面關于數據庫唯一索引正確的是( )?
A.表可以包含多個唯一約束,但只能有一個主鍵
B.唯一約束列可以包含null值
C.唯一約束列可修改和更新
D.唯一約束不能用來定義外鍵
正確答案:A B C
11.Redis支持五種數據類型:
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
12關于OutOfMemoryError,下面說法正確的是()?
A.java.lang.OutOfMemoryError: PermGen space 增加-XX:MaxPermSize這個參數的值的話,這個問題通常會得到解決。
B.java.lang.OutOfMemoryError: Requested array size exceeds VM limit當你正準備創建一個超過虛擬機允許的大小的數組時,這條錯誤將會出現
C.java.lang.OutOfMemoryError: Java heap space 一般情況下解決這個問題最快的方法就是通過-Xmx參數來增加堆的大小
D.java.lang.OutOfMemoryError: nativeGetNewTLA這個異常只有在jRockit虛擬機時才會碰到
ABC
13.寫兩個線程,一個線程打印1 ~ 52,另一個線程打印A ~ Z,打印順序是
12A34B....5152Z
package www.java.test;
class Print{
int flag = 1;
int count = 1;
public synchronized void printNum(){
while(flag != 1){
//此時應該打印字母,讓打印數字線程等待
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//打印數字
System.out.print(2*count - 1);
System.out.print(2*count);
flag = 2;
notify();
}
public synchronized void printChar(){
while(flag != 2){
//此時應該打印數字,字母打印線程等待
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print((char)(count-1 + 'A'));
//繼續前行
count++;
flag = 1;
notify();
}
}
public class Test{
public static void main(String[] args) {
Print print = new Print();
new Thread(()->{
for(int i = 0; i < 26; i++){
print.printNum();
}
}).start();
new Thread(()->{
for(int i = 0; i < 26; i++){
print.printChar();
}
}).start();
}
}