天天看點

一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

前言

很多同學會問Java面試八股文有必要背嗎?

答案是,必須背,我的好多同學憑借八股文斬獲了多個大廠暑期實習offer,相信一定也可以發揮重要作用。

你可以讨厭這種模式,但你也一定要去背的,因為不背的話你就過不了面試,八股文能快速檢驗出求職者是否為科班出身,專業基礎到底強不強。國内的網際網路面試,恐怕是現存的、最接近科舉考試的制度。

有大神把牛客網的 Java面試題資源全都整理出來了,大家在面試前可以背一遍,一定能“吊打”面試官。

内容涵蓋:性能調優系列(Tomcat+JVM+MySQL)Java基礎、Java虛拟機、資料庫、MyBatis架構、ZooKeeper架構、Dubbo架構、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring

Boot、Spring Cloud、RabbitMQ、Kafka、Linux、中間件、分布式微服務等!!!

Java基礎、Java虛拟機、資料庫、MyBatis架構、ZooKeeper架構、Dubbo架構、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux、中間件、分布式微服務。

一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

一、性能調優系列(Tomcat+JVM+MySQL)

1.1 Tomcat性能優化整理(6)

  • 你怎樣給Tomcat調優?
  • 如何加大Tomcat連接配接數?
  • 怎樣加大Tomcat的記憶體?
  • Tomcat中如何禁止列目錄下的檔案?
  • Tomcat有幾種部署方式?
  • Tomcat的優化經驗?

1.2 JVM性能優化整理(21)

  • Java類加載過程?
  • Java記憶體配置設定?
  • 描述一下JVM加載Class檔案的原理機制?
  • GC是什麼?為什麼要有GC?
  • 什麼是Java垃圾回收機制?
  • 如何判斷一個對象是否存活?
  • 垃圾回收的優點和原理?并考慮2中回收機制?
  • 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?
  • Java中會存在記憶體洩漏嗎?
  • 深拷貝和淺拷貝?
  • System.gc()和Runtime.gc()會做什麼事情?
  • finalize()方法什麼時候被調用?析構函數的目的是什麼?
  • 如果對象的引用被置為null,垃圾收集器是否會立即釋放對象占用的記憶體?
  • 什麼是分布式垃圾回收(DGC)?它是如何工作的?
  • 串行(serial)收集(throughput)器和吞吐量收集器的差別是什麼?
  • 在Java中,對象什麼時候可以被垃圾回收?
  • 簡述 Java 記憶體配置設定與回收策率以及 Minor GC 和 MajorGC
  • JVM 的永久代中會發生垃圾回收麼?
  • Java 中垃圾收集的方法有哪些?
  • 什麼是類加載器,類加載器有哪些?
  • 類加載器雙親委派模型機制?
  • 程式計數器(線程私有)

答:

一塊較小的記憶體空間, 是目前線程所執行的位元組碼的行号訓示器,每條線程都要有一個獨立的程式計數器,這類記憶體也稱為“線程私有” 的記憶體。

正在執行java方法的話,計數器記錄的是虛拟機位元組碼指令的位址(目前指令的位址) 。如果還是Native方法,則為空。這個記憶體區域是唯一一個在虛拟機中沒有規定任何OutOfMemoryError情況的區域。

  • 虛拟機棧(線程私有)

答:

是描述java方法執行的記憶體模型,每個方法在執行的同時都會建立一個棧幀(Stack Frame)用于存儲局部變量表、操作數棧、動态連結、方法出口等資訊。 每一個方法從調用直至執行完成的過程,就對應着一個棧幀在虛拟機棧中入棧到出棧的過程。棧幀( Frame)是用來存儲資料和部分過程結果的資料結構,同時也被用來處理動态連結(Dynamic Linking)、 方法傳回值和異常分派(Dispatch Exception)。 棧幀随着方法調用而建立,随着方法結束而銷毀——無論方法是正常完成還是異常完成(抛出了在方法内未被捕獲的異常)都算作方法結束。

一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

1.3 MySQL性能優化整理(21)

  • 為查詢緩存優化你的查詢
  • EXPLAIN你的SELECT查詢
  • 當隻要一行資料時使用LIMIT 1
  • 為搜尋字段建索引
  • 在Join表的時候使用相當類型的例,并将其索引
  • 千萬不要 ORDER BY RAND()
  • 避免 SELECT *
  • 永遠為每張表設定一個 ID
  • 使用 ENUM 而不是 VARCHAR
  • 從 PROCEDURE ANALYSE() 取得建議
  • 盡可能的使用 NOT NULL
  • Prepared Statements
  • 無緩沖的查詢
  • 把 IP 位址存成 UNSIGNED INT
  • 固定長度的表會更快
  • 垂直分割
  • 拆分大的 DELETE 或 INSERT 語句
  • 越小的列會越快
  • 選擇正确的存儲引擎
  • 使用一個對象關系映射器(Object Relational Mapper)
  • 小心“永久連結”
  • 一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

二、微服務架構面試專欄(SpringCloud+SpringBoot+Dubbo)

2.1 SpringCloud面試整理(8)

  • 什麼是 Spring Cloud?

答:

Spring cloud 流應用程式啟動器是基于Spring Boot的Spring內建應用程式,提供與外部系統的內建。Spring cloud Task,一個生命周期短暫的微服務架構,用于快速建構執行有限資料處理的應用程式。

  • 使用 Spring Cloud 有什麼優勢?

答:

使用 Spring Boot 開發分布式微服務時,我們面臨以下問題:

1、與分布式系統相關的複雜性-這種開銷包括網絡問題,延遲開銷,帶寬問題,安全問題。

2、服務發現-服務發現工具管理群集中的流程和服務如何查找和互相交談。它涉及一個服務目錄,在該目錄中注冊服務,然後能夠查找并連接配接到該目錄中的服務。

3、備援-分布式系統中的備援問題。

4、負載平衡 --負載平衡改善跨多個計算資源的工作負荷,諸如計算機,計算機叢集,網絡鍊路,中央處理單元,或磁盤驅動器的分布。

5、性能-問題 由于各種營運開銷導緻的性能問題。

6、部署複雜性-Devops 技能的要求。

  • 服務注冊和發現是什麼意思?Spring Cloud 如何實作?
  • 負載平衡的意義什麼?
  • 什麼是 Hystrix?它如何實作容錯?
  • 什麼是 Hystrix 斷路器?我們需要它嗎?
  • 什麼是 Spring Cloud Bus?我們需要它嗎?
  • 什麼是 Netflix Feign?它的優點是什麼?
  • 一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

2.2 SpringBoot面試整理(21)

  • 什麼是 Spring Boot?

答:

多年來,随着新功能的增加 ,spring變得越來越複雜。 隻需通路https://spring.io/projects頁面 ,我們就會看到可以在我們的應 用程式中使用的所有Spring項目的不同功能。 如果必須啟動一個新的Spring項目,我們必須添加建構路徑或添加Maven依賴關系,配置應用程式伺服器,添加spring配置。是以,開始一個新的spring項目需要很多努力,因為我們現在必須從頭開始做所有事情。

Spring Boot是解決這個問題的方法。Spring Boot已經建立在現有spring架構之上。使用spring啟動,我們避免了之前我們必須 做的所有樣闆代碼和配置。是以, Spring Boot可以幫助我們以最少的工作量, 更加健壯地使用現有的Spring功能。

  • Spring Boot 有哪些優點?
  • 什麼是 JavaConfig?
  • 如何重新加載 Spring Boot 上的更改,而無需重新啟動伺服器?
  • Spring Boot 中的螢幕是什麼?
  • 如何在 Spring Boot 中禁用 Actuator 端點安全性?
  • 如何在自定義端口上運作 Spring Boot 應用程式?
  • 什麼是 YAML?
  • 什麼是 Spring Profiles?
  • 什麼是 Spring Batch?
  • 如何內建 Spring Boot 和 ActiveMQ?
  • 如何使用 Spring Boot 實作分頁和排序?
  • 什麼是 Swagger?你用 Spring Boot 實作了它嗎?
  • 什麼是 FreeMarker 模闆?
  • 如何使用 Spring Boot 實作異常處理?
  • 您使用了哪些 starter maven 依賴項?
  • 什麼是 CSRF 攻擊?
  • 什麼是 WebSockets?
  • 什麼是 AOP?
  • 什麼是 Apache Kafka?
  • 我們如何監視所有 Spring Boot 微服務?

2.3 Dubbo面試整理(8)

  • Dubbo 中 zookeeper 做注冊中心,如果注冊中心叢集都挂掉,釋出者和訂閱者之間還能通信麼?
  • dubbo 服務負載均衡政策?
  • Dubbo 在安全機制方面是如何解決的?
  • dubbo 連接配接注冊中心和直連的差別?
  • dubbo 服務叢集配置(叢集容錯模式)?
  • dubbo 通信協定 dubbo 協定為什麼要消費者比提供者個數多?
  • dubbo 通信協定 dubbo 協定為什麼不能傳大包?
  • dubbo 通信協定 dubbo 協定适用範圍和适用場景?
  • 一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

三、并發程式設計進階面試專欄(Synchronized+ReentrantLock+線程池+記憶體模型)

​​一鍵擷取java面試真題合集​​

  • Synchronized用 嗎,其原理是什麼 ?
  • 你剛才提到擷取對象的鎖,這個“鎖 ”到底是什麼?如何确定對象的鎖 ?
  • 什麼是可重入性,為什麼說Synchronized是可重入鎖?
  • JVM對Java的原生鎖做了哪些優化?
  • 為什麼說Synchronized是非公平鎖?
  • 什麼是鎖消除和鎖粗化?
  • 為什麼說Synchronized是一個悲觀鎖?樂觀鎖的實作原理又是什麼?什麼是CAS,它有什麼特性?
  • 樂觀鎖一定就是好的嗎?
  • 跟Synchronized 相 比,可重入鎖ReentrantLock其實作原理有什麼不同?
  • 那麼請談談AQS架構是怎麼回事兒?
  • 請盡可能詳盡地對比下Synchronized和ReentrantLock的異同 。
  • ReentrantLock 是如何實作可重入性的?
  • 除了ReetrantLock,你還接觸過JUC中的哪些并發工具?
  • 請談談ReadWriteLock和StampedLock。
  • 如何讓Java的線程彼此同步?你了解過哪些同步器?請分别介紹 下 。
  • CyclicBarrier和CountDownLatch看起來很相似 ,請對比下呢?
  • Java中的線程池是如何實作的?
  • 建立線程池的幾個核心構造參數?
  • 線程池中的線程是怎麼建立的?是一開始就随着線程池的啟動建立好的嗎?
  • 既然提到可以通過配置不同參數建立出不同的線 程 池,那 麼Java中預設實作好的線程池又有哪些呢 ? 請比較它們的異同
  • 如何在Java線程池中送出線程?
  • 一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

四、開源架構面試專欄(Spring+SpringMVC+MyBatis)

4.1 Spring面試專題(32)

  • 什麼是 Spring 架構?Spring 架構有哪些主要子產品?
  • 使用 Spring 架構能帶來哪些好處?
  • Spring 架構中有哪些不同類型的事件?
  • Spring 架構中都用到了哪些設計模式?
  • 什麼是控制反轉(IOC)?
  • 請解釋下 Spring 架構中的 IoC ?
  • BeanFactory 和 和 ApplicationContext 有什麼差別?
  • Spring 有幾種配置方式?
  • 如何用基于 XML 配置的方式配置 Spring ?
  • 如何用基于 Java 配置的方式配置 Spring ?
  • 怎樣用注解的方式配置 Spring ?
  • 請解釋 Spring Bean 的生命周期?
  • Spring Bean 的作用域之間有什麼差別?
  • 什麼是 Spring inner beans ?
  • Spring 架構中的單例 Beans 是線程安全的麼?
  • 請舉例說明如何在 Spring 中注入一個 Java Collection ?
  • 如何向 Spring Bean 中注入一個 Java.util.Properties ?
  • 請解釋 Spring Bean 的自動裝配?
  • 請解釋自動裝配模式的差別?
  • 如何開啟基于注解的自動裝配
  • 請舉例解釋@Required 注解?
  • 請舉例解釋@Autowired 注解?
  • 請舉例說明@Qualifier 注解?
  • 構造方法注入和設值注入有什麼差別?
  • FileSystemResource 和 和 ClassPathResource 有何差別?
  • Spring 在ssm中起什麼作用?
  • Spring的事務?
  • IOC 在項目中的作用?
  • Spring的配置檔案中的内容?
  • Spring下的注解?
  • Spring DI 的三種方式?
  • Spring主要使用了什麼模式?

4.2 SpringMVC面試專題(30)

  • 什麼是 SpringMvc?
  • Spring MVC 的優點:
  • SpringMVC 工作原理?
  • SpringMVC 流程?
  • SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
  • 如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的差別有哪些?
  • SpingMvc 中的控制器的注解一般用那個,有沒有别的注解可以替代?
  • @RequestMapping 注解用在類上面有什麼作用?
  • 怎麼樣把某個請求映射到特定的方法上面?
  • 如果在攔截請求中,我想攔截 get 方式送出的方法,怎麼配置?
  • 怎麼樣在方法裡面得到 Request,或者 Session?
  • 我想在攔截的方法裡面得到從前台傳入的參數,怎麼得到?
  • 如果前台有很多個參數傳入,并且這些參數都是一個對象的,那麼怎麼樣快速得到這個對象?
  • SpringMvc 中函數的傳回值是什麼?
  • SpringMVC 怎麼樣設定重定向和轉發的?
  • SpringMvc 用什麼對象從背景向前台傳遞資料的?
  • SpringMvc 中有個類把視圖和資料都合并的一起的,叫什麼?
  • 怎麼樣把 ModelMap 裡面的資料放入 Session 裡面?
  • SpringMvc 怎麼和 AJAX 互相調用的?
  • 講下 SpringMvc 的執行流程
  • SpringMvc 裡面攔截器是怎麼寫的?
  • 當一個方法向 AJAX 傳回特殊對象,譬如 Object,List 等,需要做什麼處理?
  • SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
  • SpringMvc 中控制器的注解?
  • @RequestMapping 注解用在類上的作用?
  • 前台多個參數,這些參數都是一個對象,快速得到對象?
  • SpringMvc中函數的傳回值?
  • SpringMvc中的轉發和重定向?
  • SpringMvc和Ajax之間的互相調用?
  • Struts2 和 SpringMvc的差別?
  • 一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

4.3 MyBatis面試專題(32)

  • 什麼是 MyBatis?講下 MyBatis 的緩存
  • Mybatis 是如何進行分頁的?分頁插件的原理是什麼?
  • 簡述 Mybatis 的插件運作原理,以及如何編寫一個插件?
  • Mybatis 動态 sql 是做什麼的?都有哪些動态 sql?能簡述一下動态 sql 的執行原理不?
  • #{}和${}的差別是什麼?
  • 為什麼說 Mybatis 是半自動 ORM 映射工具?它與全自動的差別在哪裡?
  • Mybatis 是否支援延遲加載?如果支援,它的實作原理是什麼?
  • MyBatis 與 Hibernate 有哪些不同?
  • MyBatis 的好處是什麼?
  • 簡述 Mybatis 的 Xml 映射檔案和 Mybatis 内部資料結構之間的映射關系?
  • 什麼是 MyBatis 的接口綁定,有什麼好處?
  • 接口綁定有幾種實作方式,分别是怎麼實作的?
  • 什麼情況下用注解綁定,什麼情況下用 xml 綁定?
  • MyBatis 實作一對一有幾種方式?具體怎麼操作的?
  • Mybatis 能執行一對一、一對多的關聯查詢嗎?都有哪些實作方式,以及它們之間的差別?
  • MyBatis 裡面的動态 Sql 是怎麼設定的?用什麼文法?
一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

五、分布式面試專欄(限流+通訊+資料庫)

5.1 分布式限流面試整理(ZK+Nginx)

5.1.1 Zookeeper專題(23)
  • 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 機制
  • 一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

5.1.2 Nginx專題(17)

  • 請列舉 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 中獲得目前的時間?
  • 用 x Nginx 伺服器解釋s -s 的目的是什麼?
  • 解釋如何在 x Nginx 伺服器上添加子產品?

5.2 分布式通訊面試整理(ActiveMQ+Kafka+RabbitMQ)

5.2.1 ActiveMQ專題(7)
  • 什麼是 ActiveMQ?
  • ActiveMQ 伺服器當機怎麼辦?
  • 丢消息怎麼辦?
  • 持久化消息非常慢
  • 消息的不均勻消費。
  • 死信隊列。
  • ActiveMQ 中的消息重發時間間隔和重發次數嗎?

5.2.2 Kafka專題(10)

  • Kafka 的設計時什麼樣的呢?
  • 資料傳輸的事物定義有哪三種?
  • Kafka 判斷一個節點是否還活着有那兩個條件?
  • producer 是否直接将資料發送到 broker 的 leader(主節點)?
  • Kafa consumer 是否可以消費指定分區消息?
  • Kafka 消息是采用 Pull 模式,還是 Push 模式?
  • Kafka 存儲在硬碟上的消息格式是什麼?
  • Kafka 高效檔案存儲設計特點:
  • Kafka 與傳統消息系統之間有三個關鍵差別

5.2.3 RabbitMQ專題(19)

  • 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 的最大長度是多少?

5.3 分布式資料庫面試整理(Redis+MongoDB+memcached)

5.3.1 Redis專題(14)
  • 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 問題
  • 如何保證緩存與資料庫雙寫時的資料一緻性?
5.3.2 MongoDB專題(33)
  • 你說的 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 來存儲檔案?

5.3.3 memcached 專題(15)

  • 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 之内?
一個工作10年JAVA工程師面試總結:掌握這些技術,offer拿到手軟

最後

考慮篇幅,就挑了一些常見重要的面試題展示出來。所有的面試題目都不是一成不變的,以上面試題隻是給大家一個借鑒作用,最主要還是要給自己增加知識的儲備,有備無患喔~