對(duì)于高級(jí)工程師來(lái)講,自身的技術(shù)修為尤為重要,比如算法、設(shè)計(jì)模式、底層原理等,只有把這些基礎(chǔ)熟練之后,才能在開(kāi)發(fā)過(guò)程中知其然知其所以然,出現(xiàn)問(wèn)題時(shí)達(dá)到得心應(yīng)手。接下來(lái)與大家一起分享Java高級(jí)工程師面試的一些經(jīng)驗(yàn)之談。
Memcache與Redis的區(qū)別
memcache把數(shù)據(jù)存在內(nèi)存之中,斷電后會(huì)掛掉;Redis部分?jǐn)?shù)據(jù)持久化在硬盤上,斷電不會(huì)丟失。
memcache存的是key-value對(duì),redis支持更多的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型
memcache可以使用一致性hash做分布式,redis可以做主從同步
redis單線程,只使用1個(gè)cp
floatf=3.4;是否正確?
不正確。3.4是雙精度數(shù),將雙精度型(double)賦值給浮點(diǎn)型(float)屬于下轉(zhuǎn)型(down-casting,也稱為窄化)會(huì)造成精度損失,因此需要強(qiáng)制類型轉(zhuǎn)換floatf=(float)3.4;或者寫成floatf=3.4F。
Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數(shù)上加0.5然后進(jìn)行下取整。
說(shuō)說(shuō)類的生命周期
1.加載,查找并加載類的二進(jìn)制數(shù)據(jù),在Java堆中也創(chuàng)建一個(gè)java.lang.Class類的對(duì)象;
2.連接,連接又包含三塊內(nèi)容:驗(yàn)證、準(zhǔn)備、初始化。1)驗(yàn)證,文件格式、元數(shù)據(jù)、字節(jié)碼、符號(hào)引用驗(yàn)證;2)準(zhǔn)備,為類的靜態(tài)變量分配內(nèi)存,并將其初始化為默認(rèn)值;3)解析,把類中的符號(hào)引用轉(zhuǎn)換為直接引用;
3.初始化,為類的靜態(tài)變量賦予正確的初始值;
4.使用,new出對(duì)象程序中使用;
5.卸載,執(zhí)行垃圾回收。
java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?
重載:有同樣的方法名稱不同的參數(shù)列表。a(){}a(Stringb){}...
重寫(也稱覆蓋):即可以重新編寫與父類同名方法形象的稱之為重寫(覆蓋)。
描述一下JVM加載class文件的原理機(jī)制?
VM中類的裝載是由類加載器(ClassLoader)和它的子類來(lái)實(shí)現(xiàn)的,Java中的類加載器是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件,它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類文件中的類。