{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

兩年的java工作經(jīng)驗(yàn),面試時(shí)會(huì)被問到些什么問題?

ScliangScliang 回答0 收藏1
收藏問題

10條回答

neu

neu

回答于2022-06-28 14:10

java程序都會(huì)被問到的面試問題,月薪20k+

多線程相關(guān)問題

  1. 實(shí)現(xiàn)多線程有哪些方式?有什么異同?
  2. 線程的生命周期
  3. 線程池常用的有哪些?
  4. 線程池的工作原理
  5. 如何啟動(dòng)和銷毀線程
  6. 什么是線程死鎖
  7. 悲觀鎖和樂觀鎖,公平鎖和非公平鎖

Java集合原理

  1. 集合的類圖
  2. 集合的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)
  3. 集合的效率
  4. 集合的遍歷

JVM虛擬機(jī)

  1. java的內(nèi)存模型是什么樣的
  2. jvm內(nèi)存分為哪些區(qū)域
  3. 內(nèi)存溢出有些類型,如何解決
  4. 垃圾回收器有哪些
  5. 垃圾回收算法有哪些
  6. jvm常用的參數(shù)
  7. 如何定位分析jvm線上問題
  8. 有哪些分析jvm的工具

數(shù)據(jù)庫

  1. 索引的分類
  2. 索引的優(yōu)化
  3. 索引的原理
  4. 事物的類型
  5. 聯(lián)合查詢,子查詢效率問題
  6. 如何實(shí)現(xiàn)讀寫分離

框架類

  1. spring(aop,依賴注入)
  2. springmvc(原理)
  3. dubbo(原理,支持哪些協(xié)議)
  4. mybites(原理,常用的配置)

算法類

  1. 常見排序原理和實(shí)現(xiàn)(8種)
  2. 求二叉樹的高度
  3. 二叉樹的遍歷
  4. 平衡二叉樹和紅黑樹
  5. b樹,b+樹
  6. 遞歸和分治思想
  7. 貪婪算法

linux服務(wù)器

  1. 你常用的linux命令有哪些
  2. linux權(quán)限系統(tǒng)
  3. 如何寫tomcat重啟腳本
  4. 如何用命令搜索日志,分析日志

web服務(wù)器

  1. nginx配置反向代理
  2. nginx配置負(fù)載均衡(哪幾種)
  3. apache配置反向代理
  4. tomcat參數(shù)調(diào)優(yōu)

項(xiàng)目

  1. 你認(rèn)為做的最有成就的一個(gè)項(xiàng)目
  2. 你在這個(gè)項(xiàng)目中負(fù)責(zé)什么內(nèi)容
  3. 遇到了哪些難點(diǎn),如何解決的
  4. 你認(rèn)為這個(gè)項(xiàng)目還有哪些改進(jìn)的地方,為什么這么做
那如果有感興趣老友們想要獲取完整面試題的呢...可以去我的主頁看看我的面試文章,也可以私信我【面試】獲取,很開心能分享給大家!

我的很多文章都有分享各種架構(gòu)資料,相信對(duì)于已經(jīng)工作和遇到技術(shù)瓶頸或者寫博客碼友,在我的主頁一定都有你需要的內(nèi)容。

評(píng)論0 贊同0
  •  加載中...
mingde

mingde

回答于2022-06-28 14:10

兩年的java經(jīng)驗(yàn), 找工作時(shí)候簡歷就要實(shí)事求是, 匹配一些基礎(chǔ)的java研發(fā)崗位去面試, 如果平時(shí)內(nèi)功修煉的到位, 拿下一個(gè)offer應(yīng)該不成問題。

1、會(huì)問你科班基礎(chǔ): 操作系統(tǒng)知識(shí), 數(shù)據(jù)庫原理、數(shù)據(jù)結(jié)構(gòu)、以及軟件工程相關(guān)的測試, 流程之類知識(shí)。

2、會(huì)問你java涉及到的基礎(chǔ)知識(shí): OO基礎(chǔ), 常見類庫用法, 常見類的區(qū)別, 優(yōu)點(diǎn)和缺點(diǎn)。

3、會(huì)問你一般問題的解決方法: 如登錄流程, 數(shù)據(jù)庫不重名的方法, 文件讀取或者處理的方法。這些都是平時(shí)應(yīng)該積累的。

4、會(huì)問你一些算法的定義和區(qū)別, 可以參考一下:hihocoder.com/problemset

5、闡述問題的時(shí)候,盡量不要教科書式, 白話形式。

6、數(shù)據(jù)庫方面:關(guān)系數(shù)據(jù)庫各個(gè)范式的目的, 主鍵,索引,規(guī)則,PS,triger這些也要了解下用法。

7、能用常見BS框架做過小東西:ssh,ssi等, 能說出mvc,切面等內(nèi)容。

8、記?。?不懂千萬不要裝懂亂說,態(tài)度要誠懇, 面試官看你求知欲強(qiáng), 態(tài)度誠懇,也就喜歡和你聊下去, 就會(huì)有好印象。

9、面試過程不要有壓力, 也不要為不能回答問題就擔(dān)憂, 多面試總結(jié)也是提升自己的一種手段。

評(píng)論0 贊同0
  •  加載中...
tomener

tomener

回答于2022-06-28 14:10

一般兩年的工作經(jīng)驗(yàn),技術(shù)上不會(huì)了解得很深,有一些項(xiàng)目經(jīng)驗(yàn),面試官更看重的應(yīng)該是你的java基礎(chǔ)理論的理解和項(xiàng)目經(jīng)歷的理解。

一般兩年的工作經(jīng)驗(yàn),java技術(shù)上的面試可能從以下方面可以去復(fù)習(xí):

1、java基礎(chǔ)知識(shí)(包括java集合、java異常、IO與NIO,同步與異步,阻塞與非阻塞)

2、spring

3、mybaits

4、mysql(特別是索引相關(guān)的)

5、dubbo

6、jvm以及垃圾回收機(jī)制

7、簡單的排序算法(冒泡排序、快速排序、選擇排序、插入排序等等)以及他們的時(shí)間復(fù)雜度

高級(jí)一點(diǎn)的東西,可能就涉及到分布式和消息隊(duì)列,多線程以及鎖處理的高并發(fā)方面的知識(shí),但是以上是比較基本的,一般都會(huì)問到,所以面試前要有一個(gè)好好的準(zhǔn)備過程。

然后項(xiàng)目經(jīng)驗(yàn)上,對(duì)自己做過的項(xiàng)目,一定要有一個(gè)項(xiàng)目,你非常熟悉整個(gè)過程,了解整個(gè)系統(tǒng)的運(yùn)轉(zhuǎn),這個(gè)也是面試官比價(jià)看重的一塊,畢竟兩年的工作經(jīng)驗(yàn),項(xiàng)目經(jīng)驗(yàn)肯定要有一定的積累的,雖然我們技術(shù)上由于工作經(jīng)驗(yàn)的原因不能做的很深,但是項(xiàng)目,我們是經(jīng)歷過幾個(gè)月甚至是一兩年的,你得有自己的理解,最好,對(duì)你們系統(tǒng)能夠提出改進(jìn)的意見或者建議那是最好不過的了,這樣肯定是很大的加分項(xiàng),面試官覺得會(huì)對(duì)你刮目相看的。
另外,在分布式和消息隊(duì)列,多線程以及鎖處理的高并發(fā)這方面需要了解更深的同學(xué),可以關(guān)注一下我的微信公眾號(hào)“我的個(gè)人記事”,個(gè)人有視頻資料可以奉獻(xiàn),并且后續(xù)會(huì)繼續(xù)更新。

評(píng)論0 贊同0
  •  加載中...
hatlonely

hatlonely

回答于2022-06-28 14:10

兩年的java經(jīng)驗(yàn), 找工作時(shí)候簡歷就要實(shí)事求是, 匹配一些基礎(chǔ)的java研發(fā)崗位去面試, 如果平時(shí)內(nèi)功修煉的到位, 拿下一個(gè)offer應(yīng)該不成問題。

1、會(huì)問你科班基礎(chǔ): 操作系統(tǒng)知識(shí), 數(shù)據(jù)庫原理、數(shù)據(jù)結(jié)構(gòu)、以及軟件工程相關(guān)的測試, 流程之類知識(shí)。

2、會(huì)問你java涉及到的基礎(chǔ)知識(shí): Java基礎(chǔ), 常見類庫用法, 常見類的區(qū)別, 優(yōu)點(diǎn)和缺點(diǎn)。

3、會(huì)問你一般問題的解決方法: 如登錄流程, 數(shù)據(jù)庫不重名的方法, 文件讀取或者處理的方法。這些都是平時(shí)應(yīng)該積累的。

4、會(huì)問你一些算法的定義和區(qū)別, 可以參考一下:hihocoder.com/problemset

5、闡述問題的時(shí)候,盡量不要教科書式, 白話形式。

6、數(shù)據(jù)庫方面:關(guān)系數(shù)據(jù)庫各個(gè)范式的目的, 主鍵,索引,規(guī)則,PS,triger這些也要了解下用法。

7、能用常見BS框架做過小東西:ssh,ssi等, 能說出mvc,切面等內(nèi)容。

8、記住: 不懂千萬不要裝懂亂說,態(tài)度要誠懇, 面試官看你求知欲強(qiáng), 態(tài)度誠懇,也就喜歡和你聊下去, 就會(huì)有好印象。

9、面試過程不要有壓力, 也不要為不能回答問題就擔(dān)憂, 多面試總結(jié)也是提升自己的一種手段。

2021年很多公司都在問黑紅樹,數(shù)據(jù)結(jié)構(gòu)與算法一定要看哦~

尚硅谷Java大廠面試題第3季,跳槽必刷題目+必掃技術(shù)盲點(diǎn)(周陽主講)_嗶哩嗶哩_bilibili

https://www.bilibili.com/video/BV1Hy4y1B78T?

尚硅谷Java大廠面試題第2季,面試必刷,跳槽大廠神器_嗶哩嗶哩_bilibili

https://www.bilibili.com/video/BV18b411M7xz?

尚硅谷經(jīng)典Java面試題第一季(java面試精講)_嗶哩嗶哩_bilibili

https://www.bilibili.com/video/BV1Eb411P7bP?

強(qiáng)烈推薦一個(gè)網(wǎng)站:

Java面試題-幫助你通過Java面試 (zwmst.com)

https://zwmst.com/


兩年 java 的面試過程中遇到了很多挑戰(zhàn),也遇到了一些不談技術(shù)的公司,從上面的面試題可以看出,目前對(duì)于 java 的要求越來越高,水漲船高,畢竟這個(gè)行業(yè)的人數(shù)越來越多,而保持自己的競爭力的唯一方法就是找對(duì)方向,不斷學(xué)習(xí),注意這里我提到的第一點(diǎn)是方向,然后才是學(xué)習(xí)。給自己制定一個(gè)職業(yè)規(guī)劃,按照這個(gè)路線往前走,我其實(shí)還在想分布式微服務(wù)這塊以后再深入學(xué)習(xí),可是按照市場要求,現(xiàn)在已經(jīng)刻不容緩了,一些技術(shù)架構(gòu)比如:springcloud、duboo 都得保持學(xué)習(xí),這樣才能有競爭力!作為一名兩年的 javaSir,你必須具備以下技能

閱讀源碼的能力,多用 Intelj idea 這個(gè)開發(fā)工具,而不是 eclipse。它是直接支持反編譯 class 文件的,多讀 jdk 源碼,吸收優(yōu)秀的源碼并加以復(fù)用

做到能夠手寫常見的排序算法,比如快速排序和堆排序、冒泡排序、選擇排序、二分查找這些都是必須的

對(duì) java 的框架有很深入的認(rèn)識(shí),現(xiàn)在基本流行的 ssm 框架很多人都會(huì),可是知道一些原理的人就不多了,得不斷研究這些框架本身,它們都是經(jīng)過無數(shù)次錘煉 出來的優(yōu)秀框架

多用 redismongodb,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)無法市場需求了,這些東西也是面試中的一部分,雖不是重點(diǎn),但也是加分的選項(xiàng)

對(duì)于微服務(wù)和分布式,這個(gè)是有一定難度的,我在面試人人車的時(shí)候,一面很順利,二面被技術(shù)總監(jiān)給 pass 了,問題就是分布式不是特別熟悉!要想進(jìn)入好的互聯(lián)網(wǎng)公司,分布式和微服務(wù)是很必須的

評(píng)論0 贊同0
  •  加載中...
TesterHome

TesterHome

回答于2022-06-28 14:10


當(dāng)我刷到這條脈脈的時(shí)候,想到當(dāng)年老板面試我的時(shí)候,拿多線程問題虐我時(shí),想想當(dāng)時(shí)太難了。


悄悄給大家看幾道ucloud必問的面試題,測測能完美的回答幾道呢?

1. 有沒有一種一定能保證線程安全的代碼寫法?(偷偷告訴你,真的有?。?/p>

2. 多個(gè)線程如何保持A1B2C3等順序交替輸出?

3. synchronized volatile的CPU原語是如何實(shí)現(xiàn)的?

4. 無鎖、偏向鎖、輕量級(jí)鎖、重量級(jí)鎖有什么差別?

5. 如何正確的啟動(dòng)和停止一個(gè)線程?

6. 線程和纖程的區(qū)別的是什么?為什么纖程比較輕量級(jí)?

7. ThreadLocal有沒有內(nèi)存泄漏的問題?為什么?

8. 下列三種業(yè)務(wù),應(yīng)該如何使用線程池:

高并發(fā)、任務(wù)執(zhí)行時(shí)間短

并發(fā)不高、任務(wù)執(zhí)行時(shí)間長

并發(fā)高、業(yè)務(wù)執(zhí)行時(shí)間長


網(wǎng)上搜羅一堆答案,各式各樣,唉?。?!

如果你平時(shí)只有CRUD的經(jīng)驗(yàn),不了解多線程與高并發(fā),面對(duì)這樣面試題,大概率一頭霧水。

如果你真是這樣,要想走到架構(gòu)師的級(jí)別,不啃下高并發(fā)這塊硬骨頭是非常難的。

那么“高并發(fā)”到底該如何學(xué)呢?

不用害怕,我們?yōu)槟憔臏?zhǔn)備了高并發(fā)專題課,帶你將多線程的知識(shí)系統(tǒng)化,幫助你理解多線程在CPU層級(jí)的實(shí)現(xiàn),以及這些實(shí)現(xiàn)如何一層一層的映射到那些上億用戶,千萬QPS,百萬TPS的系統(tǒng)。

怎么樣,是不是超級(jí)酷?當(dāng)然如果你還學(xué)的不過癮的話,我們Java全棧課程也是相當(dāng)充實(shí)的,還會(huì)你手把手進(jìn)行大型互聯(lián)網(wǎng)電商項(xiàng)目實(shí)戰(zhàn)演練,讓你充分將每個(gè)知識(shí)點(diǎn)融入實(shí)際的操作中。

課程主理人是知名院校教學(xué)總監(jiān)吳剛老師,擁有數(shù)十年IT行業(yè)教學(xué)經(jīng)驗(yàn),曾任職大型互聯(lián)網(wǎng)公司首席架構(gòu)師,主導(dǎo)過多個(gè)高并發(fā)項(xiàng)目,其電商項(xiàng)目曾在雙十一活動(dòng)中承載過億的瀏覽量和成交量。他的專業(yè)素養(yǎng)與實(shí)戰(zhàn)經(jīng)驗(yàn)將為課程注入豐富的趣味和營養(yǎng)!

課呱呱,愛她(IT)就上課呱呱,IT小白變專家,課呱呱能幫你實(shí)現(xiàn)!

評(píng)論0 贊同0
  •  加載中...
Shihira

Shihira

回答于2022-06-28 14:10

理論上來說,兩年工作經(jīng)驗(yàn)的情況下,一般會(huì)問些基礎(chǔ)知識(shí),常用的開發(fā)框架,是不是碰到過一些問題,如何解決的,在之前開發(fā)的項(xiàng)目中是什么角色和負(fù)責(zé)什么,數(shù)據(jù)庫的相關(guān)知識(shí),這些一般都是從比較簡單的基礎(chǔ)問起,然后慢慢會(huì)提一些高級(jí)點(diǎn)的內(nèi)容,如實(shí)作答就好,沒接觸過直接說就行了,沒必要編。當(dāng)然,也會(huì)問一些高級(jí)的問題,比如分布式等等這樣的問題。這樣的問題主要是看平時(shí)是否接觸過,或者學(xué)習(xí)過。

一般都是考察基礎(chǔ)知識(shí),常用的框架是否熟悉,看看是不是可以直接上手做開發(fā)。新知識(shí)新理念是看下有沒有學(xué)習(xí)的欲望和學(xué)習(xí)能力。

希望對(duì)你有幫助,謝謝。

評(píng)論0 贊同0
  •  加載中...
jubincn

jubincn

回答于2022-06-28 14:10

在上周,我密集面試了若干位Java后端的候選人,工作經(jīng)驗(yàn)在3到5年間。我的標(biāo)準(zhǔn)其實(shí)不復(fù)雜:第一能干活,第二Java基礎(chǔ)要好,第三最好熟悉些分布式框架。我相信其它公司招初級(jí)開發(fā)時(shí),應(yīng)該也照著這個(gè)標(biāo)準(zhǔn)來面的。

我也知道,不少候選人能力其實(shí)不差,但面試時(shí)沒準(zhǔn)備或不會(huì)說,這樣的人可能在進(jìn)團(tuán)隊(duì)干活后確實(shí)能達(dá)到期望,但可能就無法通過面試,但面試官總是只根據(jù)面試情況來判斷。

但現(xiàn)實(shí)情況是,大多數(shù)人可能面試前沒準(zhǔn)備,或準(zhǔn)備方法不得當(dāng)。要知道,我們平時(shí)干活更偏重于業(yè)務(wù),不可能大量接觸到算法,數(shù)據(jù)結(jié)構(gòu),底層代碼這類面試必問的問題點(diǎn),換句話說,面試準(zhǔn)備點(diǎn)和平時(shí)工作要點(diǎn)匹配度很小。

作為面試官,我只能根據(jù)候選人的回答來決定面試結(jié)果。不過,與人方便自己方便,所以我在本文里,將通過一些常用的問題來介紹面試的準(zhǔn)備技巧。大家在看后一定會(huì)感嘆:只要方法得當(dāng),準(zhǔn)備面試第一不難,第二用的時(shí)間也不會(huì)太多。

別讓人感覺你只會(huì)山寨別人的代碼

框架是重點(diǎn),但別讓人感覺你只會(huì)山寨別人的代碼!在面試前,我會(huì)閱讀簡歷以查看候選人在框架方面的項(xiàng)目經(jīng)驗(yàn),在候選人的項(xiàng)目介紹的環(huán)節(jié),我也會(huì)著重關(guān)注候選人最近的框架經(jīng)驗(yàn),目前比較熱門的是SSM。

不過,一般工作在5年內(nèi)的候選人,大多僅僅是能“山寨”別人的代碼,也就是說能在現(xiàn)有框架的基礎(chǔ)上,照著別人寫的流程,擴(kuò)展出新的功能模塊。比如要寫個(gè)股票掛單的功能模塊,是會(huì)模仿現(xiàn)有的下單流程,然后從前端到后端再到數(shù)據(jù)庫,依樣畫葫蘆寫一遍,最多把功能相關(guān)的代碼點(diǎn)改掉。

其實(shí)我們每個(gè)人都這樣過來的,但在面試時(shí),如果你僅僅表現(xiàn)出這樣的能力,就和大多數(shù)人的水平差不多了,在這點(diǎn)就沒法體現(xiàn)出你的優(yōu)勢了。

我們知道,如果單純使用SSM框架,大多數(shù)項(xiàng)目都會(huì)有痛點(diǎn)。比如數(shù)據(jù)庫性能差,或者業(yè)務(wù)模塊比較復(fù)雜,并發(fā)量比較高,用Spring MVC里的Controller無法滿足跳轉(zhuǎn)的需求。所以我一般還會(huì)主動(dòng)問:你除了依照現(xiàn)有框架寫業(yè)務(wù)代碼時(shí),還做了哪些改動(dòng)?

我聽到的回答有:增加了Redis緩存,以避免頻繁調(diào)用一些不變的數(shù)據(jù)?;蛘撸贛yBitas的xml里,select語句where條件有isnull,即這個(gè)值有就增加一個(gè)where條件,對(duì)此,會(huì)對(duì)任何一個(gè)where增加一個(gè)不帶isnull的查詢條件,以免該語句當(dāng)傳入?yún)?shù)都是null時(shí),做全表掃描。或者,干脆說,后端異步返回的數(shù)據(jù)量很大,時(shí)間很長,我在項(xiàng)目里就調(diào)大了異步返回的最大時(shí)間,或者對(duì)返回信息做了壓縮處理,以增加網(wǎng)絡(luò)傳輸性能。

對(duì)于這個(gè)問題,我不在乎聽到什么回答,我只關(guān)心回答符不符邏輯。一般只要答對(duì),我就會(huì)給出“在框架層面有自己的體會(huì),有一定的了解”,否則,我就只會(huì)給出“只能在項(xiàng)目經(jīng)理帶領(lǐng)下編寫框架代碼,對(duì)框架本身了解不多”。

其實(shí),在準(zhǔn)備面試時(shí),歸納框架里的要點(diǎn)并不難,我就不信所有人在做項(xiàng)目時(shí)一點(diǎn)積累也沒,只要你說出來,可以說,這方面你就碾壓了將近7成的競爭者。

單機(jī)版夠用?適當(dāng)了解些分布式

別單純看單機(jī)版的框架,適當(dāng)了解些分布式!此外,在描述項(xiàng)目里框架技術(shù)時(shí),最好你再帶些分布式的技術(shù)。下面我列些大家可以準(zhǔn)備的分布式技術(shù)。

1、反向代理方面,nginx的基本配置,比如如何通過lua語言設(shè)置規(guī)則,如何設(shè)置session粘滯。如果可以,再看些nginx的底層,比如協(xié)議,集群設(shè)置,失效轉(zhuǎn)移等。

2、遠(yuǎn)程調(diào)用dubbo方面,可以看下dubbo和zookeeper整合的知識(shí)點(diǎn),再深一步,了解下dubbo底層的傳輸協(xié)議和序列化方式。

3、消息隊(duì)列方面,可以看下kafka或任意一種組件的使用方式,簡單點(diǎn)可以看下配置,工作組的設(shè)置,再深入點(diǎn),可以看下Kafka集群,持久化的方式,以及發(fā)送消息是用長連接還是短攔截。

以上僅僅是用3個(gè)組件舉例,大家還可以看下Redis緩存,日志框架,MyCAT分庫分表等。準(zhǔn)備的方式有兩大類,第一是要會(huì)說怎么用,這比較簡單,能通過配置文件搭建成一個(gè)功能模塊即可,第二是可以適當(dāng)讀些底層代碼,以此了解下協(xié)議,集群和失效轉(zhuǎn)移之類的高級(jí)知識(shí)點(diǎn)。

如果能在面試中侃侃而談分布式組件的底層,那么得到的評(píng)價(jià)就會(huì)比較好了,比如“深入了解框架底層”,或“框架經(jīng)驗(yàn)豐富”,這樣就算去面試架構(gòu)師也行了,更何況是高級(jí)開發(fā)。

別就知道增刪改查,得了解性能優(yōu)化

數(shù)據(jù)庫方面,別就知道增刪改查,得了解性能優(yōu)化!在實(shí)際項(xiàng)目里,大多數(shù)程序員用到的可能僅僅是增刪改查,當(dāng)我們用Mybatis時(shí),這個(gè)情況更普遍。不過如果你面試時(shí)也這樣表現(xiàn),估計(jì)你的能力就和其它競爭者差不多了。

這方面,你可以準(zhǔn)備如下的技能:

1、SQL高級(jí)方面,比如group by, having,左連接,子查詢(帶in),行轉(zhuǎn)列等高級(jí)用法。

2、建表方面,你可以考慮下,你項(xiàng)目是用三范式還是反范式,理由是什么?

3、尤其是優(yōu)化,你可以準(zhǔn)備下如何通過執(zhí)行計(jì)劃查看SQL語句改進(jìn)點(diǎn)的方式,或者其它能改善SQL性能的方式(比如建索引等)。

4、如果你感覺有能力,還可以準(zhǔn)備些MySQL集群,MyCAT分庫分表的技能。比如通過LVS+Keepalived實(shí)現(xiàn)MySQL負(fù)載均衡,MyCAT的配置方式。同樣,如果可以,也看些相關(guān)的底層代碼。

哪怕你在前三點(diǎn)表現(xiàn)一般,那么至少也能超越將近一般的候選人,尤其當(dāng)你在SQL優(yōu)化方面表現(xiàn)非常好,那么你在面試高級(jí)開發(fā)時(shí),數(shù)據(jù)庫層面一定是達(dá)標(biāo)的,如果你連第四點(diǎn)也回答非常好,那么恭喜你,你在數(shù)據(jù)庫方面的能力甚至達(dá)到了初級(jí)架構(gòu)的級(jí)別。

圍繞數(shù)據(jù)結(jié)構(gòu)和性能優(yōu)化準(zhǔn)備面試題

Java核心方面,圍繞數(shù)據(jù)結(jié)構(gòu)和性能優(yōu)化準(zhǔn)備面試題!Java核心這塊,網(wǎng)上的面試題很多,不過在此之外,大家還應(yīng)當(dāng)著重關(guān)注集合(即數(shù)據(jù)結(jié)構(gòu))和多線程并發(fā)這兩塊,在此基礎(chǔ)上,大家可以準(zhǔn)備些設(shè)計(jì)模式和虛擬機(jī)的說辭。

下面列些我一般會(huì)問的部分問題:

  • String a = "123"; String b = "123"; a==b的結(jié)果是什么?這包含了內(nèi)存,String存儲(chǔ)方式等諸多知識(shí)點(diǎn)。
  • HashMap里的hashcode方法和equal方法什么時(shí)候需要重寫?如果不重寫會(huì)有什么后果?對(duì)此大家可以進(jìn)一步了解HashMap(甚至ConcurrentHashMap)的底層實(shí)現(xiàn)。
  • ArrayList和LinkedList底層實(shí)現(xiàn)有什么差別?它們各自適用于哪些場合?對(duì)此大家也可以了解下相關(guān)底層代碼。
  • volatile關(guān)鍵字有什么作用?由此展開,大家可以了解下線程內(nèi)存和堆內(nèi)存的差別。
  • CompletableFuture,這個(gè)是JDK1.8里的新特性,通過它怎么實(shí)現(xiàn)多線程并發(fā)控制?
  • JVM里,new出來的對(duì)象是在哪個(gè)區(qū)?再深入一下,問下如何查看和優(yōu)化JVM虛擬機(jī)內(nèi)存。
  • Java的靜態(tài)代理和動(dòng)態(tài)代理有什么差別?最好結(jié)合底層代碼來說。

通過上述的問題點(diǎn),我其實(shí)不僅僅停留在“會(huì)用”級(jí)別,比如我不會(huì)問如何在ArrayList里放元素。大家可以看到,上述問題包含了“多線程并發(fā)”,“JVM優(yōu)化”,“數(shù)據(jù)結(jié)構(gòu)對(duì)象底層代碼”等細(xì)節(jié),大家也可以舉一反三,通過看一些高級(jí)知識(shí),多準(zhǔn)備些其它類似面試題。

我們知道,目前Java開發(fā)是以Web框架為主,那么為什么還要問Java核心知識(shí)點(diǎn)呢?我這個(gè)是有切身體會(huì)的。

之前在我團(tuán)隊(duì)里,我見過兩個(gè)人,一個(gè)是就會(huì)干活,具體表現(xiàn)是會(huì)用Java核心基本的API,而且也沒有深入了解的意愿(估計(jì)不知道該怎么深入了解),另一位平時(shí)專門會(huì)看些Java并發(fā),虛擬機(jī)等的高級(jí)知識(shí)。過了半年以后,后者的能力快速升級(jí)到高級(jí)開發(fā),由于對(duì)JAVA核心知識(shí)點(diǎn)了解很透徹,所以看一些分布式組件的底層實(shí)現(xiàn)沒什么大問題。而前者,一直在重復(fù)勞動(dòng),能力也只一直停留在“會(huì)干活”的層面。

而在現(xiàn)實(shí)的面試中,如果不熟悉Java核心知識(shí)點(diǎn),估計(jì)升高級(jí)開發(fā)都難,更別說是面試架構(gòu)師級(jí)別的崗位了

至少了解如何看日志排查問題

Linux方面,至少了解如何看日志排查問題!如果候選人能證明自己有“排查問題”和“解決問題”的能力,這絕對(duì)是個(gè)加分項(xiàng),但怎么證明?

目前大多數(shù)的互聯(lián)網(wǎng)項(xiàng)目,都是部署在Linux上,也就是說,日志都是在Linux,下面歸納些實(shí)際的Linux操作。

1、能通過less命令打開文件,通過Shift+G到達(dá)文件底部,再通過?+關(guān)鍵字的方式來根據(jù)關(guān)鍵來搜索信息。

2、能通過grep的方式查關(guān)鍵字,具體用法是, grep 關(guān)鍵字 文件名,如果要兩次在結(jié)果里查找的話,就用grep 關(guān)鍵字1 文件名 | 關(guān)鍵字2 --color。最后--color是高亮關(guān)鍵字。

3、能通過vi來編輯文件。

4、能通過chmod來設(shè)置文件的權(quán)限。

當(dāng)然,還有更多更實(shí)用的Linux命令,但在實(shí)際面試過程中,不少候選人連一條linux命令也不知道。還是這句話,你哪怕知道些很基本的,也比一般人強(qiáng)了。

通讀一段底層代碼,作為加分項(xiàng)

如何證明自己對(duì)一個(gè)知識(shí)點(diǎn)非常了解?莫過于能通過底層代碼來說明。我在和不少工作經(jīng)驗(yàn)在5年之內(nèi)的程序員溝通時(shí),不少人認(rèn)為這很難?確實(shí),如果要通過閱讀底層代碼了解分布式組件,那難度不小,但如果如下部分的底層代碼,并不難懂。

1、ArrayList,LinkedList的底層代碼里,包含著基于數(shù)組和鏈表的實(shí)現(xiàn)方式,如果大家能以此講清楚擴(kuò)容,“通過枚舉器遍歷“等方式,絕對(duì)能證明自己。

2、HashMap直接對(duì)應(yīng)著Hash表這個(gè)數(shù)據(jù)結(jié)構(gòu),在HashMap的底層代碼里,包含著hashcode的put,get等的操作,甚至在ConcurrentHashMap里,還包含著Lock的邏輯。我相信,如果大家在面試中,看看而言ConcurrentHashMap,再結(jié)合在紙上邊說邊畫,那一定能征服面試官。

3、可以看下靜態(tài)代理和動(dòng)態(tài)代理的實(shí)現(xiàn)方式,再深入一下,可以看下Spring AOP里的實(shí)現(xiàn)代碼。

4、或許Spirng IOC和MVC的底層實(shí)現(xiàn)代碼比較難看懂,但大家可以說些關(guān)鍵的類,根據(jù)關(guān)鍵流程說下它們的實(shí)現(xiàn)方式。

其實(shí)準(zhǔn)備的底層代碼未必要多,而且也不限于在哪個(gè)方面,比如集合里基于紅黑樹的TreeSet,基于NIO的開源框架,甚至分布式組件的Dubbo,都可以準(zhǔn)備。而且準(zhǔn)備時(shí)未必要背出所有的底層(事實(shí)上很難做到),你只要能結(jié)合一些重要的類和方法,講清楚思路即可(比如講清楚HashMap如何通過hashCode快速定位)。

那么在面試時(shí),如何找到個(gè)好機(jī)會(huì)說出你準(zhǔn)備好的上述底層代碼?在面試時(shí),總會(huì)被問到集合,Spring MVC框架等相關(guān)知識(shí)點(diǎn),你在回答時(shí),順便說一句,“我還了解這塊的底層實(shí)現(xiàn)”,那么面試官一定會(huì)追問,那么你就可以說出來了。

不要小看這個(gè)對(duì)候選人的幫助,一旦你講了,只要意思到位,那么最少能得到個(gè)“肯積極專業(yè)“的評(píng)價(jià),如果描述很清楚,那么評(píng)價(jià)就會(huì)升級(jí)到“熟悉Java核心技能(或Spring MVC),且基本功扎實(shí)”。要知道,面試中,很少有人能講清楚底層代碼,所以你拋出了這個(gè)話題,哪怕最后沒達(dá)到預(yù)期效果,面試官也不會(huì)由此對(duì)你降低評(píng)價(jià)。所以說,準(zhǔn)備這塊絕對(duì)是“有百利而無一害”的掙錢買賣。

把上述技能嵌入到你做過的項(xiàng)目里

一切的一切,把上述技能嵌入到你做過的項(xiàng)目里!在面試過程中,我經(jīng)常會(huì)聽到一些比較遺憾的回答,比如候選人對(duì)SQL優(yōu)化技能講得頭頭是道,但最后得知,這是他平時(shí)自學(xué)時(shí)掌握的,并沒用在實(shí)際項(xiàng)目里。

當(dāng)然這總比不說要好,所以我會(huì)寫下“在平時(shí)自學(xué)過SQL優(yōu)化技能”,但如果在項(xiàng)目里實(shí)踐過,那么我就會(huì)寫下“有實(shí)際數(shù)據(jù)庫SQL優(yōu)化的技能”。大家可以對(duì)比下兩者的差別,一個(gè)是偏重理論,一個(gè)是直接能干活了。其實(shí),很多場景里,我就不信在實(shí)際項(xiàng)目里一定沒有實(shí)踐過SQL優(yōu)化技能。

從這個(gè)案例中,我想告訴大家的是,你之前費(fèi)了千辛萬苦(其實(shí)方法方向得到,也不用費(fèi)太大精力)準(zhǔn)備的很多技能和說辭,最后應(yīng)該落實(shí)到你的實(shí)際項(xiàng)目里。

比如你有過在Linux日志里查詢關(guān)鍵字排查問題的經(jīng)驗(yàn),在描述時(shí)你可以帶一句,在之前的項(xiàng)目里我就這樣干的。又如,你通過看底層代碼,了解了TreeSet和HashSet的差別以及它們的適用范圍,那么你就可以回想下你之前做的項(xiàng)目,是否有個(gè)場景僅僅適用于TreeSet?如果有,那么你就可以適當(dāng)描述下項(xiàng)目的需求,然后說,通過讀底層代碼,我了解了兩者的差別,而且在這個(gè)實(shí)際需求里,我就用了TreeSet,而且我還專門做了對(duì)比性試驗(yàn),發(fā)現(xiàn)用TreeSet比HashSet要高xx個(gè)百分點(diǎn)。

請(qǐng)記得,“實(shí)踐經(jīng)驗(yàn)”一定比“理論經(jīng)驗(yàn)”值錢,而且大多數(shù)你知道的理論上的經(jīng)驗(yàn),一定在你的項(xiàng)目里用過。所以,如果你僅僅讓面試官感覺你只有“理論經(jīng)驗(yàn)”,那就太虧了。

這里根據(jù)自身的實(shí)際經(jīng)歷,整理了一份面試這些大廠的2020-2021 最新整理的 Java 面試題,希望能幫助到大家查漏補(bǔ)缺,攻克面試難關(guān)。

題庫非常全面,包括 Java 集合、JVM、多線程、Spring全家桶、Redis、Dubbo、Netty、Elasticsearch、ucloud巴巴等大廠面試題等。

部分面試題預(yù)覽內(nèi)容如下:

關(guān)注「java錦囊」,回復(fù)「面試」獲取。

評(píng)論0 贊同0
  •  加載中...
UsherChen

UsherChen

回答于2022-06-28 14:10

正在動(dòng)力節(jié)點(diǎn)學(xué)Java中..不過馬上也該刷面試題了,老師給我們解釋講解了許多,還聽有經(jīng)驗(yàn)的學(xué)長講了很多,大概都有這些:

1)集合相關(guān)問題(必問):

HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實(shí)現(xiàn)。

HashMap和Hashtable的區(qū)別。

ArrayList、LinkedList、Vector的區(qū)別。

HashMap和ConcurrentHashMap的區(qū)別。

HashMap和LinkedHashMap的區(qū)別。

2)多線程并發(fā)相關(guān)問題(必問):

創(chuàng)建線程的3種方式。

什么是線程安全。

Runnable接口和Callable接口的區(qū)別。

wait方法和sleep方法的區(qū)別。

synchronized、Lock、ReentrantLock、ReadWriteLock。

介紹下CAS(無鎖技術(shù))。

3)JVM相關(guān)問題:

介紹下垃圾收集機(jī)制(在什么時(shí)候,對(duì)什么,做了什么)。

垃圾收集有哪些算法,各自的特點(diǎn)。

類加載的過程。

雙親委派模型。

有哪些類加載器。

能不能自己寫一個(gè)類叫java.lang.String。

4)設(shè)計(jì)模式相關(guān)問題(必問):

先問你熟悉哪些設(shè)計(jì)模式

然后再具體問你某個(gè)設(shè)計(jì)模式具體實(shí)現(xiàn)和相關(guān)擴(kuò)展問題。

5)數(shù)據(jù)庫相關(guān)問題,針對(duì)Mysql(必問):

給題目讓你手寫SQL。

有沒有SQL優(yōu)化經(jīng)驗(yàn)。

Mysql索引的數(shù)據(jù)結(jié)構(gòu)。

SQL怎么進(jìn)行優(yōu)化。

SQL關(guān)鍵字的執(zhí)行順序。

有哪幾種索引。

6)框架相關(guān)問題:

Hibernate和Mybatis的區(qū)別。

Spring MVC和Struts2的區(qū)別。

Spring用了哪些設(shè)計(jì)模式。

Spring中AOP主要用來做什么。

Spring注入bean的方式。

什么是IOC,什么是依賴注入。

Spring是單例還是多例,怎么修改。

Spring事務(wù)隔離級(jí)別和傳播性。

介紹下Mybatis/Hibernate的緩存機(jī)制。

Mybatis的mapper文件中#和$的區(qū)別。

Mybatis的mapper文件中resultType和resultMap的區(qū)別。

Mybatis中DAO層接口沒有寫實(shí)現(xiàn)類,Mapper中的方法和DAO接口方法是怎么綁定到一起的,其內(nèi)部是怎么實(shí)現(xiàn)的。

7)可能會(huì)遇到問題:

介紹下棧和隊(duì)列。

IO和NIO的區(qū)別。

介紹下B樹、二叉樹。

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

int和Integer的自動(dòng)拆箱/裝箱相關(guān)問題。

xml全稱是什么。

常量池相關(guān)問題。

==和equals的區(qū)別。

重載和重寫的區(qū)別。

String和StringBuilder、StringBuffer的區(qū)別。

靜態(tài)變量、實(shí)例變量、局部變量線程安全嗎,為什么。

常用的linux命令。

try、catch、finally都有return語句時(shí)執(zhí)行哪個(gè)。

ajax的4個(gè)字母分別是什么意思。

分布式鎖的實(shí)現(xiàn)。

分布式session存儲(chǔ)解決方案。

評(píng)論0 贊同0
  •  加載中...
liuhh

liuhh

回答于2022-06-28 14:10

我自己是小白,不考java吃飯,但是也有在學(xué),也看了一些前人的經(jīng)驗(yàn)之談,Java畢竟功能強(qiáng)大,所以崗位細(xì)分相對(duì)來講也比較多,看自己主要是從事哪一塊的吧,比方說是架構(gòu)師的話肯定會(huì)問一些架構(gòu)相關(guān)的問題,還有就是一些算法,排序啊之類的。

????????????????????????????????????????????????????????????????????????

我就是覺得很有意思,才接觸這塊的,也沒打算用這個(gè)找工作

評(píng)論0 贊同0
  •  加載中...
Render

Render

回答于2022-06-28 14:10

講點(diǎn)大眾的,你也知道的。

1、自我介紹

2、項(xiàng)目經(jīng)驗(yàn)、工作履歷

3、Java高級(jí)的內(nèi)容,這點(diǎn)我不是很清楚了。

4、有沒有blog,github上有沒有代碼等等

祝樓主一切順利~~

評(píng)論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<