實際遇到或者覺得重要的java面試題

2021-08-26 09:15:53 字數 2617 閱讀 1370

空指標異常發生哪幾種

字串變數沒有初始化

物件的值為空,但是沒有判空,就拿來用了。

springboot統一異常處理(具體見:

首先定義乙個globalexceptionhandler

然後定義過濾器攔截exception異常(統一捕獲)

如何進行異常處理

1.如果異常在try/catch語句中,捕獲到然後頁面**到友情提示介面,後台打乙個log(模板引擎這種)。如果是前後分離,就是返回乙個異常的狀態碼,前端自行提示錯誤,後台打乙個log。(catch的是業務異常)

2.如果異常不在try/catch內,就是統一異常處理捕獲了,然後**到友情提示介面,後台打乙個log

怎麼寫執行緒

建立執行緒:定義thread子類、重新run方法、建立thread子類物件、呼叫執行緒物件的start方法。

實現runnable介面,實現run方法,用new thread.starter方法啟動。

執行緒是作業系統進行運算排程的最小單位。

乙個程序可以有很多執行緒,執行緒是作業系統進行資源排程的基本單位,執行緒是作業系統進行運算排程的最小單位。

synchronized

當synchronized用來修飾靜態方法或者類時,將會使得這個類的所有物件都是共享一把類鎖,導致執行緒阻塞,所以這種寫法一定要規避

無論synchronized關鍵字加在方法上還是物件上,如果它作用的物件是非靜態的,則它取得的鎖是物件;如果synchronized作用的物件是乙個靜態方法或乙個類,則它取得的鎖是對類,該類所有的物件同一把鎖。

每個物件只有乙個鎖(lock)與之相關聯,誰拿到這個鎖誰就可以執行它所控制的那段**。

實現同步是要很大的系統開銷作為代價的,甚至可能造成死鎖,所以盡量避免無謂的同步控制。

單例模式例項、哪些設計模式

spring中容器管理bean就是單例模式

單例模式、工廠方法模式、抽象工廠模式。

集合:list、map、set

list:有順序、可以重複。

map:鍵值型別儲存,。無順序、鍵不能重複

set:無序、不能重複

定時任務

quartz

scheduling

執行緒池、連線池

連線池:建立和管理連線的緩衝池技術。

執行緒池:當併發的執行緒很多時,頻繁的建立執行緒和銷毀執行緒會浪費資源,需要重複利用執行緒,然後引入了執行緒池技術。

延遲載入

真正需要資料的時候,才真正執行資料載入操作。

mybatis中可以使用association實現延遲載入。

訊息佇列(activemq)

例子:在使用者進行註冊操作的時候,我們首先向資料庫儲存使用者資訊,成功後,把成功訊息傳送到佇列中去,驗證碼系統會監聽訊息,一旦接收到訊息,就會給該使用者傳送驗證碼。

如何防止重**送訊息:增加訊息狀態表,每次處理訊息之前,都去狀態表中查詢一次,如果已經有相同的訊息存在,那麼就不處理,防止重**送訊息。

如果訊息傳送失敗怎麼辦:activemq有兩種訂閱方式:點到點形式和發布訂閱模式。

跨域springboot中使用cors協議解決跨域問題。

新增配置類,進行全域性的跨域配置。

顯示日誌最後指定行內容

tail –n 20 檔名

檢視當前cpu運**況

top/free

索引為查詢的字段建立索引,其實就是為該字段進行排序

應該給哪些字段建立索引:

經常需要搜尋的字段新增索引,可以加快搜尋速度。

為外來鍵新增索引,加快連線速度。

不應該為哪些字段新增索引:

記錄比較少的字段不應新增索引

對大量重複的字段不該新增索引

實際新增索引操作:

1.normal、unique、fulltext型別進行選取

回滾

具體操作是:spring預設是在丟擲uncheck exception後進行回滾操作,捕獲異常,返回錯誤資訊。

資料庫配置

驅動、連線字串、使用者名稱、密碼。

常用註解

@controller:控制層元件

@service:業務層元件

@repository:資料訪問層元件

@autowired:自動裝配

ioc:控制反轉,理解:ioc容器控制依賴物件(控制),再需要由容器向程式注入依賴物件(反轉)。

di:依賴注入,理解:由容器將依賴關係注入到元件中去

nginx:nginx反向**為什麼能夠提公升伺服器效能:nginx會將請求和響應首先快取主,再傳送或者接受,這樣後端就傳遞的是完整http請求和響應,減輕了後端壓力。

webservice:跨語言和作業系統的遠端呼叫技術

zookeeper

docker dubbo

儲存過程、觸發器

mybatis插入資料返回自增id:usegeneratedkeys="true" keyproperty="userid"

mysql常見的字串處理函式、日期處理函式、系統函式:

trim()  length()

year() month() day() now()

database() version()

完整原文:

mysql left join實際遇到的問題

sql1 select a.b.from zf sys user a left join select from zf user exam info where user id in 1,2,3 and exam id 1 b on a.id b.user id where a.id in 1,2,...

css實際遇到的小問題

1 使用inline block將塊級元素同行顯示,會使li之間有看不見的間隙。比如ul的li設定為inline block後,li之間有看不見的間隙,並且這個間隙不同瀏覽器顯示不同。2 div絕對定位後,裡面的文字如何居中?class banner text 好專案不愁錢,50萬助你創業 安徽農信...

Java面試筆試常遇到的問題

for int j 0 jarray i 1.繼承類不同 a hashmap繼承 abstractmap b hashtable繼承dictionary 2.執行效率不同 a hashmap是非執行緒安全的,是hashtable的輕量級實現,效率較高 b hashtable是執行緒安全的,效率較低 ...