比亞迪面試,全程八股!
比亞迪最近幾年憑借著其新能源汽車的板塊大火了一把,無論是名聲還是股價都漲得嘎嘎猛,但是迪子招聘編程技術崗位的人員卻有兩個特點:
- 面試難度低,對學校有一定的要求。
- 薪資給的和面試難度一樣低。
但不管怎么,迪子也算是國內知名公司了,所以今天咱們來看看,他的校招 Java 技術崗的面試題都問了哪些知識點?面試題目如下:
1、int和Integer有什么區(qū)別?
參考答案:int 和 Integer 都是 Java 中用于表示整數(shù)的數(shù)據(jù)類型,然而他們有以下 6 點不同:
- 數(shù)據(jù)類型不同:int 是基礎數(shù)據(jù)類型,而 Integer 是包裝數(shù)據(jù)類型;
- 默認值不同:int 的默認值是 0,而 Integer 的默認值是 null;
- 內存中存儲的方式不同:int 在內存中直接存儲的是數(shù)據(jù)值,而 Integer 實際存儲的是對象引用,當 new 一個 Integer 時實際上是生成一個指針指向此對象;
- 實例化方式不同:Integer 必須實例化才可以使用,而 int 不需要;
- 變量的比較方式不同:int 可以使用 == 來對比兩個變量是否相等,而 Integer 一定要使用 equals 來比較兩個變量是否相等;
- 泛型使用不同:Integer 能用于泛型定義,而 int 類型卻不行。
2、什么時候用 int 和 Integer?
參考答案:int 和 Integer 的典型使用場景如下:
- Integer 典型使用場景:在 Spring Boot 接收參數(shù)的時候,通常會使用 Integer 而非 int,因為 Integer 的默認值是 null,而 int 的默認值是 0。如果接收參數(shù)使用 int 的話,那么前端如果忘記傳遞此參數(shù),程序就會報錯(提示 500 內部錯誤)。因為前端不傳參是 null,null 不能被強轉為 0,所以使用 int 就會報錯。但如果使用的是 Integer 類型,則沒有這個問題,程序也不會報錯,所以 Spring Boot 中 Controller 接收參數(shù)時,通常會使用 Integer。
- int 典型使用場景:int 常用于定義類的屬性類型,因為屬性類型,不會 int 不會被賦值為 null(編譯器會報錯),所以這種場景下,使用占用資源更少的 int 類型,程序的執(zhí)行效率會更高。
3、HashMap 底層實現(xiàn)?
HashMap 在 JDK 1.7 和 JDK 1.8 的底層實現(xiàn)是不一樣的。
- 在 JDK 1.7 中,HashMap 使用的是數(shù)組 + 鏈表實現(xiàn)的。
- 而 JDK 1.8 中使用的是數(shù)組 + 鏈表或紅黑樹實現(xiàn)的。
HashMap 在 JDK 1.7 中的實現(xiàn)如下圖所示:
HashMap 在 JDK 1.8 中的實現(xiàn)如下圖所示:
4、HashMap 如何取值和存值?
參考答案:HashMap 使用 put(key,value) 方法進行存值操作,而存值操作的關鍵是根據(jù) put 中的 key 的哈希值來確定存儲的位置,如果存儲的位置為 null,則直接存儲此鍵值對;如果存儲的位置有值,則使用鏈地址法來解決哈希沖突,找到新的位置進行存儲。
HashMap 取值的方法是 get(key),它主要是通過 key 的哈希值,找到相應的位置,然后通過 key 進行判斷,從而獲取到存儲的 value 信息。
5、SpringBoot 如何修改端口號?
參考答案:在 Spring Boot 中的配置文件中設置“server.port=xxx”就可以修改端口號了。
6、如何修改 Tomcat 版本號?
參考答案:在 pom.xml 中添加 tomcat-embed-core 依賴就可以修改 Spring Boot 中內置的 Tomcat 版本號了,如下圖所示:
但需要注意的是 Spring Boot 和 Tomcat 的版本是有對應關系的,要去 maven 上查詢對應的版本關系才能正確的修改內置的 Tomcat 版本號,如下圖所示:
7、SpringBoot如何配置Redis?
參考答案:首先在 Spring Boot 中添加 Redis 的框架依賴,然后在配置文件中使用“spring.redis.xxx”來設置 Redis 的相關屬性,例如以下這些:
spring:
redis:
# Redis 服務器地址
host: 127.0.0.1
# Redis 端口號
port: 6379
# Redis服務器連接密碼,默認為空,若有設置按設置的來
password:
jedis:
pool:
# 連接池最大連接數(shù),若為負數(shù)則表示沒有任何限制
max-active: 8
# 連接池最大阻塞等待時間,若為負數(shù)則表示沒有任何限制
max-wait: -1
# 連接池中的最大空閑連接
max-idle: 8
8、MySQL 左連接和右連接有什么區(qū)別?
參考答案:在 MySQL 中,左連接(Left Join)和右連接(Right Join)是兩種用來進行聯(lián)表查詢的 SQL 語句,它們的區(qū)別如下:
- 左連接:左連接是以左邊的表格(也稱為左表)為基礎,將左表中的所有記錄和右表中匹配的記錄聯(lián)接起來。即使右表中沒有匹配的記錄,左連接仍然會返回左表中的記錄。如果右表中有多條匹配記錄,則會將所有匹配記錄返回。左連接使用 LEFT JOIN 關鍵字來表示。
- 右連接:右連接是以右邊的表格(也稱為右表)為基礎,將右表中的所有記錄和左表中匹配的記錄聯(lián)接起來。即使左表中沒有匹配的記錄,右連接仍然會返回右表中的記錄。如果左表中有多條匹配記錄,則會將所有匹配記錄返回。右連接使用 RIGHT JOIN 關鍵字來表示。
例如以下圖片,左連接查詢的結果如下圖所示(紅色部分為查詢到的數(shù)據(jù)):
右連接如下圖紅色部分:
9、內連接沒有匹配上會怎么?
參考連接:內連接使用的是 inner join 關鍵字來實現(xiàn)的,它會匹配到兩張表的公共部分,如下圖所示:
所以,如果內連接沒有匹配上數(shù)據(jù),則查詢不到此數(shù)據(jù)。
小結
以上是比亞迪的面試題,但并不是說比亞迪的面試難度一定只有這么低。因為面試的難度通常是根據(jù)應聘者的技術水平?jīng)Q定的:如果應聘者的能力一般,那么通常面試官就會問一下簡單的問題,然后早早結束面試;但如果應聘者的能力比較好,面試官通常會問的比較難,以此來探尋應聘者的技術能力邊界,從而為后續(xù)的定薪、定崗來做準備,所以大家如果遇到迪子的面試也不要大意。