更新時(shí)間:2020-01-08 16:16:24 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽6981次

面試流程
先說(shuō)下面試流程,一般大公司都有3-4輪技術(shù)面,1輪的HR面。就唯品會(huì)而言,我共經(jīng)歷了4輪技術(shù)面,前兩輪主要是問(wèn)基礎(chǔ)和項(xiàng)目實(shí)現(xiàn),第3輪是交叉面,兩個(gè)面試官,主要是問(wèn)項(xiàng)目實(shí)現(xiàn)和拓展。第4輪是部門老大面,主要就問(wèn)一些架構(gòu)、技術(shù)和業(yè)務(wù)的理解、個(gè)人發(fā)展比較抽象的東西了,現(xiàn)在基本也是這樣的。
技術(shù)考察
總的來(lái)說(shuō),技術(shù)相關(guān)的考察主要分為兩大塊,一是基礎(chǔ),二是經(jīng)驗(yàn),基礎(chǔ)包括java基礎(chǔ)、數(shù)據(jù)庫(kù)、中間件等,來(lái)自于日常的積累和面試前的準(zhǔn)備。
經(jīng)驗(yàn)包括以往做過(guò)的項(xiàng)目、解決的問(wèn)題、以及一些場(chǎng)景題(比如你的項(xiàng)目如果流量大了十倍如何保證可用)。
集合
集合分為兩大塊:java.util包下的非線程安全集合和java.util.concurrent下的線程安全集合。
List
ArrayList與LinkedList的實(shí)現(xiàn)和區(qū)別
Map
HashMap:了解其數(shù)據(jù)結(jié)構(gòu)、hash沖突如何解決(鏈表和紅黑樹(shù))、擴(kuò)容時(shí)機(jī)、擴(kuò)容時(shí)避免rehash的優(yōu)化
LinkedHashMap:了解基本原理、哪兩種有序、如何用它實(shí)現(xiàn)LRU
TreeMap:了解數(shù)據(jù)結(jié)構(gòu)、了解其key對(duì)象為什么必須要實(shí)現(xiàn)Compare接口、如何用它實(shí)現(xiàn)一致性哈希
Set
Set基本上都是由對(duì)應(yīng)的map實(shí)現(xiàn),簡(jiǎn)單看看就好
常見(jiàn)問(wèn)題
hashmap如何解決hash沖突,為什么hashmap中的鏈表需要轉(zhuǎn)成紅黑樹(shù)?
hashmap什么時(shí)候會(huì)觸發(fā)擴(kuò)容?
jdk1.8之前并發(fā)操作hashmap時(shí)為什么會(huì)有死循環(huán)的問(wèn)題?
hashmap擴(kuò)容時(shí)每個(gè)entry需要再計(jì)算一次hash嗎?
hashmap的數(shù)組長(zhǎng)度為什么要保證是2的冪?
如何用LinkedHashMap實(shí)現(xiàn)LRU?
如何用TreeMap實(shí)現(xiàn)一致性hash?
中間件、存儲(chǔ)、以及其他框架
Spring
bean的生命周期、循環(huán)依賴問(wèn)題、spring cloud(如項(xiàng)目中有用過(guò))、AOP的實(shí)現(xiàn)、spring事務(wù)傳播
常見(jiàn)問(wèn)題
java動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理的區(qū)別(經(jīng)常結(jié)合spring一起問(wèn)所以就放這里了)
spring中bean的生命周期是怎樣的?
屬性注入和構(gòu)造器注入哪種會(huì)有循環(huán)依賴的問(wèn)題?
Dubbo(或其他Rpc框架)
了解一個(gè)常用RPC框架如Dubbo的實(shí)現(xiàn):服務(wù)發(fā)現(xiàn)、路由、異步調(diào)用、限流降級(jí)、失敗重試
常見(jiàn)問(wèn)題
Dubbo如何做負(fù)載均衡?
Dubbo如何做限流降級(jí)?
Dubbo如何優(yōu)雅的下線服務(wù)?
Dubbo如何實(shí)現(xiàn)異步調(diào)用的?
Redis(或其他緩存系統(tǒng))
redis工作模型、redis持久化、redis過(guò)期淘汰機(jī)制、redis分布式集群的常見(jiàn)形式、分布式鎖、緩存擊穿、緩存雪崩、緩存一致性問(wèn)題
常見(jiàn)問(wèn)題
redis性能為什么高?
單線程的redis如何利用多核cpu機(jī)器?
redis的緩存淘汰策略?
redis如何持久化數(shù)據(jù)?
redis有哪幾種數(shù)據(jù)結(jié)構(gòu)?
redis集群有哪幾種形式?
有海量key和value都比較小的數(shù)據(jù),在redis中如何存儲(chǔ)才更省內(nèi)存?
如何保證redis和DB中的數(shù)據(jù)一致性?
如何解決緩存穿透和緩存雪崩?
如何用redis實(shí)現(xiàn)分布式鎖?
Mysql
事務(wù)隔離級(jí)別、鎖、索引的數(shù)據(jù)結(jié)構(gòu)、聚簇索引和非聚簇索引、最左匹配原則、查詢優(yōu)化(explain等命令)
RocketMq(或其他消息中間件)
了解一個(gè)常用消息中間件如RocketMq的實(shí)現(xiàn):如何保證高可用和高吞吐、消息順序、重復(fù)消費(fèi)、事務(wù)消息、延遲消息、死信隊(duì)列
常見(jiàn)問(wèn)題
RocketMq如何保證高可用的?
RocketMq如何保證高吞吐的?
RocketMq的消息是有序的嗎?
RocketMq的消息局部順序是如何保證的?
RocketMq事務(wù)消息的實(shí)現(xiàn)機(jī)制?
RocketMq會(huì)有重復(fù)消費(fèi)的問(wèn)題嗎?如何解決?
RocketMq支持什么級(jí)別的延遲消息?如何實(shí)現(xiàn)的?
RocketMq是推模型還是拉模型?
Consumer的負(fù)載均衡是怎么樣的?
常見(jiàn)問(wèn)題
Mysql(innondb 下同) 有哪幾種事務(wù)隔離級(jí)別?
不同事務(wù)隔離級(jí)別分別會(huì)加哪些鎖?
mysql的行鎖、表鎖、間隙鎖、意向鎖分別是做什么的?
說(shuō)說(shuō)什么是最左匹配?
如何優(yōu)化慢查詢?
mysql索引為什么用的是b+ tree而不是b tree、紅黑樹(shù)
分庫(kù)分表如何選擇分表鍵
分庫(kù)分表的情況下,查詢時(shí)一般是如何做排序的?
zk
zk大致原理(可以了解下原理相近的Raft算法)、zk實(shí)現(xiàn)分布式鎖、zk做集群master選舉
常見(jiàn)問(wèn)題
如何用zk實(shí)現(xiàn)分布式鎖,與redis分布式鎖有和優(yōu)缺點(diǎn)

以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“2020年唯品會(huì)Java高級(jí)面試題”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)推薦
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)