您好,登錄后才能下訂單哦!
1、基本數據類型有哪些?
基本數據類型包括byte、int、char、long、float、double、boolean和short。 java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類。
2、get和post的區別
get是從服務器上獲取數據,post是向服務器傳遞數據;
get傳送的數據量小,不能大于2KB,post傳送的數據量較大;
get安全性低,傳遞的參數都顯示在地址欄,post高,但是執行效率上get好一些;
在進行文件上傳的時候,只能使用post而不能使用get
3、string stringbuffer stringbuilder 區別及選用
String字符串常量,Stringbuffer與Stringbuilder是字符串變量
String長度不可變,Stringbuffer與Stringbuilder長度可變。因為String類中使用final關鍵字字符數組保存字符串,private final char value[],所以String不可變
String使用字符串拼接的時候是兩個不同的空間,Stringbuffer與Stringbuilder則是直接在字符串后面追加,所以大數據量上不用string
StringBuffer線程安全,StringBuilder線程不安全,是因為StringBuffer對方法加了同步鎖
執行效率上StringBuilder>StringBuffer>String
總結:對于操作少量的數據用String,大量的數據,單線程用StringBuiler,多線程用StringBuffer
4、HashMap與Hashtable區別
HashMap非線程安全,HashTable線程安全,因為HashTable內部的方法都經過synchronized修飾
HashMap允許null的鍵/值,HashTable不允許
HashMap性能優于Hashtable
初始容量Hashtable默認11,每次擴充,容量變為原來的2n+1。HashMap默認16,每次擴充,容量變為原來的2倍
底層數據結構不同,jdk1.8之后,當鏈表長度大于閾值(默認為8)時,將鏈表轉換為紅黑樹,來減少搜索時間,Hashtable沒有這樣的機制,Hashtable基本被淘汰了,少用。
5、Spring MVC和Spring boot有啥區別
1、springMVC是Spring的一個模式,是一個Web框架,提供了一個輕度耦合的方式來開發Web應用;
2、SpringBoot是習慣優于配置,降低了項目搭建的難度(約定大于配置,可以簡化spring的配置流程);
3、springMVC需要適用到TomCat服務器,而springboot內置服務器容器,通過@SpringBootApplication中注解類中main函數啟動即可;
6、session和cookie的區別
區別:
1、cookie數據存放在客戶端,session數據放在服務器上。
?2、cookie不是很安全,別人可以分析存放在本地的cookie并進行cookie欺騙,考慮到安全應當使用session。
?3、session會在一定時間內保存在服務器上,當訪問增多,會比較占用你服務器的性能,考慮性能應當使用cookie。
?4、不同瀏覽器對cookie的數據大小限制不同,個數限制也不相同。
?5、可以考慮將登陸信息等重要信息存放為session,不重要的信息可以放在cookie中。
聯系:
1、都是用來記錄用戶的信息,以便讓服務器分辨不同的用戶。?2、可以搭配使用,但都有自己的使用局限,要考慮到安全和性能的問題。
7、JDK、JRE、JVM的聯系與區別
三者聯系:
JVM不能單獨搞定class的執行,解釋class的時候JVM需要調用解釋所需要的類庫lib。在JDK下面的的jre目錄里面有兩個文件夾bin和lib,在這里可以認為bin里的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱為jre。JVM+Lib=JRE。總體來說就是,我們利用JDK(調用JAVA API)開發了屬于我們自己的JAVA程序后,通過JDK中的編譯程序(javac)將我們的文本java文件編譯成JAVA字節碼,在JRE上運行這些JAVA字節碼,JVM解析這些字節碼,映射到CPU指令集或OS的系統調用。
三者區別:
1.JDK和JRE區別:在bin文件夾下會發現,JDK有javac.exe而JRE里面沒有,javac指令是用來將java文件編譯成class文件的,這是開發者需要的,而用戶(只需要運行的人)是不需要的。JDK還有jar.exe, javadoc.exe等等用于開發的可執行指令文件。這也證實了一個是開發環境,一個是運行環境。
2.JRE和JVM區別:JVM并不代表就可以執行class了,JVM執行.class還需要JRE下的lib類庫的支持,尤其是rt.jar。
8、&和&&區別
9、ArrayList和Vector的區別?
10、List 和 Map 區別?Set呢?
11、ArrayList,Vector, LinkedList的存儲性能和特性?
12、char類型的變量能不能存儲一個中文?為什么?
13、在HashMap中是如何比較“key”的值的
在HashMap比較兩個key值時,首先使用equals進行比較兩個key的值,如果不同則認為是兩個不同的key;如果相同,再比較兩個key的hashcode,如果不同,則認為是兩個不同的key;如果相同則認為是兩個相同的key,此時的value2會覆蓋value1的值
14、如果main方法被聲明為private會怎樣?
15、char類型的變量能不能存儲一個中文?為什么
答案是可以的,但是兩個中文不行。因為char占兩個字節,一個中文也占兩個字節,所以是可以存儲的。
16、九大內置對象是哪些?
request:用戶端請求,此請求會包含來自GET/POST請求的參數(表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,并且提供了幾個用于獲取cookie,header, 和session數據的有用的方法。)
response:網頁傳回用戶端的回應(表示HttpServletResponse對象,并提供了幾個用于設置送回
瀏覽器的響應的方法(如cookies,頭信息等))
page:JSP網頁本身(表示從該頁面產生的一個servlet實例)
pageContext:網頁的屬性是在這里管理(表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關的對象的API,并且包裝了通用的servlet相關功能的方法。)
session:與請求有關的會話期(表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態信息)
application:servlet正在執行的內容(表示一個javax.servle.ServletContext對象。這有助于查找有關servlet引擎和servlet環境的信息)
out:用來傳送回應的輸出(是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用于向瀏覽器推送輸出結果。)
config:servlet的構架部件(表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數。)
exception:針對錯誤網頁,未捕捉的例外
17、Servlet生命周期和執行流程?
Servlet的生命周期可以分為四個階段:裝載類及創建實例階段,初始化階段,服務階段,實例銷毀階段
1、初始化階段調用init()方法。
2、響應客戶請求階段。調用service()方法,由service()方法根據提交的方式選擇執行doGet()或者doPost()方法。
3、終止階段調用destroy()方法。
執行流程:瀏覽器向服務器請求時,服務器不會直接執行我們的類,而是到web.xml里尋找路徑名
第一步,瀏覽器輸入訪問路徑后,攜帶了請求行,頭,體
第二步,根據訪問路徑找到已注冊的servlet名稱,既圖中的demo
第三步,根據映射找到對應的servlet名
第四步,根據根據servlet名找到我們全限定類名,既我們自己寫的類
18、JVM簡述java垃圾回收機制?
在java中,程序員是不需要顯示的去釋放一個對象的內存的,而是由虛擬機自行執行。在JVM中,有一個垃圾回收線程,它是低優先級的,在正常情況下是不會執行的,只有在虛擬機空閑或者當前堆內存不足時,才會觸發執行,掃面那些沒有被任何引用的對象,并將它們添加到要回收的集合中,進行回收。
19、JVM簡述java類加載機制? 虛擬機把描述類的數據從Class文件加載到內存,并對數據進行校驗,解析和初始化,最終形成可以被虛擬機直接使用的java類型。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。