1. 招銀網絡實習電話一面(hhy)
【流程】
自我介紹,問到了intel實習的內容,最近看了哪些書?在哪裏看書?最後就是java基礎知識問答
【問題】
Q1:源文件裏有幾個類?有什麼限制和規範?
答:可以有多個類,但是有且只有一個public類,並且public類的類名和java文件的文件名一致
Q2:private,不寫,protected,public修飾符的作用域
修飾符 | 當前類 | 同包 | 子類 | 其他類 |
public | 1 | 1 | 1 | 1 |
protected | 1 | 1 | 1 | 0 |
不寫 | 1 | 1 | 0 | 0 |
private | 1 | 0 | 0 | 0 |
Q3:JVM類加載過程
答:JVM把class文件加載到內存中開始,到卸載出內存爲止,整個生命週期包括:加載、驗證、準備、解析、初始化、使用和卸載七個階段——類加載機制
平常說的類加載不是指的類加載機制,只是加載機制的第一步加載。在這個階段,JVM主要完成三件事:
- 通過一個類的全限定名(包名.類名)來獲取此類的class文件(二進制字節流)
- 將這個類加載所代表的靜態存儲結構轉化爲方法區的運行時數據結構
- 在內存中生成一個代表這個類的java.lang.Class對象,作爲方法區這個類的各種數據的訪問入口
【引申1】什麼時候會類加載?
- 用new創建對象的實例
- 調用類中的靜態方法或者靜態屬性
- 執行main方法時,main方法所在的類也會被加載
- 使用反射方法對類進行調用的時候,Class.forName("一個類的包名.類名”)
- 當初始化一個類的時候,如果其父類還沒有初始化,則要首先進行其父類的初始化
【引申2】JVM類加載器分類
- 啓動類加載器:負責加載Java的核心類庫
- 擴展類加載器:負責加載擴展目錄下的jar包
- 系統類加載器:是加載CLASSPATH環境變量所指定的jar包與類路徑
【引申3】類加載器的雙親委派機制
當一個類收到了類加載的請求時,他首先不會自己去加載這個類,而是委派給它的父類,每一層類加載器都是如此,因此所有的類加載請求都會傳送到啓動類加載中,只有當父類加載器反饋在它的加載路徑下沒有找到所需加載的class,子類加載器纔會自己去加載。
Q4:mysql裏面char、varchar的區別
char是固定長度,浪費存儲空間但是處理速度更快;varchar雖然不定長,但是要在總長度上加1個字符,用來存儲位置
Q5:mysql裏int(20)的20指的是什麼意思
指的是顯示寬度,不是指能夠存儲的數據長度,int存儲的都是4個字節的數據