更新時(shí)間:2019-08-03 09:00:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3567次
作為資深java工程師,也要牢記基礎(chǔ)知識(shí),企業(yè)在面試時(shí),也有很大一部分是考基礎(chǔ)知識(shí)的,下面動(dòng)力節(jié)點(diǎn)java學(xué)院小編就來為大家總結(jié)一些資深java工程師面試題。
1、JVM結(jié)構(gòu)原理、GC工作機(jī)制詳情
答:具體參照:JVM結(jié)構(gòu)、GC工作機(jī)制詳解,說到GC,記住兩點(diǎn):
(1)GC是負(fù)責(zé)回收所有無任何引用對(duì)象的內(nèi)存空間。 注意:垃圾回收回收的是無任何引用的對(duì)象占據(jù)的內(nèi)存空間而不是對(duì)象本身,
(2)GC回收機(jī)制的兩種算法,a、引用計(jì)數(shù)法 b、可達(dá)性分析算法,至于更詳細(xì)的GC算法介紹,大家可以參考:Java GC機(jī)制算法。
2、Java對(duì)象的生命周期
答:創(chuàng)建階段 、 應(yīng)用階段 、不可見階段 、不可達(dá)階段 、收集階段 、終結(jié)階段、 對(duì)象空間重新分配階段等等,具體參照:Java 對(duì)象的生命周期。
3、Map或者HashMap的儲(chǔ)存原理
答:HashMap是由數(shù)組+鏈表的一個(gè)結(jié)構(gòu)組成,具體參照:HashMap的實(shí)現(xiàn)原理。
4、當(dāng)數(shù)據(jù)表中A、B字段做了組合索引,那么單獨(dú)使用A或單獨(dú)使用B會(huì)有索引效果嗎?(使用like查詢?nèi)绾斡兴饕Ч?
答:看A、B兩字段做組合索引的時(shí)候,誰在前面,誰在后面,如果A在前,那么單獨(dú)使用A會(huì)有索引效果,單獨(dú)使用B則沒有,反之亦然。同理,使用like模糊查詢時(shí),如果只是使用前面%,那么有索引效果,如果使用雙%號(hào)匹配,那么則無索引效果。
5、數(shù)據(jù)庫存儲(chǔ)日期格式時(shí),如何考慮時(shí)區(qū)轉(zhuǎn)換問題?
答:使用TimeStamp , 原因參照:Java編程中遇到的時(shí)區(qū)轉(zhuǎn)換問題。
6、JavaObject類中有哪些方法?
private static native void registerNatives();
public final native Class getClass(); 這個(gè)方法可以引出有關(guān)反射,類加載機(jī)制
public native int hashCode(); 這里會(huì)引出hashmap實(shí)現(xiàn)原理
public boolean equals(Object obj) 這里會(huì)引出hashmap實(shí)現(xiàn)原理
protected native Object clone() throws CloneNotSupportedException; 這里會(huì)引出設(shè)計(jì)模式
public String toString()
public final native void notify(); 這里會(huì)引出線程通信
public final native void notifyAll(); 這里會(huì)引出線程通信
public final native void wait(long timeout) throws InterruptedException; 這里會(huì)引出線程通信
public final void wait(long timeout, int nanos) throws InterruptedException 這里會(huì)引出線程通信
public final void wait() throws InterruptedException 這里會(huì)引出線程通信
protected void finalize() throws Throwable 這里會(huì)引出垃圾回收
7、HTTP協(xié)議,GET和POST 的區(qū)別
答:淺談HTTP中GET和POST的區(qū)別。
線程、設(shè)計(jì)模式、緩存方面
8、SimpleDataFormat是非線程安全的,如何更好的使用而避免風(fēng)險(xiǎn)呢?
答:關(guān)于SimpleDateFormat安全的時(shí)間格式化線程安全問題。
9、如何看待設(shè)計(jì)模式,并簡單說說你對(duì)觀察者模式的理解
答:1、設(shè)計(jì)模式有神馬用2、觀察者模式類圖及實(shí)現(xiàn)。
10、集群環(huán)境中,session如何實(shí)現(xiàn)共享
答:1、Java集群之session共享2、session多服務(wù)器共享方案,還有一種方案就是使用一個(gè)固定的服務(wù)器專門保持session,其他服務(wù)器共享。
11、分布式、集群環(huán)境中,緩存如何刷新,如何保持同步?
答:A、緩存如何刷新?1、定時(shí)刷新 2、主動(dòng)刷新覆蓋,每個(gè)緩存框架都有自帶的刷新機(jī)制,或者說緩存失效機(jī)制,就拿Redis和 Ehcache舉例, 他們都有自帶的過期機(jī)制,另外主動(dòng)刷新覆蓋時(shí),只需獲取對(duì)應(yīng)的key進(jìn)行數(shù)據(jù)的覆蓋即可。
B、緩存如何保持同步? 這個(gè)redis有自帶的集群同步機(jī)制,即復(fù)制功能,具體參考:基于Redis分布式緩存實(shí)現(xiàn),Ehcache也有分布式緩存同步的配置,只需要配置不同服務(wù)器地址即可,參照:Ehcache分布式緩存同步。
12、一條sql執(zhí)行過長的時(shí)間,你如何優(yōu)化,從哪些方面?
(1)查看sql是否涉及多表的聯(lián)表或者子查詢,如果有,看是否能進(jìn)行業(yè)務(wù)拆分,相關(guān)字段冗余或者合并成臨時(shí)表;
(2)涉及鏈表的查詢,是否能進(jìn)行分表查詢,單表查詢之后的結(jié)果進(jìn)行字段整合;
(3)如果以上兩種都不能操作,非要鏈表查詢,那么考慮對(duì)相對(duì)應(yīng)的查詢條件做索引。加快查詢速度;
(4)針對(duì)數(shù)量大的表進(jìn)行歷史表分離(如交易流水表);
(5)數(shù)據(jù)庫主從分離,讀寫分離,降低讀寫針對(duì)同一表同時(shí)的壓力,至于主從同步,MySQL有自帶的binlog實(shí)現(xiàn) 主從同步;
(6)explain分析sql語句,查看執(zhí)行計(jì)劃,分析索引是否用上,分析掃描行數(shù)等等;
從以上可以看出,資深java工程師面試題也離不開基礎(chǔ),總而言之基礎(chǔ)很重要,動(dòng)力節(jié)點(diǎn)java學(xué)院祝愿各位都能找到心儀的工作。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743