三面美团Java岗,面试竟然被这31道Java基础题难倒了
01 分布式限流:Nginx+ZooKeeper
1.1 分布式限流之Nginx
-
請解釋一下什么是 Nginx?
-
請列舉 x Nginx 的一些特性。
-
請列舉 x Nginx 和 和 Apache 之間的不同點(diǎn)
-
請解釋 x Nginx 如何處理 P HTTP 請求。
-
在 x Nginx 中,如何使用未定義的服務(wù)器名稱來阻止處理請求?
-
使用 “ 反向代理服務(wù)器 ”
-
請列舉 x Nginx 服務(wù)器的最佳用途。
-
請解釋 x Nginx 服務(wù)器上的 r Master 和 和 r Worker 進(jìn)程分別是什么?
-
請解釋你如何通過不同于 0 80 的端口開啟 Nginx?
-
請解釋是否有可能將 x Nginx 的錯(cuò)誤替換為 2 502 錯(cuò)誤?
-
在 x Nginx 中,解釋如何在 L URL 中保留雙斜線? ?
-
請解釋 e ngx_http_upstream_module 的作用是什么?
-
請解釋什么是 K C10K 問題?
-
請陳述 s stub_status 和 和 r sub_filter 指令的作用是什么?
-
解釋 x Nginx 是否支持將請求壓縮到上游?
-
解釋如何在 x Nginx 中獲得當(dāng)前的時(shí)間?
-
用 x Nginx 服務(wù)器解釋s -s 的目的是什么?
-
解釋如何在 x Nginx 服務(wù)器上添加模塊?
分布式限流之Nginx的答案解析如下:
for:Nginx+常見應(yīng)用技術(shù)指南[Nginx++Tips]+第二版
1.2 分布式限流之ZooKeeper
-
ZooKeeper 是什么?
-
ZooKeeper 提供了什么?
-
Zookeeper 文件系統(tǒng)
-
四種類型的 znode
-
Zookeeper 通知機(jī)制
-
Zookeeper 做了什么?
-
zk 的命名服務(wù)(文件系統(tǒng))
-
zk 的配置管理(文件系統(tǒng)、通知機(jī)制)
-
Zookeeper 集群管理(文件系統(tǒng)、通知機(jī)制)
-
Zookeeper 分布式鎖(文件系統(tǒng)、通知機(jī)制)
-
獲取分布式鎖的流程
-
Zookeeper 隊(duì)列管理(文件系統(tǒng)、通知機(jī)制)
-
Zookeeper 數(shù)據(jù)復(fù)制
-
Zookeeper 工作原理
-
zookeeper 是如何保證事務(wù)的順序一致性的?
-
Zookeeper 下 Server 工作狀態(tài)
-
zookeeper 是如何選取主 leader 的?
-
分布式通知和協(xié)調(diào)
-
機(jī)器中為什么會有 leader?
-
zk 節(jié)點(diǎn)宕機(jī)如何處理?
-
Zookeeper 同步流程
-
zookeeper 負(fù)載均衡和 nginx 負(fù)載均衡區(qū)別
-
zookeeper watch 機(jī)制
分布式限流之ZooKeeper的答案解析如下
for:ZK開發(fā)手冊
02 分布式通訊:ActiveMQ+Kafka+RabbitMQ
2.1 分布式通訊之ActiveMQ
-
什么是 ActiveMQ?
-
ActiveMQ 服務(wù)器宕機(jī)怎么辦?
-
丟消息怎么辦?
-
持久化消息非常慢
-
消息的不均勻消費(fèi)。
-
死信隊(duì)列。
-
ActiveMQ 中的消息重發(fā)時(shí)間間隔和重發(fā)次數(shù)嗎?
分布式通訊之ActiveMQ的答案解析如下:
for:手寫RocketMQ筆記
2.2 分布式通訊之kafka
-
Kafka 的設(shè)計(jì)時(shí)什么樣的呢?
-
數(shù)據(jù)傳輸?shù)氖挛锒x有哪三種?
-
Kafka 判斷一個(gè)節(jié)點(diǎn)是否還活著有那兩個(gè)條件?
-
producer 是否直接將數(shù)據(jù)發(fā)送到 broker 的 leader(主節(jié)點(diǎn))?
-
Kafa consumer 是否可以消費(fèi)指定分區(qū)消息?
-
Kafka 消息是采用 Pull 模式,還是 Push 模式?
-
Kafka 存儲在硬盤上的消息格式是什么?
-
Kafka 高效文件存儲設(shè)計(jì)特點(diǎn):
-
Kafka 與傳統(tǒng)消息系統(tǒng)之間有三個(gè)關(guān)鍵區(qū)別
-
Kafka 創(chuàng)建 Topic 時(shí)如何將分區(qū)放置到不同的 Broker 中
-
Kafka 新建的分區(qū)會在哪個(gè)目錄下創(chuàng)建
-
partition 的數(shù)據(jù)如何保存到硬盤
-
kafka 的 ack 機(jī)制
-
Kafka 的消費(fèi)者如何消費(fèi)數(shù)據(jù)
-
消費(fèi)者負(fù)載均衡策略
-
數(shù)據(jù)有序
-
kafaka 生產(chǎn)數(shù)據(jù)時(shí)數(shù)據(jù)的分組策略
分布式通訊之kafka的答案解析如下:
for:Kafka源碼解析與實(shí)戰(zhàn)
2.3 分布式通訊之RabbitMQ
-
RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
-
什么是元數(shù)據(jù)?元數(shù)據(jù)分為哪些類型?包括哪些內(nèi)容?與 cluster 相關(guān)的元數(shù)據(jù)有哪些?元數(shù)據(jù)是如何保存的?元數(shù)據(jù)在 cluster 中是如何分布的?
-
RAM node 和 disk node 的區(qū)別?
-
RabbitMQ 上的一個(gè) queue 中存放的 message 是否有數(shù)量限制?
-
RabbitMQ 概念里的 channel、exchange 和 queue 這些東東是邏輯概念,還是對應(yīng)著進(jìn)程實(shí)體?這些東東分別起什么作用?
-
vhost 是什么?起什么作用?
-
在單 node 系統(tǒng)和多 node 構(gòu)成的 cluster 系統(tǒng)中聲明 queue、exchange ,以及進(jìn)行 binding 會有什么不同?
-
客戶端連接到 cluster 中的任意 node 上是否都能正常工作?
-
cluster 中 node 的失效會對 consumer 產(chǎn)生什么影響?若是在 cluster 中創(chuàng)建了mirrored queue ,這時(shí) node 失效會對 consumer 產(chǎn)生什么影響?
-
能夠在地理上分開的不同數(shù)據(jù)中心使用 RabbitMQ cluster 么?
-
為什么 heavy RPC 的使用場景下不建議采用 disk node ?
-
向不存在的 exchange 發(fā) publish 消息會發(fā)生什么?向不存在的 queue 執(zhí)行consume 動作會發(fā)生什么?
-
routing_key 和 binding_key 的最大長度是多少?
-
RabbitMQ 允許發(fā)送的 message 最大可達(dá)多大?
-
什么情況下 producer 不主動創(chuàng)建 queue 是安全的?
-
“dead letter”queue 的用途?
-
為什么說保證 message 被可靠持久化的條件是 queue 和 exchange 具有durable 屬性,同時(shí) message 具有 persistent 屬性才行?
-
什么情況下會出現(xiàn) blackholed 問題?
-
如何防止出現(xiàn) blackholed 問題?
-
Consumer Cancellation Notification 機(jī)制用于什么場景?
-
Basic.Reject 的用法是什么?
-
為什么不應(yīng)該對所有的 message 都使用持久化機(jī)制?
-
RabbitMQ 中的 cluster、mirrored queue,以及 warrens 機(jī)制分別用于解決什么問題?存在哪些問題?
分布式通訊之RabbitMQ的答案解析如下:
for:RabbitMQ實(shí)戰(zhàn)指南
03 分布式緩存:memcached+MongoDB+Redis
3.1 分布式緩存之memcached
-
memcached 是怎么工作的?
-
memcached 最大的優(yōu)勢是什么?
-
memcached 和服務(wù)器的 local cache (比如 PHP 的 的 APC 、mmap 文件等)相比,有什么優(yōu)缺點(diǎn)?
-
memcached 和 和 MySQL 的 的 query cache 相比,有什么優(yōu)缺點(diǎn)?
-
memcached 的 的 cache 機(jī)制是怎樣的?
-
memcached 如何實(shí)現(xiàn)冗余機(jī)制?
-
我需要把 memcached 中的 item 批量導(dǎo)出導(dǎo)入,怎么辦?
-
memcached 如何處理容錯(cuò)的?
-
如何將 memcached 中 中 item 批量導(dǎo)入導(dǎo)出?
-
memcached 是如何做身份驗(yàn)證的?
-
memcached 的多線程是什么?如何使用它們?
-
memcached 能接受的 key 的最大長度是多少?
-
memcached 對 對 item 的過期時(shí)間有什么限制?
-
memcached 最大能存儲多大的單個(gè) item ?
-
為什么單個(gè) item 的大小被限制在 1M byte 之內(nèi)?
分布式緩存之memcached的答案解析如下:
3.2 分布式緩存之MongoDB
-
你說的 NoSQL 數(shù)據(jù)庫是什么意思?NoSQL 與 RDBMS 直接有什么區(qū)別?為什么要使用和不使用NoSQL 數(shù)據(jù)庫?說一說 NoSQL 數(shù)據(jù)庫的幾個(gè)優(yōu)點(diǎn)?
-
NoSQL 數(shù)據(jù)庫有哪些類型?
-
MySQL 與 MongoDB 之間最基本的差別是什么?
-
你怎么比較 MongoDB、CouchDB 及 CouchBase?
-
MongoDB 成為最好 NoSQL 數(shù)據(jù)庫的原因是什么?
-
32 位系統(tǒng)上有什么細(xì)微差別?
-
journal 回放在條目(entry)不完整時(shí)(比如恰巧有一個(gè)中途故障了)會遇到問題嗎?
-
分析器在 MongoDB 中的作用是什么?
-
名字空間(namespace)是什么?
-
如果用戶移除對象的屬性,該屬性是否從存儲層中刪除?
-
能否使用日志特征進(jìn)行安全備份?
-
允許空值 null 嗎?
-
更新操作立刻 fsync 到磁盤?
-
如何執(zhí)行事務(wù)/加鎖?
-
為什么我的數(shù)據(jù)文件如此龐大?
-
啟用備份故障恢復(fù)需要多久?
-
什么是 master 或 primary?
-
什么是 secondary 或 slave?
-
我必須調(diào)用 getLastError 來確保寫操作生效了么?
-
我應(yīng)該啟動一個(gè)集群分片(sharded)還是一個(gè)非集群分片的 MongoDB 環(huán)境?
-
分片(sharding)和復(fù)制(replication)是怎樣工作的?
-
數(shù)據(jù)在什么時(shí)候才會擴(kuò)展到多個(gè)分片(shard)里?
-
當(dāng)我試圖更新一個(gè)正在被遷移的塊(chunk)上的文檔時(shí)會發(fā)生什么?
-
如果在一個(gè)分片(shard)停止或者很慢的時(shí)候,我發(fā)起一個(gè)查詢會怎樣?
-
我可以把 moveChunk 目錄里的舊文件刪除嗎?
-
我怎么查看 Mongo 正在使用的鏈接?
-
如果塊移動操作(moveChunk)失敗了,我需要手動清除部分轉(zhuǎn)移的文檔嗎?
-
如果我在使用復(fù)制技術(shù)(replication),可以一部分使用日志(journaling)而其他部分則不使用嗎?
-
當(dāng)更新一個(gè)正在被遷移的塊(Chunk)上的文檔時(shí)會發(fā)生什么?
-
MongoDB 在 A:{B,C}上建立索引,查詢 A:{B,C}和 A:{C,B}都會使用索引嗎?
-
如果一個(gè)分片(Shard)停止或很慢的時(shí)候,發(fā)起一個(gè)查詢會怎樣?
-
MongoDB 支持存儲過程嗎?如果支持的話,怎么用?
-
如何理解 MongoDB 中的 GridFS 機(jī)制,MongoDB 為何使用 GridFS 來存儲文件?
分布式緩存之MongoDB的答案解析如下:
for:MongoDB權(quán)威指南
3.3 分布式緩存之Redis
-
redis 簡介
-
為什么要用 redis /為什么要用緩存(高性能、高并發(fā))
-
為什么要用 redis 而不用 map/guava 做緩存?
-
redis 和 memcached 的區(qū)別
-
redis 常見數(shù)據(jù)結(jié)構(gòu)以及使用場景分析(String、Hash、List、Set、Sorted Set)
-
redis 設(shè)置過期時(shí)間
-
redis 內(nèi)存淘汰機(jī)制(MySQL里有2000w數(shù)據(jù),Redis中只存20w的數(shù)據(jù),如何保證Redis中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)?)
-
redis 持久化機(jī)制(怎么保證 redis 掛掉之后再重啟數(shù)據(jù)可以進(jìn)行恢復(fù))
-
redis 事務(wù)
-
Redis 常見異常及解決方案(緩存穿透、緩存雪崩、緩存預(yù)熱、緩存降級)
-
分布式環(huán)境下常見的應(yīng)用場景(分布式鎖、分布式自增 ID)
-
Redis 集群模式(主從模式、哨兵模式、Cluster 集群模式)
-
如何解決 Redis 的并發(fā)競爭 Key 問題
-
如何保證緩存與數(shù)據(jù)庫雙寫時(shí)的數(shù)據(jù)一致性?
分布式緩存之Redis的答案解析如下:
for:Redis設(shè)計(jì)與實(shí)現(xiàn)
最后分享一波我的面試寶典——一線互聯(lián)網(wǎng)大廠Java核心面試題庫
以下是我個(gè)人的一些做法,希望可以給各位提供一些幫助:
點(diǎn)擊《一線互聯(lián)網(wǎng)大廠Java核心面試題庫》即可免費(fèi)領(lǐng)取,整理了很長一段時(shí)間,拿來復(fù)習(xí)面試刷題非常合適,其中包括了Java基礎(chǔ)、異常、集合、并發(fā)編程、JVM、Spring全家桶、MyBatis、Redis、數(shù)據(jù)庫、中間件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且還會持續(xù)的更新…可star一下!
283頁的Java進(jìn)階核心pdf文檔
Java部分:Java基礎(chǔ),集合,并發(fā),多線程,JVM,設(shè)計(jì)模式
數(shù)據(jù)結(jié)構(gòu)算法:Java算法,數(shù)據(jù)結(jié)構(gòu)
開源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架構(gòu)設(shè)計(jì),Redis緩存,Zookeeper,kafka,RabbitMQ,負(fù)載均衡等
微服務(wù)部分:SpringBoot,SpringCloud,Dubbo,Docker
還有源碼相關(guān)的閱讀學(xué)習(xí)
Netty等等,且還會持續(xù)的更新…可star一下!
[外鏈圖片轉(zhuǎn)存中…(img-t81HV1G7-1624225674231)]
283頁的Java進(jìn)階核心pdf文檔
Java部分:Java基礎(chǔ),集合,并發(fā),多線程,JVM,設(shè)計(jì)模式
數(shù)據(jù)結(jié)構(gòu)算法:Java算法,數(shù)據(jù)結(jié)構(gòu)
開源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架構(gòu)設(shè)計(jì),Redis緩存,Zookeeper,kafka,RabbitMQ,負(fù)載均衡等
微服務(wù)部分:SpringBoot,SpringCloud,Dubbo,Docker
[外鏈圖片轉(zhuǎn)存中…(img-HilptgkW-1624225674232)]
還有源碼相關(guān)的閱讀學(xué)習(xí)
[外鏈圖片轉(zhuǎn)存中…(img-5MNg0iSt-1624225674232)]
總結(jié)
以上是生活随笔為你收集整理的三面美团Java岗,面试竟然被这31道Java基础题难倒了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三年Java开发,你连基础的JVM运行时
- 下一篇: 婴儿发烧会引起不孕无精症吗