2020年Java高級工程師面試總結(jié)

今年不好過啊碟摆!特別是對于要找工作的小伙伴來說典蜕,我也不知道能幫到啥愉舔!這些面試題是Java后端面試會需要到的轩缤,只要是去個前景好點的公司仇让,基本上里面的內(nèi)容最少總會被問到一兩個的卫玖,所以多準備準備總是沒錯的踊淳!這也只是其中的一點點面試題陕靠,要是有需要面試和學習的都可以? ?關(guān)注+私信? ? 我!我這有最新最全的JAVA面試題和JAVA學習資料脱茉!免費提供!

Java基礎(chǔ)

Hashtable和HashMap的區(qū)別琴许。

抽象類與接口的區(qū)別。

final關(guān)鍵字的使用和區(qū)別榜田。

異常分類和處理機制。

JDK版本區(qū)別箭券。

StringBuilder內(nèi)部實現(xiàn)機制净捅。

反射機制的使用。

匿名內(nèi)部類的使用辩块。

泛型的概念和使用。

弱引用和虛引用的概念和使用方式废亭。

開源框架

SpringMVC和Struts2的區(qū)別

Spring IOC和AOP的概念以及實現(xiàn)方式

Spring事務的管理

Hibernate與MyBatis的比較

Hibernate延遲加載的機制

JVM虛擬機

GC算法有哪些

垃圾回收器有哪些

如何調(diào)優(yōu)JVM

緩存和NoSQL

緩存的使用場景

緩存命中率的計算

Memcache與Redis的比較

如何實現(xiàn)Redis的分片

MongoDB的特點

分布式

zookeeper的用途

dubbo的用途以及優(yōu)點

dubbo的實現(xiàn)原理

數(shù)據(jù)結(jié)構(gòu)和算法

單向鏈表的逆序排列

雙向鏈表的操作

1億個整數(shù)的倒序輸出

找出給定字符串中最長回文(回文:abcdcba捉腥,兩端對稱)

網(wǎng)絡編程

Get和Post的區(qū)別

Https協(xié)議的實現(xiàn)

長連接的管理

Socket的基本方法

數(shù)據(jù)庫

inner join和left join的區(qū)別

復雜SQL語句

數(shù)據(jù)庫優(yōu)化方式

數(shù)據(jù)庫拆分方式

如何保證不同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)一致性

安全

什么是XSS攻擊,具體如何實現(xiàn)坏匪?

開放問題:如何保障系統(tǒng)安全?

設(shè)計模式

寫出一個設(shè)計模式的類圖

設(shè)計模式的意義是什么

寫個單例模式的代碼

多線程

如何避免Quartz重復啟動任務

線程池滿了如何處理額外的請求 同一個對象的連個同步方法能否被兩個線程同時調(diào)用 部分答案

Java基礎(chǔ)

HashMap和Hashtable的區(qū)別

HashMap是非線程安全的,Hashtable是線程安全的凭迹。 HashMap的鍵值都可以為null罚屋,Hashtable的鍵值都不可以為null值。 HashMap繼承自AbstractMap類嗅绸,Hashtable繼承自Dictionary類脾猛。 ps : Properties類繼承自Hashtable類。

異常分類和處理機制

分類:

運行時異常(Runtime Exception) 受檢查異常(Checked Exception) 運行時異常:

必須繼承RuntimeException類鱼鸠, 定義方法時不必聲明會拋出運行時異常猛拴。 調(diào)用方法時不必捕獲運行時異常羹铅。 受檢查異常:

不繼承自RumtimeException類 定義方法時需要拋出可能會拋出的Checked Exception 調(diào)用方法時需要捕獲Checked Exception或者繼續(xù)向上拋出。 邏輯上:

運行時異常:一般不需要或者不知道如何處理此類異常愉昆; 受檢驗異常:一般需要知道如何處理可能發(fā)生的異常情況职员。 StringBuilder內(nèi)部實現(xiàn)機制

StringBuilder內(nèi)部有一個字符數(shù)組,代碼如下

char[] value; //字符數(shù)組int count; //字符串長度 每一次append操作都是將新的字符串加入到可變長的字符數(shù)組中跛溉,長度計算方式與ArrayList類似焊切。調(diào)用toString()方法時,new一個String對象即可芳室。

public String toString() { return new String(value, 0, count);// Create a copy, don't share the array} ps: StringBuffer是線程安全的蛛蒙,StringBuilder是非線程安全的。

匿名內(nèi)部類的使用

匿名內(nèi)部類是沒有名字的類渤愁,只在某一處被使用,不會被多處調(diào)用深夯,一般是某個父類或接口的特定實現(xiàn)抖格。

強引用、軟引用咕晋、弱引用和虛引用

強引用: 一般的引用都是強引用雹拄,即使OutOfMemory也不會回收這部分被把持的引用內(nèi)存。 軟引用(SoftReference): 如果內(nèi)存空間足夠掌呜,垃圾回收器就不會回收它滓玖;如果內(nèi)存空間不足了,就會回收這些對象的內(nèi)存质蕉。只要垃圾回收器沒有回收它势篡,該對象就可以被使用。++軟引用可以用來實現(xiàn)內(nèi)存敏感的高速緩存模暗。++ 弱引用(WeakReference):弱引用的對象擁有更短暫的生命周期禁悠。當垃圾回收期發(fā)現(xiàn)只有若引用的對象,不論內(nèi)存空間足夠與否兑宇,都會回收它碍侦。 虛引用:虛引用不會決定對象的生命周期,如果一個對象僅持有一個虛引用隶糕,那么它隨時可能被回收瓷产。++虛引用主要用來跟蹤對象被垃圾回收器回收的活動。++ 開源框架

SpringMVC和Struts2的區(qū)別

SpringMVC的方法級別的攔截枚驻,Struts2是類級別的攔截濒旦; SpringMVC是基于Servlet實現(xiàn)Controller,Struts2是基于Filter實現(xiàn)测秸; SpringMVC性能和安全性高于Struts2疤估; SpringMVC更加組件化和流程化灾常,易于擴展,比如返回JSON通過設(shè)置@ResponseBody即可铃拇; Struts2更加無耦合钞瀑,比較純粹,但是需要更多的自行開發(fā)的代碼以支持更多功能慷荔。

Spring事務的管理

分類:聲明式事務雕什、編程式事務

聲明式事務:通過統(tǒng)一配置實現(xiàn)事務的統(tǒng)一管理,一般配置TransactionMananger以及相關(guān)屬性即可显晶。 編程式事務(注解方式):在需要事務的方法上配置相關(guān)的注解(包括事務類型贷岸、回滾策略等) 事務類型:

PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED PROPAGATION_NEVER PROPAGATION_NESTED 事務隔離級別

ISOLATION_DEFAULT ISOLATION_READ_UNCOMMITTED ISOLATION_READ_COMMITTED ISOLATION_REPEATABLE_READ ISOLATION_SERIALIZABLE Hibernate與MyBatis的比較

Hibernate完全實現(xiàn)對象關(guān)系映射(ORM),MyBatis實現(xiàn)的是SQL Mapping MyBatis可以進行更為細致的SQL優(yōu)化磷雇,可以減少查詢字段偿警。比Hibernate容易掌握,Hibernate門檻較高唯笙。 Hibernate的DAO層開發(fā)比MyBatis簡單螟蒸,Mybatis需要維護SQL和結(jié)果映射。 Hibernate對對象的維護和緩存要比MyBatis好崩掘,對增刪改查的對象的維護要方便七嫌。 Hibernate數(shù)據(jù)庫移植性很好,MyBatis的數(shù)據(jù)庫移植性不好苞慢,不同的數(shù)據(jù)庫需要寫不同SQL诵原。 Hibernate有更好的二級緩存機制,可以使用第三方緩存挽放。MyBatis本身提供的緩存機制不佳绍赛。

JVM虛擬機

GC算法有哪些

引用計數(shù) 復制 標記-清除 標記-壓縮 分代(新生代、老年代骂维、永久代) 垃圾回收器有哪些

串行回收器:新生代串行回收器惹资、老年代串行回收器 并行回收器:新生代ParNew回收器、新生代ParallelGC回收器航闺、老年代ParallelGC回收器 CMS回收器:(Concurrent Mark Sweep、并發(fā)標記清除) G1回收器(1.7以后代替CMS回收器) 如何調(diào)優(yōu)JVM

標準參數(shù):

-client -server模式 -Xmn侮措、-Xms分扎、-Xmx 監(jiān)控:jps、jstat胧洒、jinfo畏吓、jmap墨状、jhat、jstack… Java 中堆和棧有什么區(qū)別菲饼?

JVM 中堆和棧屬于不同的內(nèi)存區(qū)域肾砂,使用目的也不同。

棧常用于保存方法幀和局部變量宏悦,而對象總是在堆上分配镐确。 棧通常都比堆小饼煞,也不會在多個線程之間共享,而堆被整個 JVM 的所有線程共享砖瞧。 緩存和NoSQL

緩存命中率的計算

命中緩存次數(shù)/(命中緩存次數(shù)+未命中緩存次數(shù)) = 命中率

Memcache與Redis的區(qū)別

memcache把數(shù)據(jù)存在內(nèi)存之中息堂,斷電后會掛掉;Redis部分數(shù)據(jù)持久化在硬盤上块促,斷電不會丟失储矩。 memcache存的是key-value對即硼,redis支持更多的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型 memcache可以使用一致性hash做分布式逃片,redis可以做主從同步 redis單線程,只使用1個cpu 如何實現(xiàn)Redis的分片

使用一致性哈希對數(shù)據(jù)進行映射 實現(xiàn)方式:客戶端分片(每個客戶端對應一個分片)只酥、代理協(xié)助分片褥实、查詢路由分片; 使用redis集群裂允,如codis(豌豆莢损离,依賴zookeeper);

分布式

zookeeper的用途

zookeeper作為分布式應用協(xié)調(diào)系統(tǒng)绝编,已經(jīng)用到很多分布式項目中僻澎。

可以用來完成統(tǒng)一命名服務、狀態(tài)同步服務十饥、集群管理窟勃、分布式應用配置項等管理工作。

zookeeper的主要操作分一下幾種:

創(chuàng)建節(jié)點 讀取節(jié)點數(shù)據(jù) 更新節(jié)點數(shù)據(jù) 刪除節(jié)點 監(jiān)控節(jié)點變化 應用場景:

統(tǒng)一命名服務逗堵,使用create自動創(chuàng)建節(jié)點編號秉氧; 配置管理,多個節(jié)點的共享配置蜒秤,當配置發(fā)生變化時汁咏,可利用zookeeper讓使用這些配置的節(jié)點獲得通知亚斋,進行重新加載等操作。如dubbo服務攘滩。 集群管理:集群選舉主節(jié)點帅刊,資源定位。 共享鎖 負載均衡 應用項目:

dubbo服務集群轰驳、redis集群厚掷、Hadoop集群等

dubbo的用途以及優(yōu)點

Dubbo是一個分布式服務框架,致力于提供高性能和透明化的RPC遠程服務調(diào)用方案级解,以及SOA服務治理方案冒黑。

數(shù)據(jù)結(jié)構(gòu)和算法

將單項鏈表逆序排列

將單向鏈表逆序輸出,方法有三種:

遍歷鏈表勤哗,將每個節(jié)點的內(nèi)容存入一個數(shù)組中抡爹,然后逆序輸出數(shù)組(最簡單的做法) 使用棧來逆序輸出 直接將鏈表(指針)逆序然后輸出

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芒划,隨后出現(xiàn)的幾起案子冬竟,更是在濱河造成了極大的恐慌,老刑警劉巖民逼,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泵殴,死亡現(xiàn)場離奇詭異,居然都是意外死亡拼苍,警方通過查閱死者的電腦和手機笑诅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疮鲫,“玉大人吆你,你說我怎么就攤上這事】》福” “怎么了妇多?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長燕侠。 經(jīng)常有香客問我者祖,道長,這世上最難降的妖魔是什么绢彤? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任咸包,我火速辦了婚禮,結(jié)果婚禮上杖虾,老公的妹妹穿的比我還像新娘烂瘫。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布坟比。 她就那樣靜靜地躺著芦鳍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葛账。 梳的紋絲不亂的頭發(fā)上柠衅,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音籍琳,去河邊找鬼菲宴。 笑死,一個胖子當著我的面吹牛趋急,可吹牛的內(nèi)容都是我干的喝峦。 我是一名探鬼主播呜达,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼谣蠢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了查近?” 一聲冷哼從身側(cè)響起眉踱,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎霜威,沒想到半個月后谈喳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡戈泼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年叁执,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矮冬。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖次哈,靈堂內(nèi)的尸體忽然破棺而出胎署,到底是詐尸還是另有隱情,我是刑警寧澤窑滞,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布琼牧,位于F島的核電站,受9級特大地震影響哀卫,放射性物質(zhì)發(fā)生泄漏巨坊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一此改、第九天 我趴在偏房一處隱蔽的房頂上張望趾撵。 院中可真熱鬧,春花似錦、人聲如沸占调。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽究珊。三九已至薪者,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剿涮,已是汗流浹背言津。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留取试,地道東北人悬槽。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像想括,于是被迫代替她去往敵國和親陷谱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359