互聯網 Java 工程師面試題
- MyBatis(27道)
- ZooKeeper(28道)
- Dubbo(30道)
- Elasticsearch(24道)
- Memcached(23道)
- Redis(40道)
- MySQL(50道)
- Java 併發編程(一)Java 併發編程(二)(123道)
- Java面試題(一)Java面試題(二)(228道)
- Spring 面試題(一)Spring 面試題(二)(119道)
- 微服務(50道)
- Linux(45道)
- Spring Boot(22道)
- Spring Cloud(8道)
- RabbitMQ(12道)
- kafka(18道)
由於內容太過全面,所有這裏只截取出部分題目粗略的介紹一下,這份PDF文檔有將近500頁,另外也有配套的283頁“Java核心知識筆記”,相信足夠各位Java同僚備戰刷題了,需要完整“互聯網 Java 工程師面試題”及“Java核心知識筆記”的可以進我的學習交流羣:909666042免費獲取!
MyBatis(27道)
- 什麼是 Mybatis?
- Mybaits 的優點
- MyBatis 框架的缺點
- MyBatis 框架適用場合
- MyBatis 與 Hibernate 有哪些不同?
- #{}和${}的區別是什麼?
- 當實體類中的屬性名和表中的字段名不一樣 ,怎麼辦 ?
- 模糊查詢 like 語句該怎麼寫?
- 通常一個 Xml 映射文件,都會寫一個 Dao 接口與之對應,請問:這個 Dao 接口的工作原理是什麼?Dao 接口裏的方法,參數不同時,方法能重載嗎?
- Mybatis 是如何進行分頁的?分頁插件的原理是什麼?
- Mybatis是如何將sql執行結果封裝爲目標對象並返回的?都有哪些映射形式?
- 如何執行批量插入?
- 如何獲取自動生成的(主)鍵值?
- 在 mapper 中如何傳遞多個參數?
- Mybatis 動態 sql 有什麼用?執行原理?有哪些動態 sql?
- Xml 映射文件中,除了常見的 select|insert|updae|delete標籤之外,還有哪些標籤?
- Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重複?
- 爲什麼說 Mybatis 是半自動 ORM 映射工具?它與全自動的區別在哪裏?
- 一對一、一對多的關聯查詢 ?
- MyBatis 實現一對一有幾種方式?具體怎麼操作的?
- MyBatis 實現一對多有幾種方式,怎麼操作的?
- Mybatis 是否支持延遲加載?如果支持,它的實現原理是什麼?
- Mybatis 的一級、二級緩存:
- 什麼是 MyBatis 的接口綁定?有哪些實現方式?
- 使用 MyBatis 的 mapper 接口調用時有哪些要求?
- Mapper 編寫有哪幾種方式?
- 簡述 Mybatis 的插件運行原理,以及如何編寫一個插件。
ZooKeeper(28道)
- 什麼是ZooKeeper?
- ZooKeeper 提供了什麼?
- Zookeeper 文件系統
- ZAB 協議?
- 四種類型的數據節點 Znode
- . Zookeeper Watcher 機制 -- 數據變更通知
- 客戶端註冊 Watcher 實現
- 服務端處理 Watcher 實現
- 客戶端回調 Watcher
- ACL 權限控制機制
- Chroot 特性
- 會話管理
- 服務器角色
- Zookeeper 下 Server 工作狀態
- 數據同步
- zookeeper 是如何保證事務的順序一致性的?
- 分佈式集羣中爲什麼會有 Master?
- zk 節點宕機如何處理?
- zookeeper 負載均衡和 nginx 負載均衡區別
- Zookeeper 有哪幾種幾種部署模式?
- 集羣最少要幾臺機器,集羣規則是怎樣的?
- 集羣支持動態添加機器嗎?
- Zookeeper 對節點的 watch監聽通知是永久的嗎?爲什麼不是永久的?
- Zookeeper 的 java 客戶端都有哪些?
- chubby 是什麼,和 zookeeper 比你怎麼看?
- 說幾個 zookeeper 常用的命令。
- ZAB 和 Paxos 算法的聯繫與區別?
- Zookeeper 的典型應用場景
Dubbo(30道)
- 爲什麼要用 Dubbo?
- Dubbo 的整體架構設計有哪些分層?
- 默認使用的是什麼通信框架,還有別的選擇嗎?
- 服務調用是阻塞的嗎?
- 一般使用什麼註冊中心?還有別的選擇嗎?
- 默認使用什麼序列化框架,你知道的還有哪些?
- 服務提供者能實現失效踢出是什麼原理?
- 服務上線怎麼不影響舊版本?
- 如何解決服務調用鏈過長的問題?
- 說說核心的配置有哪些?
- Dubbo 推薦用什麼協議?
- 同一個服務多個註冊的情況下可以直連某一個服務嗎?
- 畫一畫服務註冊與發現的流程圖?
- Dubbo 集羣容錯有幾種方案?
- Dubbo 服務降級,失敗重試怎麼做?
- Dubbo 使用過程中都遇到了些什麼問題?
- Dubbo Monitor 實現原理?
- Dubbo 用到哪些設計模式?
- Dubbo 配置文件是如何加載到 Spring 中的?
- Dubbo SPI 和 Java SPI 區別?
- Dubbo 支持分佈式事務嗎?
- Dubbo 可以對結果進行緩存嗎?
- 服務上線怎麼兼容舊版本?
- Dubbo 必須依賴的包有哪些?
- Dubbo telnet 命令能做什麼?
- Dubbo 支持服務降級嗎?
- Dubbo 如何優雅停機?
- Dubbo 和 Dubbox 之間的區別?
- Dubbo 和 Spring Cloud 的區別?
- 你還了解別的分佈式框架嗎?
Elasticsearch(24道)
- elasticsearch 瞭解多少,說說你們公司 es 的集羣架構,索引數據大小,分片有多少,以及一些調優手段
- elasticsearch 的倒排索引是什麼
- elasticsearch 索引數據多了怎麼辦,如何調優,部署
- elasticsearch 是如何實現 master 選舉的
- 詳細描述一下 Elasticsearch 索引文檔的過程
- 詳細描述一下 Elasticsearch 搜索的過程?
- Elasticsearch 在部署時,對 Linux 的設置有哪些優化方法
- lucence 內部結構是什麼?
- Elasticsearch 是如何實現 Master 選舉的?
- Elasticsearch 中的節點(比如共 20 個),其中的 10 個選了一個 master,另外 10 個選了另一個 master,怎麼辦?
- 客戶端在和集羣連接時,如何選擇特定的節點執行請求的?
- 詳細描述一下 Elasticsearch 索引文檔的過程。
- 詳細描述一下 Elasticsearch 更新和刪除文檔的過程。
- 詳細描述一下 Elasticsearch 搜索的過程。
- 在 Elasticsearch 中,是怎麼根據一個詞找到對應的倒排索引的?
- Elasticsearch 在部署時,對 Linux 的設置有哪些優化方法?
- 對於 GC 方面,在使用 Elasticsearch 時要注意什麼?
- Elasticsearch 對於大數據量(上億量級)的聚合如何實現?
- 在併發情況下,Elasticsearch 如果保證讀寫一致?
- 如何監控 Elasticsearch 集羣狀態?
- 介紹下你們電商搜索的整體技術架構。
- 介紹一下你們的個性化搜索方案?
- 是否瞭解字典樹?
- 拼寫糾錯是如何實現的?
Memcached(23道)
- Memcached 是什麼,有什麼作用?
- Memcached 服務分佈式集羣如何實現?
- Memcached 服務特點及工作原理是什麼?
- 簡述 Memcached 內存管理機制原理?
- memcached 是怎麼工作的?
- memcached 最大的優勢是什麼?
- memcached 和 MySQL 的 query
- memcached 和服務器的 local cache(比如 PHP 的 APC、mmap 文件等)相比,有什麼優缺點?
- memcached 的 cache 機制是怎樣的?
- memcached 如何實現冗餘機制?
- memcached 如何處理容錯的?
- 如何將 memcached 中 item 批量導入導出?
- 如果緩存數據在導出導入之間過期了,您又怎麼處理這些數據呢?
- memcached 是如何做身份驗證的?
- memcached 的多線程是什麼?如何使用它們?
- memcached 能接受的 key 的最大長度是多少?
- memcached 最大能存儲多大的單個 item?
- memcached 能夠更有效地使用內存嗎?
- 什麼是二進制協議,我該關注嗎?
- memcached 的內存分配器是如何工作的?爲什麼不適用malloc/free!?爲何要使用 slabs?
- memcached 是原子的嗎?
- 如何實現集羣中的 session 共享存儲?
- memcached 與 redis 的區別?
Redis(40道)
- 什麼是 Redis?
- Redis 的數據類型?
- 使用 Redis 有哪些好處?
- Redis 相比 Memcached 有哪些優勢?
- Memcache 與 Redis 的區別都有哪些?
- Redis 是單進程單線程的?
- 一個字符串類型的值能存儲最大容量是多少?
- Redis 的持久化機制是什麼?各自的優缺點?
- Redis 常見性能問題和解決方案
- redis 過期鍵的刪除策略?
- Redis 的回收策略(淘汰策略)?
- 爲什麼 edis 需要把所有數據放到內存中?
- Redis 的同步機制瞭解麼?
- Pipeline 有什麼好處,爲什麼要用 pipeline?
- 是否使用過 Redis 集羣,集羣的原理是什麼?
- Redis 集羣方案什麼情況下會導致整個集羣不可用?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Jedis 與 Redisson 對比有什麼優缺點?
- Redis 如何設置密碼及驗證密碼?
- 說說 Redis 哈希槽的概念?
- Redis 集羣的主從複製模型是怎樣的?
- Redis 集羣會有寫操作丟失嗎?爲什麼?
- Redis 集羣之間是如何複製的?
- Redis 集羣最大節點個數是多少?
- Redis 集羣如何選擇數據庫?
- 略......
MySQL(50道)
- MySQL 中有哪幾種鎖?
- MySQL 中有哪些不同的表格?
- 簡述在 MySQL 數據庫中 MyISAM 和 InnoDB 的區別
- MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
- CHAR 和 VARCHAR 的區別?
- 主鍵和候選鍵有什麼區別?
- myisamchk 是用來做什麼的?
- 如果一個表有一列定義爲 TIMESTAMP,將發生什麼?
- 你怎麼看到爲表格定義的所有索引?
- LIKE 聲明中的%和_是什麼意思?
- 列對比運算符是什麼?
- BLOB 和 TEXT 有什麼區別?
- MySQL_fetch_array 和 MySQL_fetch_object 的區別是什麼?
- MyISAM 表格將在哪裏存儲,並且還提供其存儲格式?
- MySQL 如何優化 DISTINCT?
- 如何顯示前 50 行?
- 可以使用多少列創建索引?
- NOW()和 CURRENT_DATE()有什麼區別?
- 什麼是非標準字符串類型?
- 什麼是通用 SQL 函數?
- MySQL 支持事務嗎?
- MySQL 裏記錄貨幣用什麼字段類型好
- MySQL 有關權限的表都有哪幾個?
- 列的字符串類型可以是什麼?
- MySQL 數據庫作發佈系統的存儲,一天五萬條以上的增量,預計運維三年,怎麼優化?
- 略......
Java 併發編程(一、二)(123道)
- 在 java 中守護線程和本地線程區別?
- 線程與進程的區別?
- 什麼是多線程中的上下文切換?
- 死鎖與活鎖的區別,死鎖與飢餓的區別?
- Java 中用到的線程調度算法是什麼?
- 什麼是線程組,爲什麼在 Java 中不推薦使用?
- 爲什麼使用 Executor 框架?
- 在 Java 中 Executor 和 Executors 的區別?
- 如何在 Windows 和 Linux 上查找哪個線程使用的 CPU 時間最長?
- 什麼是原子操作?在 Java Concurrency API 中有哪些原子類(atomic classes)?
- Java Concurrency API 中的 Lock 接口(Lock interface)是什麼?對比同步它有什麼優勢?
- 什麼是 Executors 框架?
- 什麼是阻塞隊列?阻塞隊列的實現原理是什麼?如何使用阻塞隊列來實現生產者-消費者模型?
- 什麼是 Callable 和 Future?
- 什麼是 FutureTask?使用 ExecutorService 啓動任務。
- 什麼是併發容器的實現?
- 多線程同步和互斥有幾種實現方法,都是什麼?
- 什麼是競爭條件?你怎樣發現和解決競爭?
- 你將如何使用 thread dump?你將如何分析 Threaddump?
- 爲什麼我們調用 start()方法時會執行 run()方法,爲什麼我們不能直接調用 run()方法?
- Java 中你怎樣喚醒一個阻塞的線程?
- 在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?
- 什麼是不可變對象,它對寫併發應用有什麼幫助?
- 什麼是多線程中的上下文切換?
- Java 中用到的線程調度算法是什麼?
- 什麼是線程組,爲什麼在 Java 中不推薦使用?
- 爲什麼使用 Executor 框架比使用應用創建和管理線程好?
- java 中有幾種方法可以實現一個線程?
- 如何停止一個正在運行的線程?
- notify()和 notifyAll()有什麼區別?
- 略......
Java 面試題(一、二)(228道)
- 面向對象的特徵有哪些方面?
- 訪問修飾符 public,private,protected,以及不寫(默認)時的區別?
- String 是最基本的數據類型嗎?
- float f=3.4;是否正確?
- short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?
- Java 有沒有 goto?
- int 和 Integer 有什麼區別?
- &和&&的區別?
- 解釋內存中的棧(stack)、堆(heap)和方法區(method area)的用法。
- Math.round(11.5) 等於多少?Math.round(-11.5)等於多少?
- switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
- 用最有效率的方法計算 2 乘以 8?
- 數組有沒有 length()方法?String 有沒有 length()方法?
- 在 Java 中,如何跳出當前的多重嵌套循環?
- 構造器(constructor)是否可被重寫(override)?
- 兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
- 是否可以繼承 String 類?
- 當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏到底是值傳遞還是引用傳遞?
- String 和 StringBuilder、StringBuffer 的區別?
- 重載(Overload)和重寫(Override)的區別。重載的方法能否根據返回類型進行區分?
- 描述一下 JVM 加載 class 文件的原理機制?
- char 型變量中能不能存貯一箇中文漢字,爲什麼?
- 抽象類(abstract class)和接口(interface)有什麼異同?
- 靜態嵌套類(Static Nested Class)和內部類(Inner Class)的不同?
- 略......
Spring(一、二)(119道)
- 不同版本的 Spring Framework 有哪些主要功能?
- 什麼是 Spring Framework?
- 列舉 Spring Framework 的優點
- Spring Framework 有哪些不同的功能?
- Spring Framework 中有多少個模塊,它們分別是什麼?
- 什麼是 Spring IOC 容器?
- 什麼是依賴注入?
- 可以通過多少種方式完成依賴注入?
- 區分構造函數注入和 setter 注入。
- spring 中有多少種 IOC 容器?
- 什麼是 spring bean?
- spring 提供了哪些配置方式?
- spring 支持集中 bean scope?
- spring bean 容器的生命週期是什麼樣的?
- 什麼是 spring 的內部 bean?
- 自動裝配有什麼侷限?
- 如何在 spring 中啓動註解裝配?
- 列舉 Spring DAO 拋出的異常。
- spring 支持哪些 ORM 框架
- 如何理解 Spring 中的代理?
- 解釋 JDBC 抽象和 DAO 模塊。
- ApplicationContext 通常的實現是什麼?
- 如何給 Spring 容器提供配置元數據?
- 略......
微服務(50道)
- 您對微服務有何瞭解?
- 微服務架構有哪些優勢?
- 微服務有哪些特點?
- 設計微服務的最佳實踐是什麼?
- 微服務架構如何運作?
- 微服務架構的優缺點是什麼?
- 單片,SOA 和微服務架構有什麼區別?
- 在使用微服務架構時,您面臨哪些挑戰?
- SOA 和微服務架構之間的主要區別是什麼?
- 微服務有什麼特點?
- 什麼是領域驅動設計?
- 爲什麼需要域驅動設計(DDD)?
- 什麼是無所不在的語言?
- 什麼是 REST / RESTful 以及它的用途是什麼?
- 什麼是 Spring 引導的執行器?
- Spring Cloud 解決了哪些問題?
- 在 Spring MVC 應用程序中使用 WebMvcTest 註釋有什麼用處?
- 您對 Distributed Transaction 有何瞭解?
- 什麼是 Idempotence 以及它在哪裏使用?
- PACT 在微服務架構中的用途是什麼?
- Container 在微服務中的用途是什麼?
- Web,RESTful API 在微服務中的作用是什麼?
- Mock 或 Stub 有什麼區別?
- Docker 的目的是什麼?
- 什麼是微服務中的反應性擴展?
- 略......
Linux(45道)
- 絕對路徑用什麼符號表示?當前目錄、上層目錄用什麼表示?主目錄用什麼表示? 切換目錄用什麼命令?
- 怎麼查看當前進程?怎麼執行退出?怎麼查看當前路徑?
- 怎麼清屏?怎麼退出當前命令?怎麼執行睡眠?怎麼查看當前用戶 id?查看指定幫助用什麼命令?
- Ls 命令執行什麼功能? 可以帶哪些參數,有什麼區別?
- 目錄創建用什麼命令?創建文件用什麼命令?複製文件用什麼命令?
- 隨意寫文件命令?怎麼向屏幕輸出帶空格的字符串,比如”hello world”?
- 終端是哪個文件夾下的哪個文件?黑洞文件是哪個文件夾下的哪個命令?
- 複製文件用哪個命令?如果需要連同文件夾一塊複製呢?如果需要有提示功能呢?
- 刪除文件用哪個命令?如果需要連目錄及目錄下文件一塊刪除呢?刪除空文件夾用什麼命令?
- Linux 下命令有哪幾種可使用的通配符?分別代表什麼含義?
- 用什麼命令對一個文件的內容進行統計?(行號、單詞數、字節數)
- Grep 命令有什麼用? 如何忽略大小寫? 如何查找不含該串的行?
- Linux 中進程有哪幾種狀態?在 ps 顯示出來的信息中,分別用什麼符號表示的?
- 怎麼使一個命令在後臺運行?
- 利用 ps 怎麼顯示所有的進程? 怎麼利用 ps 查看指定進程的信息?
- 哪個命令專門用來查看後臺任務?
- 把後臺任務調到前臺執行使用什麼命令?把停下的後臺任務在後臺執行起來用什麼命令?
- 搜索文件用什麼命令? 格式是怎麼樣的?
- 查看當前誰在使用該主機用什麼命令? 查找自己所在的終端信息用什麼命令?
- 使用什麼命令查看用過的命令列表?
- 使用什麼命令查看磁盤使用空間? 空閒空間呢?
- 查找命令的可執行文件是去哪查找的? 怎麼對其進行設置及添加
- 當你需要給命令綁定一個宏或者按鍵的時候,應該怎麼做呢?
- 如果一個 linux 新手想要知道當前系統支持的所有命令的列表,他需要怎麼做?
- 略......
Spring Boot(22道)
- 什麼是 Spring Boot?
- Spring Boot 有哪些優點?
- 什麼是 JavaConfig?
- 如何重新加載 Spring Boot 上的更改,而無需重新啓動服務器?
- Spring Boot 中的監視器是什麼?
- 如何在 Spring Boot 中禁用 Actuator 端點安全性?
- 如何在自定義端口上運行 Spring Boot 應用程序?
- 什麼是 YAML?
- 如何實現 Spring Boot 應用程序的安全性?
- 如何集成 Spring Boot 和 ActiveMQ?
- 如何使用 Spring Boot 實現分頁和排序?
- 什麼是 Swagger?你用 Spring Boot 實現了它嗎?
- 什麼是 Spring Profiles?
- 什麼是 Spring Batch?
- 什麼是 FreeMarker 模板?
- 如何使用 Spring Boot 實現異常處理?
- 使用了哪些 starter maven 依賴項?
- 什麼是 CSRF ***?
- 什麼是 WebSockets?
- 什麼是 AOP?
- 什麼是 Apache Kafka?
- 我們如何監視所有 Spring Boot 微服務?
Spring Cloud(8道)
- 什麼是 Spring Cloud?
- 使用 Spring Cloud 有什麼優勢?
- 服務註冊和發現是什麼意思?Spring Cloud 如何實現?
- 負載平衡的意義什麼?
- 什麼是 Hystrix?它如何實現容錯?
- 什麼是 Hystrix 斷路器?我們需要它嗎?
- 什麼是 Netflix Feign?它的優點是什麼?
- 什麼是 Spring Cloud Bus?我們需要它嗎?
RabbitMQ(12道)
- 什麼是 rabbitmq
- 爲什麼要使用 rabbitmq
- 使用 rabbitmq 的場景
- 如何確保消息正確地發送至 RabbitMQ? 如何確保消息接收方消費了消息?
- 如何避免消息重複投遞或重複消費?
- 消息基於什麼傳輸?
- 消息如何分發?
- 消息怎麼路由?
- 如何確保消息不丟失?
- 使用 RabbitMQ 有什麼好處?
- RabbitMQ 的集羣
- mq 的缺點
kafka(18道)
- 如何獲取 topic 主題的列表
- 生產者和消費者的命令行是什麼?
- consumer 是推還是拉?
- 講講 kafka 維護消費狀態跟蹤的方法
- 講一下主從同步
- 爲什麼需要消息系統,mysql 不能滿足需求嗎?
- Zookeeper 對於 Kafka 的作用是什麼?
- 數據傳輸的事務定義有哪三種?
- Kafka 判斷一個節點是否還活着有那兩個條件?
- Kafka 與傳統 MQ 消息系統之間有三個關鍵區別
- 講一講 kafka 的 ack 的三種機制
- 消費者如何不自動提交偏移量,由應用提交?
- 消費者故障,出現活鎖問題如何解決?
- 如何控制消費的位置
- kafka 分佈式(不是單機)的情況下,如何保證消息的順序消費?
- kafka 的高可用機制是什麼?
- kafka 如何減少數據丟失
- kafka 如何不消費重複數據?比如扣款,我們不能重複的扣
讀者福利
感謝各位程序員同仁閱讀。
感謝支持,我會更加努力分享,喜歡的朋友可以關注下,祝大家面試通過拿到心儀offer。
面試題答案解析,可加入學習交流平臺Java程序員彙集交流羣Qqun:909666042 。含有各種面試題以及答案解析,Java進階架構知識點資源。包含但不限於(分佈式架構、高併發、Jvm性能調優、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等知識點解析)也有各大互聯網公司人才,可以交流討論共同進步。
更多筆記分享
最全最新面試文檔分享,先一步瞭解大型互聯網面試題及答案,對面試文檔總結感興趣可以進我的學習交流羣:909666042 免費獲取(整理不易)大型互聯網企業面試答案獲取詳情!