Java开发环境!java基础知识点总结
一面(個(gè)人感覺(jué)回答得還不錯(cuò))
1. 自我介紹
2. 說(shuō)項(xiàng)目,項(xiàng)目問(wèn)的非常深(本人提到之前做過(guò)的一篇關(guān)于FULL GC的問(wèn)題定位和優(yōu)化的項(xiàng)目以及一個(gè)多并發(fā)的項(xiàng)目)
2.1 對(duì)于自己產(chǎn)于過(guò)項(xiàng)目的系統(tǒng)定位是否清楚?
2.2 對(duì)于系統(tǒng)的各個(gè)模塊是否清楚?
2.3 每個(gè)接口的tps?
2.4 對(duì)于上下游系統(tǒng)的依賴?
2.5 對(duì)于使用到的中間件、框架是否清楚?
3. 你覺(jué)得你做的項(xiàng)目中最有亮點(diǎn)的事情?
4. memcache redis同類中間的差異、優(yōu)缺點(diǎn)?使用注意點(diǎn)有哪些?
memcache可以存儲(chǔ)的數(shù)據(jù)類型只有字符串類型,而redis可以存儲(chǔ)字符,list,sorted List,hash數(shù)據(jù)類型的數(shù)據(jù);
memcache不支持?jǐn)?shù)據(jù)持久化,redis支持RDB,AOF持久化;
memcache不支持集群,redis支持redis-cluster集群
5. redis分布式鎖說(shuō)說(shuō)
我提到了redis的setnx()方法,以及使用redis的KV結(jié)構(gòu),lock作為key,key對(duì)應(yīng)的value使用map結(jié)構(gòu),map中使用請(qǐng)求requestId作為map的key,過(guò)期時(shí)間作為map的value,獲取鎖使用cas算法,比較時(shí)間是否過(guò)期來(lái)獲取鎖和釋放鎖
6. TCP,UDP
7. 多并發(fā)項(xiàng)目的并發(fā)量,有沒(méi)有壓測(cè)過(guò),以及QPS,請(qǐng)求的消息量太大,使用自己創(chuàng)建的任務(wù)隊(duì)列會(huì)不會(huì)使內(nèi)存爆?
8. Redis集群主從數(shù)據(jù)同步
主從集群實(shí)現(xiàn)了數(shù)據(jù)的讀寫分離,主服務(wù)器負(fù)責(zé)讀寫,偏重寫,從服務(wù)器只負(fù)責(zé)讀。主服務(wù)器啟動(dòng)之后向從服務(wù)器發(fā)送日志文件,從服務(wù)器根據(jù)日志文件進(jìn)行數(shù)據(jù)的更新,之后如果主服務(wù)器有寫操作,也會(huì)向從服務(wù)器發(fā)送相應(yīng)的寫操作
9. Zookeeper實(shí)現(xiàn)選舉的原理
zk的選舉過(guò)程中其起始所有結(jié)點(diǎn)的狀態(tài)為looking,當(dāng)某個(gè)結(jié)點(diǎn)的選票超過(guò)所有結(jié)點(diǎn)數(shù)的一半,該結(jié)點(diǎn)就會(huì)成為leader,結(jié)點(diǎn)狀態(tài)為leading,其他結(jié)點(diǎn)會(huì)成為followers,結(jié)點(diǎn)狀態(tài)為following。選舉的依據(jù)是(sid,zxid)數(shù)據(jù),sid代表結(jié)點(diǎn)的ID,zxid代表事務(wù)ID,選舉過(guò)程中每個(gè)結(jié)點(diǎn)第一輪選舉會(huì)選舉自己作為leader,將(sid,zxid)發(fā)送給其他結(jié)點(diǎn),其他結(jié)點(diǎn)收到數(shù)據(jù)(sid,zxid)與自身的數(shù)據(jù)做比較,如果zxid比自身zxid的要大,則直接選舉當(dāng)前結(jié)點(diǎn);如果小于,堅(jiān)持選舉自己;如果zxid相等,比較sid哪個(gè)大,大者作為leader。
10. 說(shuō)說(shuō)分布式(我說(shuō)的是Dubbo)
11. 數(shù)據(jù)庫(kù)事務(wù),分布式數(shù)據(jù)一致性如何實(shí)現(xiàn)?
讀者可以了解一下ZAB協(xié)議,我大概就是圍著ZAB協(xié)議說(shuō)的
12. SpringIOC,SpringAOP
我簡(jiǎn)單說(shuō)了說(shuō)IOC,AOP的原理,以及原理依賴的模式
13. 數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別
四大隔離界別:Uncommitted-read Commited-read Repeated-read Serializable分別針對(duì)數(shù)據(jù)庫(kù)臟讀,不可重復(fù)讀,虛讀問(wèn)題
14. 談?wù)凴PC
RPC遠(yuǎn)程調(diào)用,說(shuō)了說(shuō)原理,使用到的組件,以及RPC主要的任務(wù):序列化,傳輸數(shù)據(jù),方法調(diào)用(方法對(duì)應(yīng)的ID)
15. 算法題:筆試題-最短路徑問(wèn)題(這道題是通過(guò)的)
某物流派送員p,需要給a、b、c、d4個(gè)快遞點(diǎn)派送包裹,請(qǐng)問(wèn)派送員需要選擇什么的路線,才能完成最短路程的派送。假設(shè)如圖派送員的起點(diǎn)坐標(biāo)(0,0),派送路線只能沿著圖中的方格邊行駛,每個(gè)小格都是正方形,且邊長(zhǎng)為1,如p到d的距離就是4。隨機(jī)輸入n個(gè)派送點(diǎn)坐標(biāo),求輸出最短派送路線值(從起點(diǎn)開始完成n個(gè)點(diǎn)派送并回到起始點(diǎn)的距離)。
我的做法是使用排列算法,將所有的情況排列出來(lái),計(jì)算最短路徑
二面(個(gè)人感覺(jué)回答的特別垃圾,六道問(wèn)題回答了兩道)
1. 自我介紹
2. 懟項(xiàng)目,各個(gè)角度刁難
3. FULL GC問(wèn)題排查工具
我做項(xiàng)目時(shí)其實(shí)沒(méi)有使用什么工具,就是用Linux命令TOP,TOP交互命令 1,H;jsatck,jstat以及JVM的相關(guān)參數(shù)和JVM日志的查看
4. 從事開發(fā)遇到最具有難度的問(wèn)題
5. Spring事務(wù),嵌套事務(wù)
這道題其實(shí)我是被問(wèn)懵了,我回答得相當(dāng)不好,一直回答事務(wù)隔離那一塊,面試完我總結(jié)了一下有關(guān)Spring事務(wù)相關(guān)知識(shí)點(diǎn)
6. 面向接口編程的好處是什么
問(wèn)的問(wèn)題太抽象,我回答不好,面試官說(shuō)不夠完善
7. 數(shù)據(jù)庫(kù)兩個(gè)insert同時(shí)操作同一張表,第一個(gè)線程操作一半,問(wèn)第二個(gè)線程會(huì)發(fā)生什么?
我回答的稀巴爛,下來(lái)查了一下,大概就是說(shuō)這里涉及到的鎖是間歇鎖,讀者可以看看相關(guān)知識(shí)
8. 說(shuō)說(shuō)死鎖
舉個(gè)例子,兩個(gè)線程1和2,兩個(gè)鎖a和b,線程1拿到a鎖后申請(qǐng)要b鎖,而同時(shí)線程2已經(jīng)拿到b鎖,要申請(qǐng)a鎖,兩個(gè)線程之間陷入僵持狀態(tài)
最后的內(nèi)容
在開頭跟大家分享的時(shí)候我就說(shuō),面試我是沒(méi)有做好準(zhǔn)備的,全靠平時(shí)的積累,確實(shí)有點(diǎn)臨時(shí)抱佛腳了,以至于我自己還是挺懊惱的。(準(zhǔn)備好了或許可以拿個(gè)40k,沒(méi)做準(zhǔn)備只有30k+,你們懂那種感覺(jué)嗎)
如何準(zhǔn)備面試?
1、前期鋪墊(技術(shù)沉積)
程序員面試其實(shí)是對(duì)于技術(shù)的一次摸底考試,你的技術(shù)牛逼,那你就是大爺。大廠對(duì)于技術(shù)的要求主要體現(xiàn)在:基礎(chǔ),原理,深入研究源碼,廣度,實(shí)戰(zhàn)五個(gè)方面,也只有將原理理論結(jié)合實(shí)戰(zhàn)才能把技術(shù)點(diǎn)吃透。
下面是我會(huì)看的一些資料筆記,希望能幫助大家由淺入深,由點(diǎn)到面的學(xué)習(xí)Java,應(yīng)對(duì)大廠面試官的靈魂追問(wèn),有需要的話就戳這里:藍(lán)色傳送門打包帶走吧。
這部分內(nèi)容過(guò)多,小編只貼出部分內(nèi)容展示給大家了,見諒見諒!
- Java程序員必看《Java開發(fā)核心筆記(華山版)》
- Redis學(xué)習(xí)筆記
- Java并發(fā)編程學(xué)習(xí)筆記
四部分,詳細(xì)拆分并發(fā)編程——并發(fā)編程+模式篇+應(yīng)用篇+原理篇
- Java程序員必看書籍《深入理解 ava虛擬機(jī)第3版》(pdf版)
- 大廠面試必問(wèn)——數(shù)據(jù)結(jié)構(gòu)與算法匯集筆記
其他像Spring,SpringBoot,SpringCloud,SpringCloudAlibaba,Dubbo,Zookeeper,Kafka,RocketMQ,RabbitMQ,Netty,MySQL,Docker,K8s等等我都整理好,這里就不一一展示了。
2、狂刷面試題
技術(shù)主要是體現(xiàn)在平時(shí)的積累實(shí)用,面試前準(zhǔn)備兩個(gè)月的時(shí)間再好好復(fù)習(xí)一遍,緊接著就可以刷面試題了,下面這些面試題都是小編精心整理的,貼給大家看看。
①大廠高頻45道筆試題(智商題)
②BAT大廠面試總結(jié)(部分內(nèi)容截圖)
③面試總結(jié)
3、結(jié)合實(shí)際,修改簡(jiǎn)歷
程序員的簡(jiǎn)歷一定要多下一些功夫,尤其是對(duì)一些字眼要再三斟酌,如“精通、熟悉、了解”這三者的區(qū)別一定要區(qū)分清楚,否則就是在給自己挖坑了。當(dāng)然不會(huì)包裝,我可以將我的簡(jiǎn)歷給你參考參考,如果還不夠,那下面這些簡(jiǎn)歷模板任你挑選:
以上分享,希望大家可以在金三銀四跳槽季找到一份好工作,但千萬(wàn)也記住,技術(shù)一定是平時(shí)工作種累計(jì)或者自學(xué)(或報(bào)班跟著老師學(xué))通過(guò)實(shí)戰(zhàn)累計(jì)的,千萬(wàn)不要臨時(shí)抱佛腳。
另外,面試中遇到不會(huì)的問(wèn)題不妨嘗試講講自己的思路,因?yàn)橛行﹩?wèn)題不是考察我們的編程能力,而是邏輯思維表達(dá)能力;最后平時(shí)要進(jìn)行自我分析與評(píng)價(jià),做好職業(yè)規(guī)劃,不斷摸索,提高自己的編程能力和抽象思維能力。
萬(wàn)也記住,技術(shù)一定是平時(shí)工作種累計(jì)或者自學(xué)(或報(bào)班跟著老師學(xué))通過(guò)實(shí)戰(zhàn)累計(jì)的,千萬(wàn)不要臨時(shí)抱佛腳。
另外,面試中遇到不會(huì)的問(wèn)題不妨嘗試講講自己的思路,因?yàn)橛行﹩?wèn)題不是考察我們的編程能力,而是邏輯思維表達(dá)能力;最后平時(shí)要進(jìn)行自我分析與評(píng)價(jià),做好職業(yè)規(guī)劃,不斷摸索,提高自己的編程能力和抽象思維能力。
以上文章中,提及到的所有的筆記內(nèi)容、面試題等資料,均可以免費(fèi)分享給大家學(xué)習(xí),有需要的話就戳這里打包帶走吧。
總結(jié)
以上是生活随笔為你收集整理的Java开发环境!java基础知识点总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java开发环境!java写猜数字小游戏
- 下一篇: Java开发环境!java工程师薪资行情