国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JAVA面試題(43)

Zachary / 1760人閱讀

摘要:在平時實際開發中,我通常使用向上轉型的對象完成業務邏輯,這樣我覺得能使對象中的耦合度降低,而且在代碼重構的時候能夠輕易切換實現類。

????本文首發于cartoon的博客
????轉載請注明出處:https://cartoonyu.github.io/c...

java

對synchronized的了解

java的一個關鍵字,用于重量級鎖的設定

利用synchronized關鍵字,可以實現對互斥資源的訪問

作用范圍

普通方法,鎖的粒度為當前對象

靜態方法,鎖的粒度為當前類的class對象

代碼塊,鎖的粒度為括號內使用的對象

多線程的同步機制

使用同步代碼塊synchronized

通過標志位輪詢訪問臨界資源

通過Condition以及lock對資源的鎖定以及釋放

通過阻塞隊列BlockQueue(生產者/消費者)

threadLocal的概念以及使用場景

每個線程都能擁有該變量的獨立副本

內部通過ThreadLocalMap進行值的存儲以及讀取

初始容量為16

負載因子為2/3

通過再hash法解決hash沖突

final,finally,finalize的區別

final為不可變修飾詞,用于聲明屬性,方法或類不可變

finally為異常捕獲機制一部分,總是會被執行。若try或catch有return語句,finally早于此return語句執行

finalize為Object方法,調用此方法可以實現資源的回收,但是回收時間由JVM決定

java注解的作用

生成文檔

完成特定的標識(@Service等)

在編譯時進行格式檢查(@Override)

java集合間的區別

set與list都只含單個元素,而Map含有key-value對

Map將entry數組置為null,就是set,所以set內元素是無序的,list元素是有序的

BIO NIO AIO的區別

BIO

同步阻塞

線程阻塞進行運算后返回結果

NIO

同步非阻塞

請求共用一個線程進行處理

線程會直接返回結果到請求

AIO

異步非阻塞

線程處理后會通過回調返回結果

java反射機制的理解

作用

在程序運行中,動態獲取對象所屬類,屬性以及方法等信息

在程序運行時,動態改變對象屬性

動態代理以及靜態代理

jvm

怎么判斷對象是否可回收?

引用計數法

可達性分析算法(GC ROOT)

java內存區域劃分

運行時數據區域

線程共享

方法區

線程隔離區

虛擬機棧

本地方法棧

程序計數器

數據庫

MyBatis分頁方式以及區別

邏輯分頁

數組分頁

RowBounds分頁

物理分頁

sql分頁

攔截器分頁

數據庫事務特性以及隔離級別

特性

原子性(Atomicity)

事務執行結果是一致的,成功或者回滾

一致性(Consistency)

事務執行前后數據庫狀態不受影響

隔離性(Isolation)

事務間操作相互獨立

持久性

事務執行產生的結果是永久存儲下來的

隔離級別

read uncommitted

讀取事務未提交的數據

read commited

多次查詢某一數據結果不一致

repeatable

同時修改同一元素造成事務提交結果發生偏差

serializable

事務的順序執行

redis的數據類型以及底層數據結構

string

通過DDS(簡單的動態字符串)實現

DDS的實現通過雙端鏈表實現

hash

壓縮列表(數據量較小)

key-value對少于512個且所有鍵對大小都要小于64字節

散列表

鏈地址法解決沖突

set

有序數組

數據都是整數

元素個數不超過512個

散列表

list

壓縮列表

雙循環鏈表

所有數據大小小于64字節

數據個數小于128個

有序集合

壓縮列表

類似于數組,存儲空間是連續的,但是元素所占空間不唯一

雙循環鏈表

緩存穿透的概念,解決方法

緩存穿透是指請求訪問不存在的key,請求穿透到DB,流量大會造成DB崩潰

解決方法

采用布隆過濾器或者BitMap對請求進行過濾

緩存雪崩的概念,解決方法

大量key設置統一過期時間,造成瞬間DB訪問量過大

解決方法

key的過期時間用隨機數進行設置

緩存擊穿的概念,解決方法

存在key在緩存失效的瞬間被大量請求訪問,造成DB請求量大

解決方法

設置短期key替代原始key

key再生成后刪除短期key

spring

AOP,IOC的概念

AOP

AOP面向切面編程,它將原本縱向的程序看作成一個個切面的組合,是OOP的補充

動態插入執行邏輯到原有執行流程中

通知(Advice):具體實現邏輯

連接點(JoinPoint):使用通知的位置

切入點(PointCut):指定使用通知的連接點位置

切面(Aspect):通知與切入點集合

引入(introduction):添加新方法屬性到現有類中

目標(target):被通知的對象

代理(proxy)

靜態代理

動態代理

織入(weaving):將切面引用到目標對象生成代理對象的過程

IOC

我把IOC稱作為控制反轉或者依賴注入,IOC是Spring的核心思想,它使調用者不用管理對象的生存周期以及具體實現,能夠更加注重于業務邏輯的實現。

在平時實際開發中,我通常使用向上轉型的對象完成業務邏輯,這樣我覺得能使對象中的耦合度降低,而且在代碼重構的時候能夠輕易切換實現類。

Spring bean的作用域

singleton

prototype

session

request

global session

Spring bean是線程安全嗎?

prototype,request每次被調用都會創建新對象,不存在線程問題

singleton,session,globalSession會造成線程間競爭,無狀態bean是線程安全的,有狀態beanSpring通過ThreadLocal進行解決

spring mvc的執行流程

請求通過http到達后端,由DispatcherServlet進行分發

DispatchServlet通過HandlerMapping查找處理的Controller,中間或者會有過濾器等進行處理

如果在查找過程中發生錯誤,HandlerExceptionResolver會返回一個HandlerExecutionChain對象到DispathchServlet

請求正確分發到Controller,Controller調用Service以及Repository等進行處理,調用RequestAndViewNameResolver處理后返回ModelAndView對象到DispatchServlet

DispatchServlet根據返回的ModelAndView對象,將對象交給ViewResolver組件進行視圖的渲染,如果在語言上有特殊要求,渲染會調用LocaleResolver以及ThemeResolver進行國際化的適配

網絡

Session與cookie的區別

cookie存儲在客戶端,session存儲在服務器

cookie只能存儲字符串,session可以存儲任意對象

cookie的存儲大小受客戶端影響,大小為4KB,session存儲大小不受影響

后端獲取cookie通過http報文中的cookie字段獲取,session則通過cookie中的sessionId標識尋找

session的工作原理

session是存儲在服務器端的一種標識客戶端的數據結構

用戶請求到達后臺,后臺檢測是否有sessionId字段的存在

有的話,校驗字段是否合法

沒有的話,創建新session并返回對應sessionId到客戶端

TCP與UDP區別

TCP面向連接,UDP不面向連接

TCP有擁塞控制,UDP沒有擁塞控制

TCP資源開銷大,UDP資源開銷小

TCP只支持一對一,UDP支持一對多

TCP提供可靠傳輸,UDP盡可能交付

TCP面向字節流,UDP面向報文

tcp粘包的原因以及解決辦法

原因

不同數據包在到達接收方時首尾部粘在一起

解決方法

在每個tcp報文首部添加報文長度

在報文的首部或者尾部設置特殊的符號位標識

tcp的三次握手與四次揮手

三次握手(連接過程)

一次握手(客戶端發起)

創建TCB

發送SYN=1,seq=x

進入SYN-SENT

二次握手(服務器發起)

發送ACK=1,syn=1,ack=y+1,seq=x+1

進入SYN-RCVD

三次握手(客戶端發起)

發送ACK=1,seq=x+1,ack=x+1

進入ESTABLISHED

四次揮手(結束連接過程)

一次揮手

客戶端發送FIN=1,seq=u為內容的請求報文

客戶端進入FIN-SENT-1狀態

二次揮手

服務器端發送ACK=1,seq=v,ack=u+1為內容的確認報文

服務器端進入CLOSE_WAIT

客戶端進入FIN-SENT-2狀態

三次揮手

服務器端發送FIN=1,seq=w,ACK=1,ack=u+1為內容的釋放報文

服務器端進入LAST_ACK狀態

四次揮手

客戶端發送ACK=1,ack=w+1,seq=u+1為內容的確認報文

客戶端進入TIME_WAIT狀態,等待2MSL后關閉連接

服務器端接受報文后關閉連接

設計模式

抽象工廠與簡單工廠的區別

抽象工廠定義創建產品的大概流程,子工廠通過繼承抽象工廠負責具體產品的創建,產品種類的增加不需要改變抽象工廠的代碼邏輯

簡單工廠負責具體產品的創建,產品種類的增加需要改變創建的邏輯

算法

快速排序實現

主要采用分治的思想

定義左右指針遍歷元素(左右指針的初始值為邊界)

循環遍歷數組(左指針小于右指針)

循環遍歷左指針直到元素大于右指針指向的元素

交換左右指針的元素值

循環遍歷右指針直到元素小于小指針指向的元素

交換左右指針的元素值

返回左指針的值作為中線

分別遞歸中線左右,依據2,3的步驟進行處理

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75496.html

相關文章

  • [譯]送你43JavaScript面試

    摘要:導讀這兩天的被一個名叫的項目霸榜了,項目中記錄了一些題目。建議大家也花半個小時來做一做,以便查漏補缺。為方便大家能夠更快的做題,而不把時間浪費在翻譯上,我又花了幾個小時把它們翻譯成了中文,當然已經獲得了作者授權。 導讀 showImg(https://segmentfault.com/img/remote/1460000019496110?w=1514&h=452); 這兩天的GitH...

    tommego 評論0 收藏0
  • 前端面試總結(js、html、小程序、React、ES6、Vue、算法、全棧熱門視頻資源)

    摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...

    pumpkin9 評論0 收藏0
  • 前端面試總結(js、html、小程序、React、ES6、Vue、算法、全棧熱門視頻資源)

    摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...

    Carson 評論0 收藏0
  • 前端面試總結(js、html、小程序、React、ES6、Vue、算法、全棧熱門視頻資源)

    摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...

    muzhuyu 評論0 收藏0

發表評論

0條評論

Zachary

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<