2020春招Java後端高頻面試題整理,(贈面試文檔資料pdf)


前言:面試

不少人都在緊張的準備着2020的跳槽面試,今天筆者也給你們分享一些高頻面試題,但願能夠幫助到有須要的人,不會作不要着急哦,文末本文有答案領取,按照我平時複習的模塊進行題目劃分,因爲題目較多,文未貼出答案。正則表達式

1、Java基礎redis

  • 解釋下什麼是面向對象?面向對象和麪向過程的區別?算法

  • 面向對象的三大特性?分別解釋下?數據庫

  • JDK、JRE、JVM 三者之間的關係?編程

  • 重載和重寫的區別?設計模式

  • Java 中是否能夠重寫一個 private 或者 static 方法?數組

  • 構造器是否能夠被重寫?瀏覽器

  • 構造方法有哪些特性?緩存

  • 在 Java 中定義一個不作事且沒有參數的構造方法有什麼做用?

  • Java 中建立對象的幾種方式?

  • 抽象類和接口有什麼區別?

  • 靜態變量和實例變量的區別?

  • 成員變量和局部變量的區別?

  • short s1 = 1;s1 = s1 + 1;有什麼錯?那麼 short s1 = 1; s1 += 1;呢?有沒有錯誤?

  • Integer 和 int 的區別?

  • 裝箱和拆箱

  • switch 語句可否做用在 byte 上,可否做用在 long 上,可否做用在 String 上?

  • 字節和字符的區別?

  • String 爲何要設計爲不可變類?

  • String、StringBuilder、StringBuffer 的區別?

  • String str = "i" 與 String str = new String("i") 同樣嗎?

  • String 類的經常使用方法都有那些?

  • final 修飾 StringBuffer 後還能夠 append 嗎?

  • Object 的經常使用方法有哪些?

  • 爲何 wait/notify 方法放在 Object 類中而不是 Thread 類中?

  • final、finally、finalize 的區別?

  • finally 塊中的代碼何時被執行?finally 是否是必定會被執行到?

  • try-catch-finally 中哪一個部分能夠省略?

  • try-catch-finally 中,若是 catch 中 return 了,finally 還會執行嗎?

  • static 關鍵字的做用?

  • super 關鍵字的做用?

  • transient關鍵字的做用?

  • == 和 equals 的區別?

  • 兩個對象的 hashCode() 相同,則 equals() 也必定爲 true 嗎?

  • 爲何重寫 equals() 就必定要重寫 hashCode() 方法?

  • & 和 && 的區別?

  • Java 中的參數傳遞時傳值呢?仍是傳引用?

  • Java 中的 Math.round(-1.5) 等於多少?

  • 兩個數的異或結果是什麼?

  • error 和 exception 的區別?

  • throw 和 throws 的區別?

  • 常見的異常類有哪些?

  • 運行時異常與受檢異常有何異同?

  • 主線程能夠捕獲到子線程的異常嗎?

  • Java 的泛型是如何工做的 ? 什麼是類型擦除 ?

  • 什麼是泛型中的限定通配符和非限定通配符 ?

  • List<? extends T> 和 List <? super T> 之間有什麼區別 ?

  • 如何實現對象的克隆?

  • 深克隆和淺克隆的區別?

  • 什麼是 Java 的序列化,如何實現 Java 的序列化?

  • Java 中的反射是什麼意思?有哪些應用場景?

  • 反射的優缺點?

  • Java 中的動態代理是什麼?有哪些應用?

  • 怎麼實現動態代理?

  • Java 中的 IO 流的分類?說出幾個你熟悉的實現類?

  • 字節流和字符流有什麼區別?

  • BIO、NIO、AIO 有什麼區別?

2、Java集合類

  • Java 中經常使用的容器有哪些?

  • ArrayList 和 LinkedList 的區別?

  • ArrayList 的擴容機制?

  • Array 和 ArrayList 有何區別?何時更適合用 Array?

  • HashMap 的實現原理/底層數據結構?JDK1.7 和 JDK1.8

  • HashMap 的 get、put、resize 方法的過程?

  • HashMap 的 size 爲何必須是 2 的整數次方?

  • HashMap 多線程死循環問題?

  • HashMap 的 get 方法可否判斷某個元素是否在 Map 中?

  • HashMap 與 HashTable/ConcurrentHashMap 的區別是什麼?

  • HashTable 和 ConcurrentHashMap 的區別是什麼?

  • ConcurrentHashMap 的實現原理是什麼?

  • HashSet 的實現原理?怎麼保證元素不重複的?

  • LinkedHashMap 的實現原理?

  • Iterator 怎麼使用?有什麼特色?

  • Iterator 和 Enumeration 接口的區別?

  • fail-fast 與 fail-safe 有什麼區別?

  • Collection 和 Collections 有什麼區別?

3、Java併發

  • 並行和併發有什麼區別?

  • 線程和進程的區別?

  • 守護線程是什麼?

  • 建立線程的幾種方式?

  • runnable 和 callable 有什麼區別?

  • 線程狀態及轉換?

  • sleep() 和 wait() 的區別?

  • 線程的 run() 和 start() 有什麼區別?

  • 在 Java 程序中怎麼保證多線程的運行安全?

  • Java 線程同步的幾種方法?

  • Thread.interrupt() 方法的工做原理是什麼?

  • 談談對 ThreadLocal 的理解?

  • 多線程並行運行,主線程怎麼收集子線程的信息?

  • 說一說本身對於 synchronized 關鍵字的瞭解?項目中怎麼使用的?

  • 說說 JDK1.6 以後的 synchronized 關鍵字底層作了哪些優化,能夠詳細介紹一下這些優化嗎?

  • 談談 synchronized 和 ReenTrantLock 的區別?

  • synchronized 和 volatile 的區別是什麼?

  • 簡單介紹下 volatile?volatile 的底層原理是什麼?內存屏障是如何實現的?

  • 說下對 ReentrantReadWriteLock 的理解?

  • 說下對悲觀鎖和樂觀鎖的理解?

  • 樂觀鎖常見的兩種實現方式是什麼?分別有什麼問題?

  • CAS 和 synchronized 的使用場景?

  • 什麼是 CAS,內部怎麼實現的?

  • 簡單說下對 Java 中的原子類的理解?atomic 的原理是什麼?

  • 說下對同步器 AQS 的理解?

  • 說下對信號量 Semaphore 的理解?

  • CountDownLatch 和 CyclicBarrier 有什麼區別?

  • 說下對線程池的理解?爲何要使用線程池?

  • 實現 Runnable 接口和 Callable 接口的區別?

  • 執行 execute() 方法和 submit() 方法的區別是什麼呢?

  • 如何建立線程池?

  • 建立線程池的參數有哪些?

  • 線程池中的的線程數通常怎麼設置?須要考慮哪些問題?

  • 說下對 Fork/Join 並行計算框架的理解?

  • JDK 中提供了哪些併發容器?

  • 談談對 CopyOnWriteArrayList 的理解?

  • 談談對 ConcurrentLinkedQueue 的理解?

  • 談談對 ConcurrentSkipListMap 的理解?

  • 談談對 BlockingQueue 的理解?分別有哪些實現類?

4、Java虛擬機

  • 說一下 Jvm 的主要組成部分?及其做用?

  • 談談對運行時數據區的理解?

  • 談談對堆和棧的理解?堆中存什麼?棧中存什麼?

  • 爲何要把堆和棧區分出來呢?棧中不是也能夠存儲數據嗎?

  • Java 中的參數傳遞時傳值呢?仍是傳引用?

  • Java 對象的大小是怎麼計算的?

  • 對象的訪問定位的兩種方式?

  • 判斷垃圾能夠回收的方法有哪些?有什麼優缺點?

  • 被標記爲垃圾的對象必定會被回收嗎?

  • 談談對 Java 中引用的瞭解?

  • 談談對內存泄漏的理解?舉幾個內存泄漏的案例?

  • 經常使用的垃圾收集算法有哪些?各自的優缺點是什麼?

  • 爲何要採用分代收集算法?

  • 什麼是浮動垃圾?

  • 經常使用的垃圾收集器有哪些?

  • 談談 CMS 和 G1 的區別?

  • 談談對 G1 收集器的理解?

  • 詳細說下垃圾回收策略?

  • 談談你對內存分配的理解?大對象怎麼分配?空間分配擔保?

  • 說下你用過的 JVM 監控工具?

  • 談談你對 JVM 調優的理解?有過工程調優經驗嗎?

  • JVM 設置最大堆的參數是什麼?

  • 談談你對類文件結構的理解?有哪些部分組成?

  • 談談你對類加載機制的瞭解?

  • 類加載各階段的做用分別是什麼?

  • 有哪些類加載器?分別有什麼做用?

  • 怎麼實現一個自定義的類加載器?須要注意什麼?

  • 談談你對雙親委派模型的理解?工做過程?爲何要使用?

  • 怎麼打破雙親委派模型?有哪些實際場景是須要打破雙親委派模型的?

  • 談談你對編譯期優化和運行期優化的理解?

  • 談談你對詞法分析和語法分析的理解?

  • 爲什麼 HotSpot 虛擬機要使用解釋器與編譯器並存的架構?

  • 編譯優化技術有哪些?

  • 說下你對 Java 內存模型的理解?

  • 內存間的交互操做有哪些?須要知足什麼規則?

  • 5、計算機網絡

  • 談談你對五層網絡協議的理解?每一層的做用是什麼?每一層的數據單元是什麼?

  • 簡單說下每一層對應的網絡協議有哪些?

  • ARP 協議的工做原理?

  • 談下你對 IP 地址分類的理解?

  • TCP 和 UDP 的區別?

  • TCP 和 UDP 分別對應的常見應用層協議有哪些?

  • 詳細說下 TCP 三次握手的過程?

  • 爲何兩次握手不能夠?爲何不須要四次握手?

  • 爲何要回傳 SYN? 爲何要傳 ACK?

  • 詳細說下 TCP 四次揮手的過程?

  • 爲何 TIME-WAIT 狀態必須等待 2MSL 的時間呢?

  • 爲何第二次跟第三次不能合併, 第二次和第三次之間的等待是什麼?

  • 保活計時器的做用?

  • TCP 協議是如何保證可靠傳輸的?

  • 談談你對中止等待協議的理解?

  • 談談你對 ARQ 協議的理解?

  • 滑動窗口有什麼做用?

  • 談下你對 TCP 擁塞控制的理解?四種算法?

  • TCP 黏包是怎麼產生的?怎麼解決?

  • 說幾個你知道的 HTTP 狀態碼?

  • HTTP 狀態碼 301 和 302 表明的是什麼?有什麼區別?

  • forward 和 redirect 的區別?

  • HTTP 方法有哪些?

  • 說下 GET 和 POST 的區別?

  • HTTP 的首部字段有哪些?

  • 在瀏覽器中輸入 URL 地址到顯示主頁的過程?

  • 說下 DNS 解析的過程?

  • 談下你對 HTTP 長鏈接和短鏈接的理解?分別應用於哪些場景?

  • 談下 HTTP1.0 和 1.一、1.2 的主要變化?

  • HTTPS 的工做過程?

  • HTTP 和 HTTPS 的區別?

  • HTTPS 的優缺點?

  • 什麼是數字簽名?什麼是證書?

  • 什麼是對稱加密和非對稱加密?

  • 經常使用的加密算法有哪些?

  • Session 和 Cookie 的區別?

  • 什麼是 CAS 單點登陸?

  • 如何設計一個 CAS 單點登陸系統?

  • Socket 兩個典型的接收方式方式?

  • Socket 在 OSI七 層模型中的哪一層?

  • Java 如何實現無阻塞方式的 Socket 編程?

  • 說下你知道你知道的***手段有哪些?

  • 跨站腳本***的原理、危害和防範手段?

  • 跨站請求僞造的原理、危害和防範手段?

  • SQL 注入***的原理、危害和防範手段?

  • 拒絕服務*** DOS 的原理、危害和防範手段?

6、計算機操做系統

  • 進程與線程的區別?

  • 進程的狀態及其轉換?

  • 進程間的通訊方式有哪些?

  • 進程(或做業)的調度算法有哪些?

  • 同步和互斥的區別?

  • 同步、異步、阻塞、非阻塞的區別?

  • 線程/進程同步的方式有哪些?

  • 什麼是緩衝區溢出,有什麼危害,緣由是什麼?

  • 什麼是死鎖?

  • 死鎖產生的必要條件?

  • 死鎖的檢測和消除?

  • 怎麼處理死鎖?

  • 怎麼預防死鎖?

  • 怎麼避免死鎖?

  • 固定分區、動態分區、分段式存儲管理和分頁式存儲管理的區別?

  • 頁面置換算法有哪些?

  • 什麼是虛擬內存技術?

  • 動態連接庫和靜態連接庫的區別?

  • 說下你對磁盤結構的認識?

  • 磁盤調度算法?

  • 中斷的類型有哪些?

  • 7、設計模式

  • 簡單說下經常使用的設計模式有哪些?

  • 工廠方法模式和抽象工廠模式有什麼區別?

  • 實際開發中用過設計模式嗎?怎麼用的?

  • 解釋器、迭代器、觀察者、適配器、組合、外觀、代理等模式的原理是什麼?

  • 文件目錄採用的是哪一種設計模式?

  • JDK 中用到了哪些設計模式?

  • Spring 中用到了哪些設計模式?

8、MySQL

  • 手寫/口述場景題的 SQL 語句

  • 一條 SQL 語句在數據庫框架中的執行流程?

  • 數據庫的三範式是什麼?

  • MySQL 中的數據類型有哪些?

  • char 和 varchar 的區別?

  • 談談你對索引的理解?底層數據結構?

  • 爲何要使用索引?必定要使用索引嗎?

  • 爲何索引的底層數據結構採用 B+ 樹而不是紅黑樹?

  • 索引的類型?

  • 什麼叫聚簇索引?什麼叫聯合索引?

  • 談下什麼是前綴索引?

  • 談下什麼是覆蓋索引?

  • 什麼狀況下索引會失效?即查詢不走索引?

  • 查詢性能的優化方法?

  • InnoDB 和 MyISAM 的比較?

  • 爲何要分庫分表?分庫分表後,主鍵 ID 怎麼設置?

  • 水平切分和垂直切分該如何選擇?存在什麼問題?

  • 主從複製中涉及到哪三個線程?

  • 如何實現 MySQL 的讀寫分離?

  • MySQL 的主從複製原理是什麼?如何解決 MySQL 主從同步延遲問題?

  • 談下你對讀寫分離的理解?

  • 談下你對數據庫事務的理解?不一樣隔離級別下會產生什麼問題?怎麼解決?

  • MySQL 默認的隔離級別是什麼?

  • MVCC 的實現原理是什麼?

  • 數據庫中經常使用的鎖有哪些?

  • 表鎖和行鎖有什麼區別?

  • InnoDB 何時使用行級鎖?何時使用表級鎖?

  • InnoDB 存儲引擎的鎖的 3 種算法?

  • MySQL 數據庫 CPU 飆升到 500% 的話他怎麼處理?

9、Spring

  • AOP 的代理有哪幾種方式?

  • 怎麼實現 JDK 動態代理?

  • AOP 的基本概念:切面、鏈接點、切入點等?

  • 談談你對 IOC 的理解?

  • Bean 的生命週期?

  • Bean 的做用域?

  • Spring 中的單例 Bean 的線程安全問題了解嗎?

  • 談談你對 Spring 中的事物的理解?

  • Spring 中的事務隔離級別?

  • Spring 中的事物傳播行爲?

  • Spring 經常使用的注入方式有哪些?

  • Spring 框架中用到了哪些設計模式?

10、SpringMVC

  • 談談你對 MVC 模式的理解?

  • SpringMVC 的工做原理/執行流程?

  • SpringMVC 的重要組件有哪些?

  • 談談你對 DispatcherServlet 的源碼理解?

  • SpringMVC 經常使用的註解有哪些?

  • SpringMVC 怎麼樣設定重定向和轉發的?

  • 如何解決 POST 請求中文亂碼問題,GET 的又如何處理呢?

  • SpringMVC 的控制器是否是單例模式,若是是,有什麼問題,怎麼解決?

  • SpringMVC 裏面攔截器是怎麼寫的?

  • SpringMVC 用什麼對象從後臺向前臺傳遞數據的?

11、MyBatis

  • Mybatis 中 #{}和 ${}的區別是什麼?

  • Mybatis 有幾種分頁方式?

  • Mybatis 邏輯分頁和物理分頁的區別是什麼?

  • Mybatis 是否支持延遲加載?延遲加載的原理是什麼?

  • 說一下 Mybatis 的一級緩存和二級緩存?

  • Mybatis 和 Hibernate 的區別有哪些?

  • Mybatis 有哪些執行器(Executor)?

  • Mybatis 分頁插件的實現原理是什麼?

12、Redis

  • Redis 是什麼?Redis 有哪些功能?都有哪些使用場景?

  • Redis 爲何是單線程的?

  • Redis 支持的數據類型有哪些?

  • 什麼是緩存雪崩?該如何解決?

  • 什麼是緩存穿透?怎麼解決?

  • 怎麼保證緩存和數據庫數據的一致性?

  • Redis 持久化有幾種方式?

  • Redis 怎麼實現分佈式鎖?Redis 分佈式鎖有什麼缺陷?

  • Redis 淘汰策略有哪些?

  • redis 常見的性能問題有哪些?該如何解決?

十3、消息隊列

  • 消息隊列的主要做用?

  • 消息隊列的優缺點?

  • 如何保證消息隊列的高可用?

  • 如何保證消息不被重複消費?或者說,如何保證消息消費的冪等性?

  • 如何保證消息的可靠性傳輸?或者說,如何處理消息丟失的問題?

  • 如何保證消息的順序性?

  • 如何解決消息隊列的延時以及過時失效問題?消息隊列滿了之後該怎麼處理?有幾百萬消息持續積壓幾小時,說說怎麼解決?

  • 若是讓你寫一個消息隊列,該如何進行架構設計?說一下你的思路

  • RabbitMQ 有哪些重要的角色?有哪些重要的組件?

  • RabbitMQ 怎麼避免消息丟失?

  • 要保證消息持久化成功的條件有哪些?

  • RabbitMQ 有幾種廣播類型?

  • RabbitMQ 怎麼實現延遲消息隊列?

  • Kafka 能夠脫離 zookeeper 單獨使用嗎?爲何?

  • Kafka 有幾種數據保留的策略?

十4、Zookeeper

  • zookeeper 都有哪些功能?

  • zookeeper 有幾種部署模式?

  • 集羣中有 3 臺服務器,其中一個節點宕機,這個時候 zookeeper 還可使用嗎?

  • zookeeper 怎麼保證主從節點的狀態同步?

  • 集羣中爲何要有主節點?

  • 說一下 zookeeper 的通知機制?

  • 說一下兩階段提交和三階段提交的過程?分別有什麼問題?

  • 你認爲幾階段提交能夠實現可靠事務?

  • 如何使用 zookeeper 實現分佈式鎖?

十5、Dubbo

  • Dubbo 的組件有哪些?做用是什麼?

  • Dubbo 的集羣容錯模式有哪些?

  • Dubbo 中 zookeeper 作註冊中心,若是註冊中心集羣都掛掉,發佈者和訂閱者之間還能通訊麼?

  • Dubbo 鏈接註冊中心和直連的區別?

  • Dubbo 協議爲何要消費者比提供者個數多?

  • Dubbo 協議爲何不能傳大包?

  • Dubbo 協議爲何採用異步單一長鏈接?

  • Dubbo 支持哪些序列化協議?說一下 Hession 的數據結構?

  • 分佈式服務接口的冪等性如何設計?

  • 分佈式服務接口請求的順序性如何保證?

十6、分佈式理論

  • 談一下你對 CAP 的認識?

  • 什麼是 Base 理論?

  • 兩階段提交和三階段提交的過程?兩階段提交有什麼問題?三階段提交有什麼問題?

  • 分佈式事務經常使用的解決方案有哪些?

  • 說一下你對 TCC 模式的理解?

Paxos 算法

  • 說一下你對 ZAB 協議的理解?

  • 什麼是分佈式鎖?

  • 分佈式鎖應該具有哪些功能?

  • 分佈式鎖的實現方式有哪些?

十7、數據結構與算法

一、數組

  • 找出數組中出現次數大於數組長度一半和 N / K 的數

  • 數組的奇偶位置問題:給定一個整型數組,請在原地調整這個數組,保證要麼偶數位置上都是偶數,或者奇數位置上都是奇數。

  • 調整數組順序使奇數位於偶數前面

  • 數組的度

  • 求一個數組中的第 K 小 / 大的數

  • 將一個整數數組劃分爲 K 個相等的子集問題

  • 旋轉數組中的最小數字

  • 在二維數組中查找一個數

  • 找出數組中重複的數字

  • 找出數組中只出現一次的那個數,其餘都出現兩次

  • 子數組最大累乘積:給定一個 double 類型的數組 arr,其中的元素可正、可負、可 0,返回子數組累乘的最大乘積。

  • 須要排序的最短子數組長度

  • 最長的可整合子數組的長度

  • 最短無序連續子數組

  • 連續子數組的最大和

二、字符串

  • 字符串的排列與組合

  • 最長迴文子串

  • 正則表達式匹配:實現一個函數用來匹配包括'.'和'*'的正則表達式

  • 替換空格

  • 字符串的翻轉和旋轉及其應用

  • 字符串解碼

  • 無重複字符的最長子串

  • 字符串的最長公共子串和最長公共子序列

  • 請實現一個函數用來判斷字符串是否表示數值

  • 判斷一個字符串是不是一個合法的

三、哈希表

  • 手寫一個簡單的 HashMap

  • 和爲 K 的子數組:給定一個整數數組和一個整數 k,你須要找到該數組中和爲 k 的連續的子數組的個數

  • 一種接收消息並按順序打印的結構設計

  • 哈希表增長 setAll 功能

四、棧

  • 用固定大小的數組實現棧

  • 如何僅用隊列實現棧

  • 最小值棧:可以返回棧中最小元素的棧

  • 棧的壓入、彈出序列:輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能爲該棧的彈出順序

  • 單調棧結構的實現

  • 直方圖中的最大矩形面積

  • 求最大子矩陣的大小

  • 可見山峯問題

五、隊列

  • 用固定大小的數組實現隊列

  • 如何僅用棧結構實現隊列

六、鏈表

  • 反轉單向鏈表

  • 反轉雙向鏈表

  • K 個一組翻轉鏈表

  • 合併兩個排序的鏈表

  • 鏈表中倒數第 K 個節點

  • O(1) 時間內刪除一個節點

  • 刪除鏈表中重複的節點

  • 從尾到頭打印鏈表

  • 判斷一個鏈表是否爲迴文結構

  • 給出兩個有序鏈表的頭結點,打印出兩個鏈表中相同的元素

  • 將單向鏈表按某值劃分紅左邊小、中間相等、右邊大的形式

  • 複製含有隨機指針節點的鏈表

  • 兩個單鏈表相交的一系列問題

  • 鏈表中環的入口節點

  • 複雜鏈表的複製

七、樹

  • 二叉樹的前序、中序、後序遍歷的遞歸實現

  • 二叉樹的前序、中序、後序遍歷的非遞歸實現

  • 二叉樹的層序遍歷

  • Morris 遍歷二叉樹:前序、中序、後序

  • 輸入一個數組,判斷是否是二叉搜索樹的後序遍歷序列

  • 二叉樹的序列化:前序、層序

  • 反序列化:怎麼序列化的就怎麼反序列化

  • 在二叉樹中找一個節點的後繼節點

  • 判斷一棵樹是不是徹底二叉樹

  • 判斷一棵樹是不是搜索二叉樹

  • 判斷一棵樹是不是平衡二叉樹

  • 判斷一棵樹是不是對稱的二叉樹

  • 二叉樹的鏡像

  • 樹的子結構:輸入兩棵二叉樹 A 和 B,判斷 B 是否是 A 的子結構

  • 合併二叉樹

  • 二叉樹中和爲某一值的路徑

  • 重建二叉樹:輸入某二叉樹的前序遍歷和中序遍歷的結果,請從新構造出該二叉樹

  • 求一棵徹底二叉樹的節點個數,時間複雜度低於O(N)

  • 找二叉樹左下角的值

  • 把二叉搜索樹轉換爲累加樹

  • 舞會的最大活躍度

  • 求一棵二叉樹中最大二叉搜索子樹的節點個數

  • 求一個二叉樹的最遠距離

  • 二叉樹的最大路徑和

讀者福利:

不會作不要緊哦,整理了一份帶詳細答案的面試文檔資料,pdf可分享給你們,但願各位須要面試跳槽的朋友均可以順利面上本身想去的公司

領取方式:關注個人供種號【Java周某人】便可領取

b0801c1d3ece4706a3df495292ba213b



5db53aa444744eb7952eef1cff387d49

相關文章
相關標籤/搜索