集合系列
hashmap和hashtable差別?
(1)Hashmap鍵值對可以為空,Hashtable鍵值對都不能為空。
(2)HashMap是線程不安全的,Hashtable是線程安全的。
(3)HashMap繼承自AbstractMap類,Hashtable繼承自Dictionary類。
List和set、map的差別:
(1)List是有序可重複的,set是無序不可重複的。
(2)List允許插入多個null值,set隻允許一個null值。
(3)Map不是collection的子接口或者實作類。Map是一個接口,Map 的 每個 Entry 都持有兩個對象。
什麼場景下使用list,set,map呢?
(1)如果你經常會使用索引來對容器中的元素進行通路,那麼 List 是你的正确的選擇。
(2)如果你想保證插入元素的唯一性,也就是你不想有重複值的出現,那麼可以選擇一個 Set 的實作類。
(3)如果你以鍵和值的形式進行資料存儲那麼 Map 是你正确的選擇.
多線程系列
如何在Java中實作線程?
1.繼承Thread類,重寫run方法(其實Thread類本身也實作了Runnable接口)
2.實作Runnable接口,重寫run方法
3.實作Callable接口,重寫call方法(有傳回值)
4.使用線程池(有傳回值)
Thread類中的start()和run()方法有什麼差別?
隻有調用了start()方法,才會表現出多線程的特性,不同線程的run()方法裡面的代碼交替執行。如果隻是調用run()方法,那麼代碼還是同步執行的,必須等待一個線程的run()方法裡面的代碼全部執行完畢之後,另外一個線程才可以執行其run()方法裡面的代碼。則沒實作多線程。
Java多線程中調用wait() 和 sleep()方法有什麼不同?
1.sleep()來自Thread類,wait()來自Object類,
2.調用 sleep()方法,線程不會釋放對象鎖。而調用 wait() 方法線程會釋放對象鎖;
3.sleep()睡眠後不出讓系統資源,wait()讓其他線程可以占用 CPU;
JAVA基礎
equals與==的差別?
==操作符是用來比較兩個變量的值是否相等,即就是比較變量在記憶體中的存儲位址是否相同,equals()方法是String類從Object類中繼承的,被用來檢測兩個對象的内容是否相同。
重載和重寫(覆寫)的差別?
(1)重載的方法名稱相同、參數的類型或個數不同,重寫則全部相同。
(2)重載對權限沒有要求、被 重寫的方法不能擁有更嚴格的權限。
(3)重載發生在一個類當中,重寫發生在繼承類當中。
抽象類(abstract)和接口的差別?
抽象類要被子類繼承,接口要被類實作。
抽象類中可以作方法聲明,也可以做方法實作,接口隻能做方法聲明。
抽象類可以有具體的方法和屬性,接口隻能有抽象方法和不可變常量。
抽象類和接口都是用來抽象具體對象的,但是接口的抽象級别最高。
什麼是線程安全?
如果每次多線程運作結果和單線程運作的結果是一樣的,而且其他的變量的值也和預期的是一樣的,就是線程安全的。
Final關鍵字的作用:
(1)修飾類:被final關鍵字修飾的類,不能被繼承沒有子類。
(2)修飾方法:一個類中的方法一旦被final關鍵字修飾,則該方法就不能被子類重寫,隻能被繼承。
(3)修飾變量:如果修飾的基本資料類型,一旦被初始化,其數值是不能再被改變的。
Ajax怎麼設定同步異步
async:true(異步) false (同步)
發送ajax請求的步驟
1.建立異步對象(XMLHttpRequest)
2.準備發送:open(參數一,參數二,參數三)1.請求方式。2.請求位址3.同步異步
3.執行發送動作:send()
4.指定回調函數:onreadystatechange()
servlet生命周期:
被建立(init)
提供服務(service)
被銷毀(destroy)
怎麼解決tomcat端口沖突
–1.dos視窗中輸入:netstat -ano | findstr 8080
找到占用的端口,然後kill
–2.kill占用的端口
taskkill -pid (程序pid) -f
jsp和servlet的差別
1、JSP在本質上就是SERVLET,但是兩者的建立方式不一樣.
2、Servlet完全是JAVA程式代碼構成,擅長于流程控制和事務處理,通過Servlet來生成動态網頁很不直覺.
3、JSP由HTML代碼和JSP标簽構成,可以友善地編寫動态網頁.
JDBC的操作步驟:
1.加載驅動:classforName()、driverManager.registerDriver()
2.擷取連接配接:DriverManager.getConnection();
3.建立sql語句connection.preparedStatement
4.執行sql語句 excute
5.釋放資源
說一下synchronized關鍵字中對象鎖和類鎖的差別。
答:
對象鎖就是非靜态方法,類鎖就算靜态方法。
(1)非靜态方法: 給對象加鎖(可以了解為給這個對象的記憶體上鎖,注意 隻是這塊記憶體,其他同類對象都會有各自的記憶體鎖),這時候在其他一個以上線程中執行該對象的這個同步方法(注意:是該對象)就會産生互斥。
(2)靜态方法: 相當于在類上加鎖(*.class 位于代碼區,靜态方法位于靜态區域,這個類産生的對象公用這個靜态方法,是以這塊記憶體,N個對象來競争), 這時候,隻要是這個類産生的對象,在調用這個靜态方法時都會産生互斥。