摘要:本文首發(fā)于的博客轉(zhuǎn)載請(qǐng)注明出處基礎(chǔ)抽象類(lèi)和接口的區(qū)別類(lèi)層面上抽象類(lèi)與接口都不能被實(shí)例化抽象類(lèi)只能繼承一個(gè)直接父類(lèi),實(shí)現(xiàn)多個(gè)接口接口能繼承多個(gè)接口抽象類(lèi)大多用作模板類(lèi)使用,接口用于規(guī)范模塊間的行為方法抽象類(lèi)可以用有抽象方法,靜態(tài)方法以及普通方
????本文首發(fā)于cartoon的博客
????轉(zhuǎn)載請(qǐng)注明出處:https://cartoonyu.github.io/c...
抽象類(lèi)和接口的區(qū)別
類(lèi)層面上
抽象類(lèi)與接口都不能被實(shí)例化
抽象類(lèi)只能繼承一個(gè)直接父類(lèi),實(shí)現(xiàn)多個(gè)接口;接口能繼承多個(gè)接口
抽象類(lèi)大多用作模板類(lèi)使用,接口用于規(guī)范模塊間的行為
方法
抽象類(lèi)可以用有抽象方法,靜態(tài)方法以及普通方法;接口只能是抽象方法
抽象類(lèi)中方法作用域跟普通類(lèi)沒(méi)有區(qū)別;接口方法只能是公共的
抽象類(lèi)中可以通過(guò)方法間的相互引用實(shí)現(xiàn)自身邏輯,接口只能通過(guò)子類(lèi)實(shí)現(xiàn)邏輯
抽象類(lèi)可以擁有構(gòu)造器,接口沒(méi)有構(gòu)造器
變量
抽象類(lèi)可以有成員變量與靜態(tài)變量,接口只能有final的靜態(tài)變量
Object類(lèi)有哪些成員方法
wait/notify
clone
hashCode/equals
getClass
finalize
克隆有哪些方法
實(shí)現(xiàn)Cloneable重寫(xiě)clone方法
實(shí)現(xiàn)Serialize接口
Collections有哪些方法
返回線(xiàn)程安全類(lèi)
synchronizedXxx
返回不可變集合
emptyXxx
singletonXxx
unmotifitableXxx
集合間的轉(zhuǎn)換
對(duì)集合內(nèi)元素進(jìn)行操作
添加元素到集合中
addAll
copy
查找元素
binarySearch
frequency
indexOfSubList
shuffle
替換
fill
replaceAll
改變?cè)匚恢?/p>
sort
swap
rotate
reverse
元素對(duì)比
min/max
disJoint
java常見(jiàn)異常類(lèi)
系統(tǒng)級(jí)
IllegalAccessException
OutOfMemoryException
類(lèi)級(jí)
ClassNotFoundException
ClassDefFoundException
對(duì)象級(jí)
NullPointerException
ClassCastException
CloneNotSupportedException
NoSuchFieldException
InstantiationException
方法級(jí)
IllegalArgumentException
NoSuchMethodException
操作級(jí)
數(shù)字
ArithmeticException
NumberFormatException
數(shù)組
ArrayStoreException
IndexOutOfBoundException
IO
IOException
FileNotFoundException
EOFException
數(shù)據(jù)庫(kù)
SQLException
線(xiàn)程
InterruptedException
類(lèi)加載機(jī)制是怎么樣的
步驟
加載
校驗(yàn)
準(zhǔn)備
解析
初始化
使用
卸載
雙親委派模型工作原理
類(lèi)加載器
BootstrapClassLoader
ExtensionClassLoader
ApplicationClassLoader
UserClassLoader
當(dāng)類(lèi)被加載到內(nèi)存時(shí),逐層向上詢(xún)問(wèn)父加載器是否能加載,如果所有父加載器都不能加載,則由當(dāng)前類(lèi)加載器負(fù)責(zé)加載
這樣做的原因能有效保證類(lèi)的唯一性
HashMap的擴(kuò)容機(jī)制
HashMap的擴(kuò)容機(jī)制主要依賴(lài)于三個(gè)元素:capacity(默認(rèn)為16),loadFactory負(fù)載因子,size當(dāng)前元素個(gè)數(shù)
當(dāng)前元素個(gè)數(shù)大于8時(shí),內(nèi)部數(shù)組自動(dòng)轉(zhuǎn)換為紅黑樹(shù)進(jìn)行存儲(chǔ)
當(dāng)前元素個(gè)數(shù)大于初始容量x負(fù)載因子時(shí),數(shù)組擴(kuò)容兩倍,且內(nèi)部元素的位置重新進(jìn)行哈希
當(dāng)前元素個(gè)數(shù)小于初始容量的0.1倍時(shí),數(shù)組縮小一半,同樣元素位置需要重新哈希
ArrayList擴(kuò)容機(jī)制
ArrayList擴(kuò)容主要依賴(lài)于size(當(dāng)前元素個(gè)數(shù))以及capacity(默認(rèn)10)的對(duì)比
當(dāng)元素填滿(mǎn)當(dāng)前數(shù)組(capacity=size),將capacity擴(kuò)容到現(xiàn)在的1.5倍,若計(jì)算后元素大于Integer.MAX_VALUE時(shí),拋出OOM
ArrayList與LinkedList區(qū)別
ArrayList內(nèi)部為數(shù)組,LinkedList內(nèi)部為雙向鏈表
新增元素
ArrayList涉及到數(shù)組擴(kuò)容(或者伴隨著arrayCopy)
LinkedList修改指針指向(或者伴隨著遍歷操作)
刪除元素
ArrayList需要進(jìn)行arrayCopy
LinkedList遍歷鏈表并修改指針指向
ArrayList大小受Integer.MAX_VALUE影響,LinkedList大小理論上無(wú)限(受JVM調(diào)用最大內(nèi)存影響)
ArrayList在插入元素時(shí)需要考慮當(dāng)前容量以及進(jìn)行arrayCopy操作,LinkedList插入不需要有額外操作
Array與ArrayList區(qū)別
存儲(chǔ)類(lèi)型
Array:基本數(shù)據(jù)類(lèi)型以及對(duì)象
ArrayList:只能對(duì)象
大小限制
Array:在定義時(shí)指定,無(wú)法增大或縮小
ArrayList:定義時(shí)可不指定(初始為10),可以擴(kuò)容
插入元素
Array:插入基本數(shù)據(jù)類(lèi)型元素不涉及裝拆箱操作
ArrayList:涉及裝拆箱操作
Queue中poll與remove區(qū)別
poll與remove都是取出隊(duì)頭元素
隊(duì)列不為空時(shí),兩個(gè)方法結(jié)果是一樣的
隊(duì)列為空
poll返回null
remove拋出NoSuchElementException
線(xiàn)程不同步集合如何轉(zhuǎn)換成線(xiàn)程同步集合
通過(guò)Collections工具類(lèi)返回
鎖為讀寫(xiě)鎖,鎖的粒度為對(duì)象級(jí)
通過(guò)java.util.Concurrent進(jìn)行包裝
鎖為寫(xiě)鎖,鎖的粒度為元素級(jí)
通常都是用Concurrent進(jìn)行包裝
JVM
垃圾回收算法
標(biāo)記-清除
標(biāo)記不清理對(duì)象,清理未標(biāo)記對(duì)象
速度快,但是會(huì)造成內(nèi)存碎片
復(fù)制
將內(nèi)存劃分兩塊區(qū)域:清理區(qū)與存活區(qū)
將不清理對(duì)象移到存活區(qū),刪除清理區(qū)的所有對(duì)象
空間浪費(fèi)大
標(biāo)記-整理
標(biāo)記不清理對(duì)象,清理未標(biāo)記對(duì)象
移動(dòng)整理存活對(duì)象
成本高,但是有效解決內(nèi)存碎片問(wèn)題
G1工作流程
初始標(biāo)記(停頓線(xiàn)程)
標(biāo)記GC Root直接關(guān)聯(lián)對(duì)象
并發(fā)標(biāo)記
從GC Root對(duì)堆中對(duì)象進(jìn)行可達(dá)性分析
最終標(biāo)記(停頓線(xiàn)程)
并行將Remembered Set Logs的數(shù)據(jù)合并到Remembered Set中
篩選回收
根據(jù)各Region的回收價(jià)值和成本進(jìn)行回收計(jì)劃的制定
Spring
Spring中有哪些模塊
Spring Core(Spring 核心庫(kù))
Spring AOP
Spring ORM
Spring Dao
Spring Web
Spring Context
Spring Web MVC
Spring MVC的處理流程
請(qǐng)求通過(guò)DispatchServlet處理
普通邏輯處理交由Controller處理,Controller處理后返回model
視圖處理,DispatchServlet調(diào)用View temlate進(jìn)行視圖返回
AOP概念
AOP面向切面編程,它將原本縱向的程序看作成一個(gè)個(gè)切面的組合,是OOP的補(bǔ)充
動(dòng)態(tài)插入執(zhí)行邏輯到原有執(zhí)行流程中
通知(Advice):具體實(shí)現(xiàn)邏輯
連接點(diǎn)(JoinPoint):使用通知的位置
切入點(diǎn)(PointCut):指定使用通知的連接點(diǎn)位置
切面(Aspect):通知與切入點(diǎn)集合
引入(introduction):添加新方法屬性到現(xiàn)有類(lèi)中
目標(biāo)(target):被通知的對(duì)象
代理(proxy)
靜態(tài)代理
動(dòng)態(tài)代理
織入(weaving):將切面引用到目標(biāo)對(duì)象生成代理對(duì)象的過(guò)程
Spring bean的作用域
singleton(默認(rèn))
prototype
request
session
globalSession
數(shù)據(jù)庫(kù)
MyBatis中#與$區(qū)別
傳入數(shù)據(jù)
:當(dāng)作字符串傳入sql,相當(dāng)于PrepareStatement
$:直接將參數(shù)傳入sql,相當(dāng)于Statement
安全性
可以防止sql注入,$不能
事務(wù)的四個(gè)特性
一致性
事務(wù)執(zhí)行前后都是一致的
原子性
事務(wù)中操作結(jié)果都是一樣的
隔離性
事務(wù)間的操作是相互隔離的
持久性
事務(wù)的執(zhí)行結(jié)果是永久性的
char與varchar區(qū)別
char的長(zhǎng)度是固定的,varchar的長(zhǎng)度是不固定的
char會(huì)用空格填充到指定長(zhǎng)度,varchar不會(huì)
char類(lèi)型數(shù)據(jù)后面空格會(huì)被刪除,varchar不會(huì)
char的檢索效率比varchar高
邏輯分頁(yè)與物理分頁(yè)
邏輯分頁(yè)會(huì)將全部數(shù)據(jù)加載到內(nèi)存中,再利用代碼邏輯返回分頁(yè)結(jié)果
物理分頁(yè)是在數(shù)據(jù)庫(kù)層面進(jìn)行分頁(yè)
MyBatis的分頁(yè)方式
數(shù)組分頁(yè)
sql分頁(yè)
攔截器分頁(yè)
RowBounds分頁(yè)
數(shù)據(jù)庫(kù)三范式
第一范式
屬性已經(jīng)是不能分割的數(shù)據(jù)單位
第二范式
所有非主屬性完全依賴(lài)于候選屬性
第三范式
不存在傳遞依賴(lài)候選屬性
內(nèi)連接外連接區(qū)別
內(nèi)連接只返回符合條件的共有記錄
外連接會(huì)返回表的所有記錄,插入符合條件的列
操作系統(tǒng)
線(xiàn)程與進(jìn)程的區(qū)別
進(jìn)程是操作系統(tǒng)分配資源時(shí)間的最小單位,線(xiàn)程是進(jìn)程內(nèi)部調(diào)用的實(shí)體
不同進(jìn)程擁有操作系統(tǒng)分配的不同地址空間,同一進(jìn)程的不同線(xiàn)程共享父進(jìn)程的內(nèi)存地址
進(jìn)程的資源與空間由操作系統(tǒng)分配,線(xiàn)程資源與空間由進(jìn)程分配
進(jìn)程切換開(kāi)銷(xiāo)比線(xiàn)程大
進(jìn)程崩潰不會(huì)造成對(duì)其他進(jìn)程的影響;線(xiàn)程崩潰造成父進(jìn)程的死亡
進(jìn)程擁有一個(gè)程序運(yùn)行的入口,線(xiàn)程依附進(jìn)程生存
網(wǎng)絡(luò)
http方法有哪些
方法
get
post
delete
put
options
connect
trace
link
unline
head
get與post的區(qū)別
冪等
get為冪等操作,post為非冪等操作
數(shù)據(jù)傳輸
get的數(shù)據(jù)通過(guò)url進(jìn)行傳輸,post數(shù)據(jù)通過(guò)http報(bào)文傳輸
get數(shù)據(jù)大小受url長(zhǎng)度限制,post不受限制
可緩存
get數(shù)據(jù)可緩存,post數(shù)據(jù)不可緩存
http報(bào)文
get的報(bào)文沒(méi)有實(shí)體,post的報(bào)文有實(shí)體
forward與redirect區(qū)別
行為方
forward是瀏覽器行為
redirect是服務(wù)器行為
url是否改變
forward url不變
redirect url改變
資源消耗
forward的資源消耗比redirect小
數(shù)據(jù)共享
redirect不共享數(shù)據(jù),forward可以共享request數(shù)據(jù)
效率
forward高
redirect低
TCP三次握手
一次握手(客戶(hù)端發(fā)起)
創(chuàng)建TCB
發(fā)送SYN=1,seq=x
進(jìn)入SYN-SENT
二次握手(服務(wù)器發(fā)起)
發(fā)送ACK=1,syn=1,ack=y+1,seq=x+1
進(jìn)入SYN-RCVD
三次握手(客戶(hù)端發(fā)起)
發(fā)送ACK=1,seq=x+1,ack=x+1
進(jìn)入ESTABLISHED
UDP與TCP區(qū)別
TCP面向連接,UDP不面向連接
TCP有擁塞控制,UDP沒(méi)有擁塞控制
TCP資源開(kāi)銷(xiāo)大,UDP資源開(kāi)銷(xiāo)小
TCP只支持一對(duì)一,UDP支持一對(duì)多
TCP提供可靠傳輸,UDP盡可能交付
TCP面向字節(jié)流,UDP面向報(bào)文
設(shè)計(jì)模式
單例模式實(shí)現(xiàn)的三種方法
https://www.cnblogs.com/ngy02...
靜態(tài)內(nèi)部類(lèi)
懶漢式
雙重檢查式
BIO NIO AIO
BIO
同步阻塞
線(xiàn)程阻塞進(jìn)行運(yùn)算后返回結(jié)果
NIO
同步非阻塞
請(qǐng)求共用一個(gè)線(xiàn)程進(jìn)行處理
線(xiàn)程會(huì)直接返回結(jié)果到請(qǐng)求
AIO
異步非阻塞
線(xiàn)程處理后會(huì)通過(guò)回調(diào)返回結(jié)果
反射
JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;
動(dòng)態(tài)代理以及靜態(tài)代理
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75464.html
摘要:然而,異步函數(shù)不會(huì)立即被推入調(diào)用堆棧,而是會(huì)被推入任務(wù)隊(duì)列,并在調(diào)用堆棧為空后執(zhí)行。將事件從任務(wù)隊(duì)列傳輸?shù)秸{(diào)用堆棧稱(chēng)為事件循環(huán)。我們調(diào)用接受和或返回另一個(gè)函數(shù)稱(chēng)為高階函數(shù)的函數(shù)。 為了保證可讀性,本文采用意譯而非直譯 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 1.如何理解 JS 中的this關(guān)鍵字? JS 初學(xué)者總是對(duì) this 關(guān)鍵字感到困惑,因?yàn)榕c其他現(xiàn)...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開(kāi)發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開(kāi)發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
閱讀 1049·2021-11-22 15:35
閱讀 1685·2021-10-26 09:49
閱讀 3230·2021-09-02 15:11
閱讀 2074·2019-08-30 15:53
閱讀 2635·2019-08-30 15:53
閱讀 2916·2019-08-30 14:11
閱讀 3527·2019-08-30 12:59
閱讀 3240·2019-08-30 12:53