寫給即將正在找工作的Java攻城獅,Java線上筆試題庫

cxyYIDd 2021-09-18 23:59:33 阅读数:520

正在 找工作 工作 java 攻城

第一個 分布式:限流

1.1 ZooKeeper+Nginx面試常備題(附答案)

ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

  • ZooKeeper 是什麼?

  • ZooKeeper 提供了什麼?

  • Zookeeper 文件系統

  • 四種類型的 znode

  • Zookeeper 通知機制

  • Zookeeper 做了什麼?

  • zk 的命名服務(文件系統)

  • zk 的配置管理(文件系統、通知機制)

  • Zookeeper 集群管理(文件系統、通知機制)

  • Zookeeper 分布式鎖(文件系統、通知機制)

  • 獲取分布式鎖的流程

  • Zookeeper 隊列管理(文件系統、通知機制)

  • Zookeeper 數據複制

  • Zookeeper 工作原理

  • zookeeper 是如何保證事務的順序一致性的?

  • Zookeeper 下 Server 工作狀態

  • zookeeper 是如何選取主 leader 的?

  • 分布式通知和協調

  • 機器中為什麼會有 leader?

  • zk 節點宕機如何處理?

  • Zookeeper 同步流程

  • zookeeper 負載均衡和 nginx 負載均衡區別

  • zookeeper watch 機制

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_Java

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,並發能力强,事實上nginx的並發能力確實在同類型的網頁服務器中錶現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等

  • 請解釋一下什麼是 Nginx?

  • 請列舉 x Nginx 的一些特性。

  • 請列舉 x Nginx 和 和 Apache 之間的不同點

  • 請解釋 x Nginx 如何處理 P HTTP 請求。

  • 在 x Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?

  • 使用 “ 反向代理服務器 ”

  • 請列舉 x Nginx 服務器的最佳用途。

  • 請解釋 x Nginx 服務器上的 r Master 和 和 r Worker 進程分別是什麼?

  • 請解釋你如何通過不同於 0 80 的端口開啟 Nginx?

  • 請解釋是否有可能將 x Nginx 的錯誤替換為 2 502 錯誤?

  • 在 x Nginx 中,解釋如何在 L URL 中保留雙斜線? ?

  • 請解釋 e ngx_http_upstream_module 的作用是什麼?

  • 請解釋什麼是 K C10K 問題?

  • 請陳述 s stub_status 和 和 r sub_filter 指令的作用是什麼?

  • 解釋 x Nginx 是否支持將請求壓縮到上遊?

  • 解釋如何在 x Nginx 中獲得當前的<typo id=“typo-1504” ignoretag=“true” data-origin=“時”>時</typo>間?

  • 用 x Nginx 服務器解釋s -s 的目的是什麼?

  • 解釋如何在 x Nginx 服務器上添加模塊?

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_02

1.2 Nginx+ZooKeeper學習的筆記PDF

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_03

  • ZooKeeper-分布式過程協同技術詳解

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_Java_04

第一部分闡述了Apache ZooKeeper這類系統的設計目的和動機,並介紹分布式系統的一些必要背景知識

  • 第1章介紹了ZooKeeper可以做什麼,以及其設計如何支撐這些任務

  • 第2章介紹了基本概念和基本組成模塊,並通過命令行工具的具體操作介紹ZooKeeper可以做什麼

第二部分闡述程序員所需要掌握的ZooKeeper庫調用方法和編程技巧,雖然對系統運維人員來說也有一定價值,但也可以不選擇閱讀。這一部分主要以Java語言的API為主,因為Java是非常流行的開發語言,如果你之前使用其他開發語言,可以通過這一部分內容來學習基本的技術和方法調用,之後通過其他語言來實現

  • 第3章介紹Java語言的API

  • 第4章解釋如何跟踪和處理ZooKeeper中的狀態變更情况。·第5章介紹如何在系統或網絡故障時複應用

  • 第6章介紹為了避免故障要注意的一些繁雜卻很重要的場景

  • 第7章介紹C語言版的API,該章也可以作為非Java語言實現的ZooKeeper API的基礎,對非Java語言的開發人員非常有幫助

  • 第8章介紹一款更高層級的封裝的ZooKeeper接口

第三部分主要適用於ZooKeeper的系統運維人員,尤其在第9章中即便對開發人員也很有價值

  • 第9章介紹ZooKeeper的作者們在設計時所采用的方案,這些知識對運維管理非常有幫助。

  • 第10章介紹如何對ZooKeeper進行配置

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_05

  • ZK開發手册

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_06

  • 深入理解Nginx模塊開發與架構解析

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_07

在第一部分的前兩章中,將只探討如何使用Nginx這一個問題。閱讀這一部分的讀者不需要了解C語言,就可以學習如何部署Nginx,學習如何向其中添加各種官方、第三方的功能模塊,如何通過修改配置文件來更改Nginx及各模塊的功能,如何修改Linux操作系統上的參數來優化服務器性能,最終向用戶提供企業級的Web服務器。這一部分介紹配置項的方式,更偏重於領著對Nginx還比較陌生的讀者熟悉它,通過了解幾個基本Nginx模塊的配置修改方式,進而使讀者可以通過查詢官網、第三方網站來了解如何使用所有Nginx模塊的用法。

在第二部分的第3章~第7章中,都是以例子來介紹HTTP模塊的開發方式的,這裏有些接近於“step by step”的學習方式,我在寫作這一部分時,會通過循序漸進的方式使讀者能够快速上手,同時會穿插著介紹其常見用法的基本原理。

在第三部分,將開始介紹Nginx的完整框架,閱讀到這裏將會了解第二部分中HTTP模塊為何以此種方式開發,同時將可以輕易地開發Nginx模塊。這一部分並不僅僅滿足於闡述Nginx架構,而是會探討其為何如此設計,只有這樣才能拋開HTTP框架、郵件代理框架,實現一種新的業務框架、一種新的模塊類型。

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_08

第二個 分布式:緩存

2.1 MongoDB+memcached+Redis面試常備題(附答案)

Mongodb,分布式文檔存儲數據庫,由C++語言編寫,旨在為WEB應用提供可擴展的高性能數據存儲解决方案。MongoDB是一個高性能,開源,無模式的文檔型數據庫,是當前NoSql數據庫中比較熱門的一種。它在許多場景下可用於替代傳統的關系型數據庫或鍵/值存儲方式

  • 你說的 NoSQL 數據庫是什麼意思?NoSQL 與 RDBMS 直接有什麼區別?為什麼要使用和不使用NoSQL 數據庫?說一說 NoSQL 數據庫的幾個優點?

  • NoSQL 數據庫有哪些類型?

  • MySQL 與 MongoDB 之間最基本的差別是什麼?

  • 你怎麼比較 MongoDB、CouchDB 及 CouchBase?

  • MongoDB 成為最好 NoSQL 數據庫的原因是什麼?

  • 32 比特系統上有什麼細微差別?

  • journal 回放在條目(entry)不完整時(比如恰巧有一個中途故障了)會遇到問題嗎?

  • 分析器在 MongoDB 中的作用是什麼?

  • 名字空間(namespace)是什麼?

  • 如果用戶移除對象的屬性,該屬性是否從存儲層中删除?

  • 能否使用日志特征進行安全備份?

  • 允許空值 null 嗎?

  • 更新操作立刻 fsync 到磁盤?

  • 如何執行事務/加鎖?

  • 為什麼我的數據文件如此龐大?

  • 啟用備份故障恢複需要多久?

  • 什麼是 master 或 primary?

  • 什麼是 secondary 或 slave?

  • 我必須調用 getLastError 來確保寫操作生效了麼?

  • 我應該啟動一個集群分片(sharded)還是一個非集群分片的 MongoDB 環境?

  • 分片(sharding)和複制(replication)是怎樣工作的?

  • 數據在什麼時候才會擴展到多個分片(shard)裏?

  • 當我試圖更新一個正在被遷移的塊(chunk)上的文檔時會發生什麼?

  • 如果在一個分片(shard)停止或者很慢的時候,我發起一個查詢會怎樣?

  • 我可以把 moveChunk 目錄裏的舊文件删除嗎?

  • 我怎麼查看 Mongo 正在使用的鏈接?

  • 如果塊移動操作(moveChunk)失敗了,我需要手動清除部分轉移的文檔嗎?

  • 如果我在使用複制技術(replication),可以一部分使用日志(journaling)而其他部分則不使用嗎?

  • 當更新一個正在被遷移的塊(Chunk)上的文檔時會發生什麼?

  • MongoDB 在 A:{B,C}上建立索引,查詢 A:{B,C}和 A:{C,B}都會使用索引嗎?

  • 如果一個分片(Shard)停止或很慢的時候,發起一個查詢會怎樣?

  • MongoDB 支持存儲過程嗎?如果支持的話,怎麼用?

  • 如何理解 MongoDB 中的 GridFS 機制,MongoDB 為何使用 GridFS 來存儲文件?

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_09

memcached是一套分布式的快取系統,與redis相似,當初是Danga Interactive為了LiveJournal所發展的,但被許多軟件(如MediaWiki)所使用。這是一套開放源代碼軟件,以BSD license授權協議發布

  • memcached 是怎麼工作的?

  • memcached 最大的優勢是什麼?

  • memcached 和服務器的 local cache (比如 PHP 的 的 APC 、mmap 文件等)相比,有什麼優缺點?

  • memcached 和 和 MySQL 的 的 query cache 相比,有什麼優缺點?

  • memcached 的 的 cache 機制是怎樣的?

  • memcached 如何實現冗餘機制?

  • 我需要把 memcached 中的 item 批量導出導入,怎麼辦?

  • memcached 如何處理容錯的?

  • 如何將 memcached 中 中 item 批量導入導出?

  • memcached 是如何做身份驗證的?

  • memcached 的多線程是什麼?如何使用它們?

  • memcached 能接受的 key 的最大長度是多少?

  • memcached 對 對 item 的過期時間有什麼限制?

  • memcached 最大能存儲多大的單個 item ?

  • 為什麼單個 item 的大小被限制在 1M byte 之內?

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_10

redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈錶)、set(集合)和zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

  • redis 簡介

  • 為什麼要用 redis /為什麼要用緩存(高性能、高並發)

  • 為什麼要用 redis 而不用 map/guava 做緩存?

  • redis 和 memcached 的區別

  • redis 常見數據結構以及使用場景分析(String、Hash、List、Set、Sorted Set)

  • redis 設置過期時間

  • redis 內存淘汰機制(MySQL裏有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)

  • redis 持久化機制(怎麼保證 redis 掛掉之後再重啟數據可以進行恢複)

  • redis 事務

  • Redis 常見异常及解决方案(緩存穿透、緩存雪崩、緩存預熱、緩存降級)

  • 分布式環境下常見的應用場景(分布式鎖、分布式自增 ID)

  • Redis 集群模式(主從模式、哨兵模式、Cluster 集群模式)

  • 如何解决 Redis 的並發競爭 Key 問題

  • 如何保證緩存與數據庫雙寫時的數據一致性?

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_Java_11

2.2 MongoDB+memcached+Redis學習筆記

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_12

  • MongoDB權威指南

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_13

  • Redis學習手册(基礎篇+數據結構篇+持久化篇+集群篇+其他問題)

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_14

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_15

03 分布式通訊

3.1 ActiveMQ+Kafka+RabbitMQ面試常備題(附答案)

Kafka是由Apache軟件基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日志和日志聚合來解决。 對於像Hadoop一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解决方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息

  • Kafka 的設計時什麼樣的呢?

  • 數據傳輸的事物定義有哪三種?

  • Kafka 判斷一個節點是否還活著有那兩個條件?

  • producer 是否直接將數據發送到 broker 的 leader(主節點)?

  • Kafa consumer 是否可以消費指定分區消息?

  • Kafka 消息是采用 Pull 模式,還是 Push 模式?

  • Kafka 存儲在硬盤上的消息格式是什麼?

  • Kafka 高效文件存儲設計特點:

  • Kafka 與傳統消息系統之間有三個關鍵區別

  • Kafka 創建 Topic 時如何將分區放置到不同的 Broker 中

  • Kafka 新建的分區會在哪個目錄下創建

  • partition 的數據如何保存到硬盤

  • kafka 的 ack 機制

  • Kafka 的消費者如何消費數據

  • 消費者負載均衡策略

  • 數據有序

  • kafaka 生產數據時數據的分組策略

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_Java_16

ActiveMQ 是Apache出品,最流行的,能力强勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,盡管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地比特

  • 什麼是 ActiveMQ?

  • ActiveMQ 服務器宕機怎麼辦?

  • 丟消息怎麼辦?

  • 持久化消息非常慢

  • 消息的不均勻消費

  • <typo id=“typo-6324” ignoretag=“true” data-origin=“死信”>死信</typo>隊列

  • ActiveMQ 中的消息重發時間間隔和重發次數嗎?

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_17

RabbitMQ是一個由erlang開發的AMQP(Advanced Message Queue )的開源實現。AMQP 的出現其實也是應了廣大人民群眾的需求,雖然在同步消息通訊的世界裏有很多公開標准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息處理中卻不是這樣,只有大企業有一些商業實現(如微軟的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco 、Redhat、iMatix 等聯合制定了 AMQP 的公開標准。

  • RabbitMQ 中的 broker 是指什麼?cluster 又是指什麼?

  • 什麼是元數據?元數據分為哪些類型?包括哪些內容?與 cluster 相關的元數據有哪些?元數據是如何保存的?元數據在 cluster 中是如何分布的?

  • RAM node 和 disk node 的區別?

  • RabbitMQ 上的一個 queue 中存放的 message 是否有數量限制?

  • RabbitMQ 概念裏的 channel、exchange 和 queue 這些東東是邏輯概念,還是對應著進程實體?這些東東分別起什麼作用?

  • vhost 是什麼?起什麼作用?

  • 在單 node 系統和多 node 構成的 cluster 系統中聲明 queue、exchange ,以及進行 binding 會有什麼不同?

  • 客戶端連接到 cluster 中的任意 node 上是否都能正常工作?

  • cluster 中 node 的失效會對 consumer 產生什麼影響?若是在 cluster 中創建了mirrored queue ,這時 node 失效會對 consumer 產生什麼影響?

  • 能够在地理上分開的不同數據中心使用 RabbitMQ cluster 麼?

  • 為什麼 heavy RPC 的使用場景下不建議采用 disk node ?

  • 向不存在的 exchange 發 publish 消息會發生什麼?向不存在的 queue 執行consume 動作會發生什麼?

  • routing_key 和 binding_key 的最大長度是多少?

  • RabbitMQ 允許發送的 message 最大可達多大?

  • 什麼情况下 producer 不主動創建 queue 是安全的?

  • “dead letter”queue 的用途?

  • 為什麼說保證 message 被可靠持久化的條件是 queue 和 exchange 具有durable 屬性,同時 message 具有 persistent 屬性才行?

  • 什麼情况下會出現 blackholed 問題?

  • 如何防止出現 blackholed 問題?

  • Consumer Cancellation Notification 機制用於什麼場景?

  • Basic.Reject 的用法是什麼?

  • 為什麼不應該對所有的 message 都使用持久化機制?

  • RabbitMQ 中的 cluster、mirrored queue,以及 warrens 機制分別用於解决什麼問題?存在哪些問題?

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_18

3.2 ActiveMQ+Kafka+RabbitMQ學習筆記PDF

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_Java_19

  • RabbitMQ實戰指南

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_20

  • 手寫RocketMQ筆記

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_21

  • 手寫“Kafka筆記”

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_後端_22

最後總結我的面試經驗

2021年的金三銀四一眨眼就到了,對於很多人來說是跳槽的好機會,大廠面試遠沒有我們想的那麼困難,擺好心態,做好准備,你也可以的。

另外,面試中遇到不會的問題不妨嘗試講講自己的思路,因為有些問題不是考察我們的編程能力,而是邏輯思維錶達能力;最後平時要進行自我分析與評價,做好職業規劃,不斷摸索,提高自己的編程能力和抽象思維能力。

 CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_23

BAT面試經驗

實戰系列:Spring全家桶+Redis等

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_24

其他相關的電子書:源碼+調優

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_25

面試真題:

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_26

寫給即將正在找工作的Java攻城獅,Java線上筆試題庫_程序員_27

版权声明:本文为[cxyYIDd]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210918235933082M.html