美團算大廠嗎?為什麼程序員擠破頭也要進大廠?
那年十八 母校舞會
站著如嘍囉
那時候 我含淚
發誓各位 必須看到我
1. 為什麼說Java是一門平臺無關語言?
平臺無關實際的含義是“一次編寫到處運行”。Java 能夠做到是因為它的字節碼(byte code)可以運行在任何操作系統上,與底層系統無關。
2. 為什麼 Java 不是100%面向對象?
Java 不是100%面向對象,因為它包含8個原始數據類型,例如 boolean、byte、char、int、float、double、long、short。它們不是對象。
3. 什麼是 singleton class,如何創建一個 singleton class?
Singleton class 在任何時間同一個 JVM 中只有一個實例。可以把構造函數加 private 修飾符創建 singleton。
4. 什麼是多態?什麼是運行時多態,也稱動態方法分配?
多態簡單地說“一個接口,多種實現”。多態的出現使得在不同的場合同一個接口能夠提供不同功能,具體地說可以讓變量、函數或者對象能夠提供多種功能。下面是多態的兩種類型:
- 編譯時多態。
- 運行時多態。
- 編譯時多態主要是對方法進行重載(overload),而運行時多態主要通過使用繼承或者實現接口。
在 Java 中,運行時多態或動態方法分配是一種在運行過程中的方法重載。在這個過程中,通過調用父類的變量引用被重載的方法。下面是一個例子:
class Car {
void run()
{
System.out.println(“car is running”);
}
}
class Audi extends Car {
void run()
{
System.out.prinltn(“Audi is running safely with 100km”);
}
public static void main(String args[])
{
Car b= new Audi(); //向上轉型
b.run();
}
}
5. Java類加載器包括幾種?它們之間的關係是怎麼樣的?
Java 類加載器有:
- 引導類加載器(bootstrap class loader):只加載 JVM 自身需要的類,包名為 java、javax、sun 等開頭。
- 擴展類加載器(extensions class loader):加載 JAVA_HOME/lib/ext 目錄下或者由系統變量 -Djava.ext.dir 指定位路徑中的類庫。
- 應用程序類加載器(application class loader):加載系統類路徑 java -classpath 或 -Djava.class.path 下的類庫。
- 自定義類加載器(java.lang.classloder):繼承 java.lang.ClassLoader 的自定義類加載器。
注意: -Djava.ext.dirs 會覆蓋 Java 本身的 ext 設置,造成 JDK 內建功能無法使用。可以像下面這樣指定參數:
-Djava.ext.dirs=./plugin:$JAVA_HOME/jre/lib/ext。
它們的關係如下:
- 啟動類加載器,C++實現,沒有父類。
- 擴展類加載器(ExtClassLoader),Java 實現,父類加載器為 null。
- 應用程序類加載器(AppClassLoader),Java 實現,父類加載器為 ExtClassLoader 。
- 自定義類加載器,父類加載器為AppClassLoader。
6. 列舉Spring配置中常用的重要註解。
下面是一些重要的註解:
- @Required
- @Autowired
- @Qualifier
- @Resource
- @PostConstruct
- @PreDestroy
7. Spring中的Bean是什麼?列舉Spring Bean的不同作用域。
Bean 是 Spring 應用的骨架。它們由 Spring IoC 容器管理。換句話說,Bean 是一個由 Spring IoC 容器初始化、裝配和管理的對象。
下面是 Spring Bean 的5種作用域:
- Singleton:每個容器只創建一個實例,也是 Spring Bean 的默認配置。由於非線程安全,因此確保使用時不要在 Bean 中共享實例變量,一面出現數據不一致。
- Prototype:每次請求時創建一個新實例。
- Request:與 prototype 相同,區別在於只針對 Web 應用。每次 HTTP 請求時創建一個新實例。
- Session:每次收到 HTTP 會話請求時由容器創建一個新實例。
- 全局 Session:為每個門戶應用(Portlet App)創建一個全局 Session Bean。
8. 什麼是JDBC驅動?
JDBC Driver 是一種實現 Java 應用與數據庫交互的軟件。JDBC 驅動有下面4種:
- JDBC-ODBC bridge 驅動
- Native-API 驅動(部分是 Java 驅動)
- 網絡協議驅動(全部是 Java 驅動)
- Thin driver(全部是 Java 驅動)
9. 使用 Java 連接數據庫有哪幾步?
- 註冊驅動類
- 新建數據庫連接
- 新建語句(statement)
- 查詢
- 關閉連接
寫在最後
篇幅有限,所以文中並沒有給出所有的面試題,有需要的朋友下面有領取方式;其實不管面不面試,拿來試試手也挺好,就當複習複習
PDF完整版面試題領取方式:
轉發文章後,私信我【學習】,即可免費領取
以下是部分面試題截圖
閱讀更多 Java架構師丨蘇先生 的文章