成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JAVA面試題(43)

Zachary / 1780人閱讀

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

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

java

對synchronized的了解

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

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

作用范圍

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

靜態(tài)方法,鎖的粒度為當前類的class對象

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

多線程的同步機制

使用同步代碼塊synchronized

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

通過Condition以及l(fā)ock對資源的鎖定以及釋放

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

threadLocal的概念以及使用場景

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

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

初始容量為16

負載因子為2/3

通過再hash法解決hash沖突

final,finally,finalize的區(qū)別

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

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

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

java注解的作用

生成文檔

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

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

java集合間的區(qū)別

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

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

BIO NIO AIO的區(qū)別

BIO

同步阻塞

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

NIO

同步非阻塞

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

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

AIO

異步非阻塞

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

java反射機制的理解

作用

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

在程序運行時,動態(tài)改變對象屬性

動態(tài)代理以及靜態(tài)代理

jvm

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

引用計數法

可達性分析算法(GC ROOT)

java內存區(qū)域劃分

運行時數據區(qū)域

線程共享

方法區(qū)

線程隔離區(qū)

虛擬機棧

本地方法棧

程序計數器

數據庫

MyBatis分頁方式以及區(qū)別

邏輯分頁

數組分頁

RowBounds分頁

物理分頁

sql分頁

攔截器分頁

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

特性

原子性(Atomicity)

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

一致性(Consistency)

事務執(zhí)行前后數據庫狀態(tài)不受影響

隔離性(Isolation)

事務間操作相互獨立

持久性

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

隔離級別

read uncommitted

讀取事務未提交的數據

read commited

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

repeatable

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

serializable

事務的順序執(zhí)行

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

string

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

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

hash

壓縮列表(數據量較小)

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

散列表

鏈地址法解決沖突

set

有序數組

數據都是整數

元素個數不超過512個

散列表

list

壓縮列表

雙循環(huán)鏈表

所有數據大小小于64字節(jié)

數據個數小于128個

有序集合

壓縮列表

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

雙循環(huán)鏈表

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

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

解決方法

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

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

大量key設置統(tǒng)一過期時間,造成瞬間DB訪問量過大

解決方法

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

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

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

解決方法

設置短期key替代原始key

key再生成后刪除短期key

spring

AOP,IOC的概念

AOP

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

動態(tài)插入執(zhí)行邏輯到原有執(zhí)行流程中

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

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

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

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

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

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

代理(proxy)

靜態(tài)代理

動態(tài)代理

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

IOC

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

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

Spring bean的作用域

singleton

prototype

session

request

global session

Spring bean是線程安全嗎?

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

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

spring mvc的執(zhí)行流程

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

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

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

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

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

網絡

Session與cookie的區(qū)別

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

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

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

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

session的工作原理

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

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

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

沒有的話,創(chuàng)建新session并返回對應sessionId到客戶端

TCP與UDP區(qū)別

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

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

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

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

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

TCP面向字節(jié)流,UDP面向報文

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

原因

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

解決方法

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

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

tcp的三次握手與四次揮手

三次握手(連接過程)

一次握手(客戶端發(fā)起)

創(chuàng)建TCB

發(fā)送SYN=1,seq=x

進入SYN-SENT

二次握手(服務器發(fā)起)

發(fā)送ACK=1,syn=1,ack=y+1,seq=x+1

進入SYN-RCVD

三次握手(客戶端發(fā)起)

發(fā)送ACK=1,seq=x+1,ack=x+1

進入ESTABLISHED

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

一次揮手

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

客戶端進入FIN-SENT-1狀態(tài)

二次揮手

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

服務器端進入CLOSE_WAIT

客戶端進入FIN-SENT-2狀態(tài)

三次揮手

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

服務器端進入LAST_ACK狀態(tài)

四次揮手

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

客戶端進入TIME_WAIT狀態(tài),等待2MSL后關閉連接

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

設計模式

抽象工廠與簡單工廠的區(qū)別

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

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

算法

快速排序實現

主要采用分治的思想

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

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

循環(huán)遍歷左指針直到元素大于右指針指向的元素

交換左右指針的元素值

循環(huán)遍歷右指針直到元素小于小指針指向的元素

交換左右指針的元素值

返回左指針的值作為中線

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

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

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

相關文章

  • [譯]送你43JavaScript面試

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

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

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

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

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

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

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

    muzhuyu 評論0 收藏0

發(fā)表評論

0條評論

Zachary

|高級講師

TA的文章

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