復(fù)習(xí)

java相關(guān):面試中關(guān)于Java你所需知道的的一切

一:架構(gòu)方面

1媳危、模塊化組件化開發(fā)架構(gòu)

一開始使用比較簡(jiǎn)單的架構(gòu) 禀苦,界面->邏輯層->工具包層既荚,后面改為分業(yè)務(wù)模塊->工具包贴唇,但是業(yè)務(wù)模塊之間存在大量耦合〔笮澹現(xiàn)在將業(yè)務(wù)模塊再具體劃分飞袋,比如購物流程模塊,地址選擇管理模塊豌熄,消息模塊授嘀。自己寫的router,沒有用注解锣险,沒有依賴注入蹄皱,寫了大量的映射和接口注冊(cè)。借鑒阿里的Arouter[Alibaba-ARouter] 新版本解讀與控制反轉(zhuǎn)在移動(dòng)端的應(yīng)用

Android開發(fā):由模塊化到組件化

Arouter:自定義注解

采用arr方式解決重復(fù)依賴

采用新的網(wǎng)絡(luò)請(qǐng)求框架Retrofit+OkHttp芯肤,新的圖片及下載框架,okhttp巷折,規(guī)范了接口定義以及數(shù)據(jù)加密等。

當(dāng)然崖咨,我們還做了很多的新的嘗試锻拘,RecycleView替換了ListView,狀態(tài)欄Immersive Mode設(shè)計(jì)击蹲,組件化開發(fā)的嘗試署拟,App功能動(dòng)態(tài)化配置,通用自定義控件設(shè)計(jì)以及國際化設(shè)配等歌豺。

ARouter的優(yōu)勢(shì):

編譯器處理注解產(chǎn)生映射文件推穷,運(yùn)行期加載映射文件實(shí)現(xiàn)路由

Bootstrapping、Extensibility以及Simple & Enough

編譯期間:頁面自動(dòng)注冊(cè)—注解&注解處理器

運(yùn)行期間:動(dòng)態(tài)加載—–分組管理类咧,按需加載

全局?jǐn)r截器

依賴注入

運(yùn)行期動(dòng)態(tài)修改路由

降級(jí)問題

2馒铃、hybrid架構(gòu)

① NativeUI組件,header組件痕惋、消息類組件

② 通訊錄区宇、系統(tǒng)、設(shè)備信息讀取接口

③ H5與Native的互相跳轉(zhuǎn)值戳,比如H5如何跳到一個(gè)Native頁面议谷,H5如何新開Webview做動(dòng)畫跳到另一個(gè)H5頁面

4、數(shù)據(jù)請(qǐng)求堕虹,數(shù)據(jù)操作的接口柿隙,工具包之類

android中通信方式:

1、傳統(tǒng)的JavascriptInterface鲫凶,setJavaScriptEnabled呀小心xss攻擊禀崖,4.2已修復(fù)

2、JSbridge螟炫,定義一套協(xié)議

3波附、代碼重構(gòu)的經(jīng)驗(yàn)

首先講述自己的工程架構(gòu)演變,由普通依賴到模塊化組件化,路由結(jié)構(gòu)掸屡,通信原理封寞,怎樣解耦。然后問面試官對(duì)中小型公司自己這一套改進(jìn)有沒有什么建議仅财,引用RXjava這類開源框架狈究。提到自己對(duì)知識(shí)的渴望,然而在小公司人員不足和業(yè)務(wù)量不龐大的情況體驗(yàn)不到它的好處盏求,特別想進(jìn)大的平臺(tái)加深自己對(duì)整個(gè)架構(gòu)的優(yōu)點(diǎn)的深入理解抖锥。

4、AOP OOP

面向切面(從左到右的關(guān)系碎罚,將那些與業(yè)務(wù)無關(guān)磅废,卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任封裝到一個(gè)可重用模塊,并將其名為“Aspect”)荆烈。Android中應(yīng)用:網(wǎng)絡(luò)請(qǐng)求拯勉,圖片操作,數(shù)據(jù)解析憔购,文件操作宫峦,Log,格式轉(zhuǎn)換等共用型Util包玫鸟。

面向?qū)ο螅鹤⒅厣舷聦佣范簦庋b、繼承和多態(tài)性等概念來建立一種對(duì)象層次結(jié)構(gòu)鞋邑,允許你定義從上到下的關(guān)系,但并不適合定義從左到右的關(guān)系

二:性能優(yōu)化和內(nèi)存優(yōu)化具體經(jīng)驗(yàn)

Runtime.getRuntime().maxMemory()最大可分配內(nèi)存

Runtime.getRuntime().freeMemory()當(dāng)前空閑內(nèi)存

Runtime.getRuntime().totalMemory()當(dāng)前占用內(nèi)存

內(nèi)存檢測(cè)工具M(jìn)emoMonitor账蓉,android device monitor

優(yōu)化:

數(shù)據(jù)結(jié)構(gòu)的優(yōu)化(1枚碗、StringBuilder拼接;2铸本、SparseArray(2個(gè)數(shù)組肮雨,int型的Key數(shù)組,value數(shù)組)、ArrayMap(hash值的Key數(shù)組箱玷,keyvalue成對(duì)的數(shù)組)(添加怨规、刪除、查找數(shù)據(jù)的時(shí)候都是先使用二分查找法得到相應(yīng)的index)代替HashMap锡足,HashMap初始就會(huì)創(chuàng)建容量為16的數(shù)組波丰,而且每次都是以2倍的容量遞增,SparseArray舶得、ArrayMap掰烟;3、內(nèi)存抖動(dòng);4纫骑、使用parcelable代替serializebal,serializebal會(huì)產(chǎn)生大量臨時(shí)變量引起GC)

對(duì)象復(fù)用:列表布局里單Item的復(fù)用蝎亚,避免在ondraw里進(jìn)行對(duì)象的創(chuàng)建

避免內(nèi)存泄露:內(nèi)存泄漏會(huì)導(dǎo)致heap可用內(nèi)存越來越少,這時(shí)當(dāng)有一個(gè)稍大的內(nèi)存占用先馆,很可能會(huì)造成OOM发框,還有一點(diǎn)它會(huì)讓GC頻繁的觸發(fā)造成內(nèi)存抖動(dòng)。造成內(nèi)存泄漏的一些點(diǎn):?jiǎn)卫褂昧薱ontext(使用applicationcontext)煤墙,匿名內(nèi)部類梅惯,handler,static變量,資源未關(guān)閉(io流番捂,cursor使用了一定要及時(shí)關(guān)閉)个唧,asyntask,耗時(shí)操作可以考慮使用service

OOM優(yōu)化:大部分是圖片造成的设预。使用軟引用弱引用徙歼;臨死bitmap的及時(shí)回收;某些大內(nèi)存分配時(shí)可以使用try/catch鳖枕,即使失敗了也不會(huì)崩潰魄梯;加載bitmap時(shí)注意(縮放比例、解碼格式ARGB_4444宾符、局部加載)酿秸,LUR cache

三:用到的開源框架原理

okhttp原理:

首先使用建造者模式構(gòu)建request,然后經(jīng)過一系列攔截器(包括跟服務(wù)器橋接的響應(yīng)BridgeInterapter,CacheInterapter,ConnectInterapter,Callserver),攔截器連成了一條鏈InterappetChain.底層用了okio連接魏烫,socket辣苏。異步請(qǐng)求做了一個(gè)線程池的封裝。

多路復(fù)用機(jī)制(nextconnection從connection池里獲取到的話哄褒,就復(fù)用稀蟋,獲取不到才create),重連機(jī)制(判斷是否能onresponce呐赡,獲取不到則recovery,循環(huán))

支持HTTP2/SPDY黑科技

socket自動(dòng)選擇最好路線退客,并支持自動(dòng)重連

擁有自動(dòng)維護(hù)的socket連接池,減少握手次數(shù)

擁有隊(duì)列線程池链嘀,輕松寫并發(fā)

擁有Interceptors輕松處理請(qǐng)求與響應(yīng)(比如透明GZIP壓縮,LOGGING)

實(shí)現(xiàn)基于Headers的緩存策略

volley原理萌狂,

glide原理

glide .with(context):所有request請(qǐng)求是通過requestmanagerrechiver這個(gè)類把requestmanager綁定到activity或fragment類。創(chuàng)建了一個(gè)fragment把requestmanager傳給fragmengt怀泊,與activity生命周期綁定

.load(url) : 創(chuàng)建DrawableTypeRequest茫藏,添加一系列條件初始化

.into里面將imageview與lifecycle生命周期關(guān)聯(lián)了起來,里面的核心是一個(gè)引擎類Engine,里面有個(gè)Load霹琼,先從緩存中讀取刷允,Engine中包含LruCache緩存及一個(gè)當(dāng)前正在使用的active資源Cache(弱引用)冤留,Cache優(yōu)先級(jí)LruCache>activeCache,從LruCache取出使用了則會(huì)放到activeCache树灶,緩存沒有則通過線程池去獲取圖片纤怒,Engine在初始化時(shí)要傳入兩個(gè)ExecutorService,即會(huì)有兩個(gè)線程池天通,一個(gè)用來從DiskCache獲取resource泊窘,另一個(gè)用來從Source中獲取(通常是下載)像寒。先進(jìn)入DiskCacheService中執(zhí)行獲取烘豹,如果沒找到則進(jìn)入SourceState,進(jìn)到SourceService中執(zhí)行下載诺祸。

Glide的Target:

負(fù)責(zé)圖片加載的回調(diào)中

4.4以前是Bitmap復(fù)用必須長寬相等才可以復(fù)用

4.4及以后是Size>=所需就可以復(fù)用携悯,只不過需要調(diào)用reconfigure來調(diào)整尺寸

Glide用AttributeStategy和SizeStrategy來實(shí)現(xiàn)兩種策略

圖片池在收到傳來的Bitmap之后,通過長寬或者Size來從KeyPool中獲取Key(對(duì)象復(fù)用到了極致筷笨,連Key都用到了Pool)憔鬼,然后再每個(gè)Key對(duì)應(yīng)一個(gè)雙向鏈表結(jié)構(gòu)來存儲(chǔ)。每個(gè)Key下可能有很多個(gè)待用Bitmap

取出后要減少圖片池中記錄的當(dāng)前Size等胃夏,并對(duì)Bitmap進(jìn)行eraseColor(Color.TRANSPAENT)操作確敝峄颍可用

butterknife原理

四:Framework層常用模塊原理

AMS和WMS原理

audioflinger原理,

整個(gè)音頻系統(tǒng)的核心與難點(diǎn)仰禀,啟到承上(為上層提供訪問接口)啟下(通過HAL來管理音頻設(shè)備)的作用照雁。

audiotrack原理,

播放聲音答恶,2種模式饺蚊,AudioTrack中有MODE_STATIC和MODE_STREAM兩種分類。STREAM的意思是由用戶在應(yīng)用程序通過write方式把數(shù)據(jù)一次一次得寫到audiotrack中悬嗓。這個(gè)和我們?cè)趕ocket中發(fā)送數(shù)據(jù)一樣污呼,應(yīng)用層從某個(gè)地方獲取數(shù)據(jù),例如通過編解碼得到PCM數(shù)據(jù)烫扼,然后write到audiotrack。

這種方式的壞處就是總是在JAVA層和Native層交互碍庵,效率損失較大映企。

而STATIC的意思是一開始創(chuàng)建的時(shí)候,就把音頻數(shù)據(jù)放到一個(gè)固定的buffer静浴,然后直接傳給audiotrack堰氓,后續(xù)就不用一次次得write了。AudioTrack會(huì)自己播放這個(gè)buffer中的數(shù)據(jù)苹享。

這種方法對(duì)于鈴聲等內(nèi)存占用較小双絮,延時(shí)要求較高的聲音來說很適用浴麻。

vold框架原理,

1,有一個(gè)netlinkmanager接收來自Linux內(nèi)核的uevent消息囤攀,例如sd卡的插拔會(huì)引起kernel向NM發(fā)送uevent消息,

2软免,netlinkmanager將這些消息轉(zhuǎn)發(fā)給volumeManager,volumeManager做一些操作后將消息通過CommandListener發(fā)送給MountService.MountService收到消息后做進(jìn)一步處理。比如volumeManager----disk insert-----MountService----Mount----Vold,表示掛載這個(gè)SD卡

4焚挠,CommandListener內(nèi)部封裝了一個(gè)socket用于跨進(jìn)程通信膏萧,在vold進(jìn)程中屬于服務(wù)端,接收來自mountservice的控制命令蝌衔,同時(shí)volumeManager和netlinkmanager又通過它發(fā)送消息給MountService

dhcp協(xié)議

binder原理:

傳統(tǒng)·IPC·:需要做兩次拷貝:用戶空間->內(nèi)核空間->用戶空間

binder:由Binder驅(qū)動(dòng)負(fù)責(zé)管理數(shù)據(jù)接收緩存,驅(qū)動(dòng)會(huì)根據(jù)發(fā)送數(shù)據(jù)包的大小榛泛,使用最佳匹配算法從緩存池中找到一塊大小合適的空間,將數(shù)據(jù)從發(fā)送緩存區(qū)復(fù)制過來,mmap()分配的內(nèi)存是映射在接收方用戶空間里的.為了實(shí)現(xiàn)用戶空間到用戶空間的拷貝噩斟,mmap()分配的內(nèi)存除了映射進(jìn)了接收方進(jìn)程里曹锨,還映射進(jìn)了內(nèi)核空間。所以調(diào)用copy_from_user()將數(shù)據(jù)拷貝進(jìn)內(nèi)核空間也相當(dāng)于拷貝進(jìn)了接收方的用戶空間剃允,這就是Binder只需一次拷貝的‘秘密’沛简。

五:android重要知識(shí)點(diǎn)

Android開發(fā)--如何減小Apk文件的大小


靜態(tài)編譯和動(dòng)態(tài)編譯

靜態(tài) include $(BUILD_STATIC_JAVA_LIBRARY)

動(dòng)態(tài) include $(BUILD_JAVA_LIBRARY)

a、可以在apk的Android.mk中去添加動(dòng)態(tài)jar包的依賴硅急,使用的時(shí)候jar包的類可以直接調(diào)用

b覆享、apk編譯的時(shí)候如果不在android.mk中做動(dòng)態(tài)jar包的依賴的話,可以在使用的時(shí)候去動(dòng)態(tài)尋找system/framework/SkyFramework的jar包营袜,去load此jar包撒顿,在去找jar包中的 ? class;這種方法?apk中可以直接調(diào)用接口中自己定義的方法荚板,編譯時(shí)不需要去做android.mk的依賴凤壁。 實(shí)現(xiàn)的地方直接繼承接口即可,打包到動(dòng)態(tài)jar包中跪另。

這樣可以實(shí)現(xiàn)分離拧抖,接口的定義和實(shí)現(xiàn)做到分離,在開發(fā)階段非常有用免绿,不同部門直接可以并行進(jìn)行唧席。

網(wǎng)絡(luò)編程,服務(wù)器端編程

安卓中Fragment應(yīng)用嘲驾,相比Activity的好處

Fragment可以使你能夠?qū)ctivity分離成多個(gè)可重用的組件淌哟,每個(gè)都有它自己的生命周期和UI。

Fragment可以輕松得創(chuàng)建動(dòng)態(tài)靈活的UI設(shè)計(jì)辽故,可以適應(yīng)于不同的屏幕尺寸徒仓。從手機(jī)到平板電腦。

Fragment是一個(gè)獨(dú)立的模塊,緊緊地與activity綁定在一起誊垢〉舫冢可以運(yùn)行中動(dòng)態(tài)地移除症见、加入、交換等殃饿。

Fragment提供一個(gè)新的方式讓你在不同的安卓設(shè)備上統(tǒng)一你的UI谋作。

Fragment 解決Activity間的切換不流暢,輕量切換壁晒。

Fragment 替代TabActivity做導(dǎo)航瓷们,性能更好。

Fragment 在4.2.版本中新增嵌套fragment使用方法秒咐,能夠生成更好的界面效果谬晕。

Fragment做局部?jī)?nèi)容更新更方便,原來為了到達(dá)這一點(diǎn)要把多個(gè)布局放到一個(gè)activity里面携取,現(xiàn)在可以用多Fragment來代替攒钳,只有在需要的時(shí)候才加載Fragment,提高性能雷滋。

可以從startActivityForResult中接收到返回結(jié)果,但是View不能不撑。

recyclerview的復(fù)用原理

熱修復(fù)原理

android7.0原理--簽名機(jī)制:

android 7.0中引入了APK Signature Scheme V2(Full APK Signature),而V1(jar Signature) 來自JDK晤斩;

V1:僅驗(yàn)證未解壓的文件內(nèi)容焕檬,這樣APK 簽署后可進(jìn)行許多修改 ,可以移動(dòng)甚至重新壓縮文件澳泵;

V2:驗(yàn)證壓縮文件的所有字節(jié)实愚,而不是單個(gè) ZIP 條目,因此兔辅,在簽名后無法再更改(包括 zipalign)腊敲。正因如此,現(xiàn)在在編譯過程中维苔,我們將壓縮碰辅、調(diào)整和簽署合并成一步完成。好處顯而易見介时,更安全而且新的簽名可縮短在設(shè)備上進(jìn)行驗(yàn)證的時(shí)間(不需要費(fèi)時(shí)地解壓縮然后驗(yàn)證)没宾,從而加快應(yīng)用安裝速度。如有任何自定義任務(wù)篡改 APK 文件或?qū)ζ溥M(jìn)行后處理(無論以任何方式)沸柔,那么V2 簽名會(huì)有作廢的風(fēng)險(xiǎn)循衰,從而導(dǎo)致您的 APK 與 Android 7.0 及更高版本不兼容。


六:android重要知識(shí)點(diǎn)

java類加載機(jī)制

類加載的過程包括了加載(查找并加載類的二進(jìn)制數(shù)據(jù))勉失、驗(yàn)證(確保被加載的類的正確性:確保Class文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求羹蚣,并且不會(huì)危害虛擬機(jī)自身的安全)原探、準(zhǔn)備(為類的靜態(tài)變量分配內(nèi)存乱凿,并將其初始化為默認(rèn)值,public static int value = 3,這是設(shè)為0)、解析(把類中的符號(hào)引用轉(zhuǎn)換為直接引用)、初始化(類的靜態(tài)變量賦予正確的初始值砂缩,JVM負(fù)責(zé)對(duì)類進(jìn)行初始化沟启,主要對(duì)類變量進(jìn)行初始化)五個(gè)階段。

解析階段則不一定段审,它在某些情況下可以在初始化階段之后開始全蝶,這是為了支持Java語言的運(yùn)行時(shí)綁定(也成為動(dòng)態(tài)綁定或晚期綁定)

類加載器:雙親委派模型,如果存在父類加載器寺枉,就委派給父類加載器加載抑淫,如果不存在父類加載器,就檢查是否是由啟動(dòng)類加載器加載的類姥闪,通過調(diào)用本地方法始苇,如果父類加載器和啟動(dòng)類加載器都不能完成加載任務(wù),才調(diào)用自身的加載功能筐喳。

意義:系統(tǒng)類防止內(nèi)存中出現(xiàn)多份同樣的字節(jié)碼催式,-保證Java程序安全穩(wěn)定運(yùn)行

java編譯過程

分析和輸入到符號(hào)表

注解處理

語義分析和生成class字節(jié)碼文件

GC

final用法,反射原理

反射:先講反射機(jī)制避归,反射就是程序運(yùn)行期間JVM會(huì)對(duì)任意一個(gè)類洞悉它的屬性和方法荣月,對(duì)任意一個(gè)對(duì)象都能夠訪問它的屬性和方法。依靠此機(jī)制梳毙,可以動(dòng)態(tài)的創(chuàng)建一個(gè)類的對(duì)象和調(diào)用對(duì)象的方法哺窄。

其次就是反射相關(guān)的API,只講一些常用的顿天,比如獲取一個(gè)Class對(duì)象堂氯。Class.forName(完整類名)。通過Class對(duì)象獲取類的構(gòu)造方法牌废,class.getConstructor咽白。根據(jù)class對(duì)象獲取類的方法,getMethod和getMethods鸟缕。使用class對(duì)象創(chuàng)建一個(gè)對(duì)象晶框,class.newInstance等。

最后可以說一下反射的優(yōu)點(diǎn)和缺點(diǎn)懂从,優(yōu)點(diǎn)就是增加靈活性授段,可以在運(yùn)行時(shí)動(dòng)態(tài)獲取對(duì)象實(shí)例。缺點(diǎn)是反射的效率很低番甩,而且會(huì)破壞封裝侵贵,通過反射可以訪問類的私有方法,不安全缘薛。

注解原理

io,nio區(qū)別和原理窍育,NIO中select的實(shí)現(xiàn)機(jī)制

Java IO是面向流的卡睦,這意味著我們需要每次從流中讀取一個(gè)或多個(gè)字節(jié),直到讀取完所有字節(jié)漱抓;NIO是面向緩沖的表锻,也就是說會(huì)把數(shù)據(jù)讀取到一個(gè)緩沖區(qū)中,然后對(duì)緩沖區(qū)中的數(shù)據(jù)進(jìn)行相應(yīng)處理乞娄。

Java IO是阻塞IO瞬逊,而NIO是非阻塞IO。

Java NIO中存在一個(gè)稱為選擇器(selector)的東西仪或,它允許你把多個(gè)通道(channel)注冊(cè)到一個(gè)選擇器上确镊,然后使用一個(gè)線程來監(jiān)視這些通道:若這些通道里有某個(gè)準(zhǔn)備好可以開始進(jìn)行讀或?qū)懖僮髁耍瑒t開始對(duì)相應(yīng)的通道進(jìn)行讀寫范删。而在等待某通道變?yōu)榭勺x/寫期間骚腥,請(qǐng)求對(duì)通道進(jìn)行讀寫操作的線程可以去干別的事情。

多線程同步的幾個(gè)方式及區(qū)別

1瓶逃、synchronized (托管給JVM執(zhí)行的),2束铭、重入鎖(retrandlock,讀寫ReentrantReadWriteLock)3、volatile關(guān)鍵字厢绝,阻塞隊(duì)列(linkedblockingqueen)契沫,是java代碼自己實(shí)現(xiàn)的,4、局部變量(ThreadLocal昔汉,提到Looper.prepare)5懈万、使用同步容器(vector,hashtable,ConcurrentHashMap)靶病,6会通、CountDownLatch

樂觀鎖和悲觀鎖的區(qū)別

悲觀鎖,就是很悲觀娄周,每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人會(huì)修改涕侈,所以每次在拿數(shù)據(jù)的時(shí)候都會(huì)上鎖,這樣別人想拿這個(gè)數(shù)據(jù)就會(huì)block直到它拿到鎖煤辨。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫里邊就用到了很多這種鎖機(jī)制裳涛,比如行鎖,表鎖等众辨,讀鎖端三,寫鎖等,都是在做操作之前先上鎖鹃彻。

樂觀鎖郊闯,就是很樂觀,每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人不會(huì)修改,所以不會(huì)上鎖团赁,但是在更新的時(shí)候會(huì)判斷一下在此期間別人有沒有去更新這個(gè)數(shù)據(jù)旋奢,可以使用版本號(hào)等機(jī)制。樂觀鎖適用于多讀的應(yīng)用類型然痊,這樣可以提高吞吐量,像數(shù)據(jù)庫如果提供類似于write_condition機(jī)制的其實(shí)都是提供的樂觀鎖屉符。

synchronized是基于悲觀鎖剧浸,比較適用于大量線程頻繁請(qǐng)求,lock是樂觀鎖矗钟,適用于不是很頻繁的

ReentrantLock非中斷鎖(一直等待)和中斷鎖(lock.lockInterruptibly())唆香,得到中斷響應(yīng)則中斷,還提供公平鎖及非公平鎖吨艇。

stringbuffer和stringbuilder區(qū)別

stringbuffer是線程安全躬它,適合多線程操作字符串,stringbuilder是非線程安全的东涡,適合單線程大量操作字符串冯吓,在單線程中的性能比StringBuffer高

Java重寫hashCode(),equals()函數(shù)的時(shí)機(jī)

雖然 a 與 b不是同一個(gè)對(duì)象疮跑,但是你希望無論使用 a 還是 b 都可以從map中取出相同的 value组贺,也就是你會(huì)認(rèn)為 a 與 b 的內(nèi)容是相同的,就是當(dāng)把他們作為索引值祖娘,或者在 set 中不會(huì)重復(fù)出現(xiàn)失尖,這些情況適用于重寫他們。重寫equals一定要重寫Hashcode渐苏,這是java規(guī)定的掀潮。如果不滿足這個(gè)條件則map, set等的處理會(huì)出現(xiàn)錯(cuò)誤的。

get()和post()區(qū)別

語義的區(qū)別琼富,設(shè)計(jì)不同仪吧,get是為請(qǐng)求,post是提交改變服務(wù)器狀態(tài)

1. GET使用URL或Cookie傳參鞠眉。而POST將數(shù)據(jù)放在BODY中邑商。

2. GET的URL會(huì)有長度上的限制,則POST的數(shù)據(jù)則可以非常大凡蚜。

3. POST比GET安全人断,因?yàn)閿?shù)據(jù)在地址欄上不可見。

成員變量的類型

靜態(tài)變量朝蜘,實(shí)例變量恶迈,final修飾的常量

七:數(shù)據(jù)結(jié)構(gòu)算法相關(guān)

如何判斷一個(gè)鏈表中存在環(huán)

1遍歷做標(biāo)記,2:便利把指針反轉(zhuǎn),如果走到開始就有環(huán),3:雙指針 一個(gè)一次走一步,一個(gè)一次走兩步

各排序暇仲、冒泡排序步做、二分查找思想原理

二叉樹

問1000壇酒,里面有1壇毒酒奈附,需要多少只老鼠才能判斷出毒酒是哪壇全度?

都轉(zhuǎn)為二進(jìn)制 2的10次方為1024,10只老鼠


Linux中查看內(nèi)存使用狀況命令斥滤?查看網(wǎng)絡(luò)狀況将鸵?

cat/proc/meminfo? free

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市佑颇,隨后出現(xiàn)的幾起案子顶掉,更是在濱河造成了極大的恐慌,老刑警劉巖挑胸,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痒筒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡茬贵,警方通過查閱死者的電腦和手機(jī)簿透,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來解藻,“玉大人萎战,你說我怎么就攤上這事∮咛樱” “怎么了蚂维?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長路狮。 經(jīng)常有香客問我虫啥,道長,這世上最難降的妖魔是什么奄妨? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任涂籽,我火速辦了婚禮,結(jié)果婚禮上砸抛,老公的妹妹穿的比我還像新娘评雌。我一直安慰自己,他們只是感情好直焙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布景东。 她就那樣靜靜地躺著,像睡著了一般奔誓。 火紅的嫁衣襯著肌膚如雪斤吐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音和措,去河邊找鬼庄呈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛派阱,可吹牛的內(nèi)容都是我干的诬留。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼贫母,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼文兑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颁独,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伪冰,沒想到半個(gè)月后誓酒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贮聂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年靠柑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吓懈。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歼冰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耻警,到底是詐尸還是另有隱情隔嫡,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布甘穿,位于F島的核電站腮恩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏温兼。R本人自食惡果不足惜秸滴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望募判。 院中可真熱鬧荡含,春花似錦、人聲如沸届垫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽装处。三九已至均澳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背找前。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國打工糟袁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人躺盛。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓项戴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親槽惫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子周叮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容