版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Java初級工程師面試題目及參考答案考試時間:______分鐘總分:______分姓名:______一、單項選擇題(請選擇唯一正確的答案)1.下列哪個選項不屬于Java的原始數據類型?A.`int`B.`float`C.`boolean`D.`String`2.在Java中,`String`對象是不可變的,這意味著一旦創建了`String`對象,其值就不能被改變。以下哪種操作會創建一個新的`String`對象而不是修改原有的對象?A.`str.charAt(0)='A';`B.`str=str.replace("old","new");`C.`str.toLowerCase();`D.`str.concat("suffix");`3.關于Java中的`final`關鍵字,以下說法錯誤的是?A.`final`可以用來修飾類,表示該類不能被繼承。B.`final`可以用來修飾方法,表示該方法不能被重寫。C.`final`可以用來修飾變量,表示該變量的值一旦賦值后就不能改變。D.`final`變量必須在聲明時或構造方法中初始化。4.以下哪個關鍵字用于聲明一個類的成員變量是類級別的,即屬于類本身而不是任何具體的對象實例?A.`static`B.`abstract`C.`transient`D.`volatile`5.在Java中,用于處理異常的語句塊,哪個語句塊在`try`之后是必須的?A.`catch`B.`finally`C.`throw`D.`try-catch`6.以下哪個集合類是線程安全的?A.`ArrayList`B.`LinkedList`C.`HashMap`D.`Vector`7.當需要存儲不重復的元素集合,且對元素的插入順序有要求時,應該優先考慮使用哪個集合類?A.`HashSet`B.`LinkedHashSet`C.`TreeSet`D.`ArrayList`8.在JavaIO流中,`FileOutputStream`屬于哪種類型的流?A.字節輸入流B.字節輸出流C.字符輸入流D.字符輸出流9.在多線程環境下,如果多個線程需要訪問共享資源,為了防止數據不一致或程序邏輯錯誤,應該使用哪種機制來控制訪問?A.`volatile`關鍵字B.`synchronized`關鍵字或`Lock`接口C.`ThreadLocal`D.`notify()`/`wait()`10.`HashMap`和`HashTable`的主要區別之一是`HashMap`是線程不安全的,而`HashTable`是線程安全的。另一個區別是`HashTable`的所有方法都是同步的,而`HashMap`提供了一些非同步的方法(如`putAll`),這可能導致`HashMap`在遍歷時發生ConcurrentModificationException。請問關于`HashMap`和`HashTable`的描述,以下哪項是正確的?A.`HashMap`比`HashTable`性能更好,因為它的方法不是同步的。B.由于`HashMap`不是同步的,所以在多線程環境下使用`HashMap`總是安全的。C.`HashMap`的`key`和`value`都可以為`null`,而`HashTable`的`key`和`value`都不能為`null`。D.`HashMap`的`put`和`get`方法內部是同步的,但`putAll`是非同步的。11.下列關于Servlet生命周期方法的描述,錯誤的是?A.`init()`方法在Servlet被加載到JVM時調用一次。B.`service()`方法用于處理客戶端的請求,每次收到請求時都會調用。C.`destroy()`方法在Servlet實例被銷毀前調用,用于釋放資源。D.`load()`方法在Servlet初始化時調用,用于加載資源。12.在JSP頁面中,以下哪個標簽用于聲明并初始化一個Java變量或對象?A.`<%!%>`B.`<%%>`C.`<%=%>`D.`<%--%>`13.SQL語句中,用于刪除表中的數據的語句是?A.`SELECT`B.`INSERT`C.`UPDATE`D.`DELETE`14.`JOIN`操作用于結合兩個或多個表的行,基于這些表之間的相關列。如果想要獲取表A中的所有記錄,以及表B中與之匹配的記錄(如果不存在匹配,則表B的記錄不顯示),應該使用哪種`JOIN`?A.INNERJOINB.LEFTJOINC.RIGHTJOIND.FULLJOIN15.在關系型數據庫中,用于唯一標識表中每一行記錄的屬性稱為?A.索引B.外鍵C.主鍵D.聚合函數二、多項選擇題(請選擇所有正確的答案)1.以下哪些屬于Java的原始數據類型?A.`int`B.`double`C.`Object`D.`boolean`2.以下關于面向對象編程(OOP)原則的描述,哪些是正確的?A.封裝(Encapsulation):隱藏對象內部細節,只暴露必要的接口。B.繼承(Inheritance):實現代碼復用,建立類之間的層次關系。C.多態(Polymorphism):允許使用父類類型的引用來引用子類對象,實現接口的多種形態。D.抽象(Abstraction):關注對象的關鍵特征,忽略非本質細節。3.以下哪些數據結構是線性結構?A.數組B.鏈表C.棧D.二叉樹4.在Java中,以下哪些說法關于`equals()`方法是正確的?A.`Object`類中的`equals()`方法默認比較的是對象的引用(即內存地址)。B.對于自定義類,通常需要重寫`equals()`方法,以實現基于對象內容(屬性值)的比較。C.`equals()`方法應該遵守自反性、對稱性、傳遞性等原則。D.`equals()`方法在比較字符串時,總是與`==`比較效果相同。5.Java中的異常分為哪幾類?A.檢查型異常(CheckedExceptions)B.非檢查型異常(UncheckedExceptions/RuntimeExceptions)C.錯誤(Errors)D.邏輯錯誤6.以下哪些關于`HashMap`的說法是正確的?A.`HashMap`基于哈希表實現。B.`HashMap`的`put`和`get`操作的平均時間復雜度是O(1)。C.`HashMap`是線程不安全的。D.`HashMap`允許一個`null`鍵和多個`null`值。7.JavaIO流可以分為哪些類別?A.字節流(ByteStreams)B.字符流(CharacterStreams)C.對象流(ObjectStreams)D.過濾流(FilterStreams,可以包裝其他流)8.在多線程編程中,`ThreadLocal`類的作用是什么?A.為每個使用該`ThreadLocal`變量的線程提供一個獨立的變量副本。B.減少線程之間的共享數據,從而降低線程沖突的可能性。C.常用于存儲線程上下文信息或線程本地緩存。D.保證變量在不同線程間的可見性。9.SQL語句中,`SELECT`語句通常可以使用哪些子句來過濾數據?A.`WHERE`B.`GROUPBY`C.`HAVING`D.`ORDERBY`10.在JavaWeb開發中,以下哪些技術或概念是常用的?A.ServletB.JSPC.HTML/CSS/JavaScriptD.MVC設計模式三、簡答題1.請簡述面向對象編程(OOP)的四個基本原則(封裝、繼承、多態、抽象)及其各自的意義。2.請解釋Java中的`==`運算符和`equals()`方法的主要區別,以及為什么通常需要重寫`equals()`方法。3.請簡述Java中的異常處理機制,包括基本概念(如異常類型、`try-catch-finally`語句)和異常處理的最佳實踐。4.請簡述`ArrayList`和`LinkedList`兩種`List`實現類的特點、底層結構以及它們在添加、刪除、查找操作上的性能差異。5.請簡述`HashMap`的工作原理(哈希函數、沖突解決方法),并說明影響`HashMap`性能的幾個關鍵因素。四、編程題1.請編寫一個Java方法,接收一個整數數組作為參數,返回該數組中的最大值。要求:不能使用Java自帶的`Math.max()`方法。請提供方法的聲明和實現代碼。2.請編寫一個簡單的Java程序,包含一個`Person`類。`Person`類有私有屬性`name`(字符串)和`age`(整數),并提供公有的構造方法(接收`name`和`age`作為參數)、`getName()`和`getAge()`方法。此外,提供一個`toString()`方法,用于返回`Person`對象的字符串表示形式,格式為`"Name:[name],Age:[age]"`。請提供`Person`類的完整定義。3.假設有一個學生信息表`students`,包含字段`id`(主鍵,整數),`name`(姓名,字符串),`score`(分數,整數)。請編寫一個SQL查詢語句,用于查找所有分數大于等于60分的學生記錄,并按分數降序排列。五、系統設計/問題分析題1.請解釋`volatile`關鍵字在Java中的作用。在什么場景下使用`volatile`關鍵字?它與`synchronized`關鍵字有什么主要區別?試卷答案一、單項選擇題1.D解析:Java的原始數據類型包括`byte`,`short`,`int`,`long`,`float`,`double`,`char`,`boolean`。`String`是引用類型。2.B解析:`str.charAt(0)='A';`試圖修改`String`內部字符數組,但`String`不可變,此操作無效。`replace`,`toLowerCase`,`concat`都會生成并返回新的`String`對象。3.D解析:`final`變量可以在聲明時或構造方法中初始化。靜態初始化塊(`static{...}`)也可以在類加載時初始化`final`靜態變量。4.A解析:`static`關鍵字修飾的成員變量屬于類,所有對象共享該變量。`abstract`用于聲明抽象類或抽象方法。`transient`和`volatile`用于修飾變量,與變量是屬于類還是對象無關,`volatile`表示可見性,`transient`表示不序列化。5.D解析:`try`語句塊用于嘗試執行可能拋出異常的代碼。`catch`用于捕獲并處理特定異常。`finally`用于無論是否發生異常都要執行的代碼塊。必須與`try`搭配使用,`try-catch`是完整的異常處理結構。6.D解析:`Vector`是`ArrayList`的早期線程安全版本,但性能較低。`Collections.synchronizedList(newArrayList<>())`或`Collections.synchronizedMap(newHashMap<>())`可以創建線程安全的集合,但`Vector`本身就是線程安全的。`ArrayList`和`LinkedList`本身非線程安全。`HashMap`非線程安全,`HashTable`線程安全。7.B解析:`LinkedHashSet`繼承了`HashSet`,保留了元素的插入順序,并且元素唯一。`HashSet`不保證順序。`TreeSet`保證排序順序。`ArrayList`不保證唯一性。8.B解析:`FileOutputStream`是用于向文件寫入字節數據的輸出流類。9.B解析:`volatile`保證變量的可見性,但不保證原子性。`synchronized`可以保證代碼塊的原子性、可見性(對被同步變量)和有序性。`ThreadLocal`提供線程局部變量。防止數據不一致或邏輯錯誤通常需要原子性或互斥訪問,`synchronized`是主要機制。10.B解析:A錯誤,`HashMap`非同步方法也可能在高并發下因并發修改導致問題。B錯誤,`HashMap`非同步,需要外部處理同步。C錯誤,`HashMap`允許一個`null`鍵和多個`null`值。D正確,`HashMap`內部方法非同步,`put`,`get`在遍歷時可能拋`ConcurrentModificationException`,`HashTable`所有方法均同步,無此問題。11.D解析:Servlet生命周期方法包括`init()`,`service()`,`destroy()`。`load()`不是Servlet生命周期方法。12.A解析:`<%!%>`用于在JSP頁面中聲明和執行Java代碼,類似于在Java類中定義成員變量和方法。`<%%>`用于執行Java代碼。`<%=%>`用于輸出變量或表達式的值。`<%--%>`用于注釋。13.D解析:`DELETE`語句用于從數據庫表中刪除數據行。14.B解析:`LEFTJOIN`(或`LEFTOUTERJOIN`)返回左表(表A)的所有記錄,以及右表(表B)中與之匹配的記錄。如果右表中沒有匹配,則右表的列將為`null`。`RIGHTJOIN`反之。`INNERJOIN`只返回兩表都匹配的記錄。`FULLJOIN`返回兩表中所有記錄,無論是否匹配。15.C解析:主鍵(PrimaryKey)是用于唯一標識表中每一行記錄的屬性,通常具有唯一性約束和非空約束。二、多項選擇題1.A,B,D解析:Java原始數據類型包括A(`int`),B(`double`),D(`boolean`)。C(`Object`)是引用類型。2.A,B,C,D解析:封裝、繼承、多態、抽象都是OOP的核心原則。封裝隱藏內部實現。繼承實現代碼復用和層次結構。多態允許接口多種實現。抽象關注本質,忽略細節。3.A,B,C解析:線性結構是指元素具有一對一的線性關系。數組、鏈表、棧滿足此條件。D(二叉樹)是樹形結構。4.A,B,C解析:A正確,`Object`的`equals()`默認比較引用。B正確,自定義類通常重寫`equals()`。C正確,`equals()`需滿足自反、對稱、傳遞。D錯誤,`equals()`比較內容,`==`比較引用。5.A,B,C解析:Java異常分為檢查型異常(如`IOException`)、非檢查型異常(如`NullPointerException`,`ArithmeticException`)、錯誤(如`OutOfMemoryError`)。邏輯錯誤通常指代碼本身的錯誤,不屬于異常分類。6.A,B,C,D解析:A正確,`HashMap`基于哈希表。B正確,平均時間復雜度O(1)。C正確,`HashMap`非線程安全。D正確,允許一個`null`鍵,允許多個`null`值(存儲在不同的bucket中)。7.A,B,C,D解析:JavaIO流體系包括字節流(`InputStream`,`OutputStream`等)、字符流(`Reader`,`Writer`等)、對象流(`ObjectInputStream`,`ObjectOutputStream`)、過濾流(`FilterInputStream`,`FilterOutputStream`等)。8.A,B,C解析:`ThreadLocal`為每個線程提供獨立的變量副本,減少共享,降低沖突。常用于線程本地存儲。D錯誤,`volatile`保證可見性,不提供副本。9.A,D解析:`WHERE`子句用于過濾行。`ORDERBY`子句用于對結果集排序。`GROUPBY`用于分組,通常與聚合函數(`COUNT`,`SUM`等)和`HAVING`子句(過濾分組后的結果)一起使用。`GROUPBY`和`HAVING`不直接用于過濾單行數據。10.A,B,C,D解析:Servlet和JSP是JavaWeb開發的核心技術。HTML/CSS/JavaScript是Web前端基礎。MVC是常用的Web應用設計模式。三、簡答題1.簡述面向對象編程(OOP)的四個基本原則(封裝、繼承、多態、抽象)及其各自的意義。解析:*封裝(Encapsulation):將數據(屬性)和操作數據的方法(行為)捆綁在一起,形成一個對象。通過訪問器(getter)和修改器(setter)方法或直接暴露必要的方法來控制對內部數據的訪問,隱藏內部實現細節。意義在于提高模塊化、降低耦合度、增強安全性、便于維護和擴展。*繼承(Inheritance):允許一個類(子類/派生類)繼承另一個類(父類/基類)的屬性和方法。子類可以復用父類的代碼,并可以添加新的屬性和方法或重寫父類的方法。意義在于代碼復用、建立類之間的層次關系、增強可維護性和可擴展性。*多態(Polymorphism):指同一個方法調用在不同的對象上可以表現出不同的行為。通常通過方法重寫(子類提供父類方法的具體實現)和方法重載(同一個類中方法名相同但參數列表不同)實現。意義在于提高代碼的靈活性、可擴展性和可重用性,使程序設計更符合現實世界的模型。*抽象(Abstraction):提取對象的共同特征(屬性和行為),形成類。忽略非本質的細節,關注對象的關鍵特征。通過抽象類和接口實現。意義在于降低復雜度、提高代碼的復用性、增強系統的可維護性。2.請解釋Java中的`==`運算符和`equals()`方法的主要區別,以及為什么通常需要重寫`equals()`方法。解析:*主要區別:*`==`:對于原始數據類型,比較的是值是否相等。對于引用類型(對象),比較的是對象的引用(內存地址)是否相同。*`equals()`:默認在`Object`類中,對于引用類型,比較的是對象的引用是否相同。大多數自定義類會重寫`equals()`方法,以便比較對象的內容(屬性值)是否相等。*重寫`equals()`的原因:在大多數自定義類中,我們關心的是對象包含的數據(狀態)是否相同,而不是對象的內存地址。如果不重寫,使用`==`比較引用類型對象將無法滿足業務邏輯的需求(例如,無法判斷兩個不同對象是否“相等”)。通過重寫`equals()`,可以定義“相等”的含義,基于對象的實際內容進行比較,使得集合類(如`HashSet`,`HashMap`)能正確地判斷鍵的相等性,以及對象邏輯上的一致性。3.請簡述Java中的異常處理機制,包括基本概念(如異常類型、`try-catch-finally`語句)和異常處理的最佳實踐。解析:*基本概念:*異常類型:主要分為檢查型異常(CheckedExceptions)和非檢查型異常(UncheckedExceptions/RuntimeExceptions)。檢查型異常是編譯時必須處理的異常(如`IOException`,`SQLException`),非檢查型異常是運行時可能發生的異常(如`NullPointerException`,`ArrayIndexOutOfBoundsException`,它們都繼承自`RuntimeException`)。*異常處理結構:`try-catch-finally`。`try`塊包含可能拋出異常的代碼。`catch`塊用于捕獲并處理特定類型的異常。可以有多個`catch`塊捕獲不同類型的異常。`finally`塊(可選)包含無論是否發生異常都要執行的代碼(如資源釋放),它總是執行,除非線程被中斷。*最佳實踐:*捕獲具體異常:盡量捕獲具體的異常類型,而不是使用寬泛的`Exception`類,以便更精確地處理不同情況。*處理或拋出:在`catch`塊中,要么對異常進行處理(如記錄日志、提供用戶反饋、嘗試恢復),要么將異常重新拋出(`throwe;`或`thrownew...Exception(...);`)。*避免空catch:不要只寫`catch(Exceptione){}`而不做任何處理,至少應記錄日志。*不要吞掉異常:罕見情況除外,通常異常意味著有問題,應該處理或拋出。*資源清理:使用`try-with-resources`語句(Java7及以后)自動關閉實現了`AutoCloseable`接口的資源,或者在`finally`塊中顯式關閉資源。*不要在循環內捕獲異常:異常通常表示需要中斷循環或處理嚴重問題,應在循環外部處理。4.請簡述`ArrayList`和`LinkedList`兩種`List`實現類的特點、底層結構以及它們在添加、刪除、查找操作上的性能差異。解析:*特點:*`ArrayList`:基于動態數組實現。隨機訪問速度快。插入和刪除(尤其是在數組末尾)通常較快,但刪除/插入中間元素需要移動大量元素。線程不安全。*`LinkedList`:基于雙向鏈表實現。隨機訪問慢(需要從頭或尾遍歷)。插入和刪除(尤其是在已知節點的情況下)通常較快,因為不需要移動其他元素。線程不安全。*底層結構:*`ArrayList`:內部維護一個Object數組。當數組容量不足時,會創建一個更大的新數組,并將舊數組中的元素復制到新數組中。*`LinkedList`:內部維護一個節點(Node)對象鏈表。每個節點包含存儲元素的數據部分和指向上一個節點和下一個節點的引用。*性能差異:*添加(末尾):`ArrayList`通常是O(1)(擴容時是O(n)的平攤成本)。`LinkedList`是O(1)(添加到尾部節點或頭節點)。*添加(中間):`ArrayList`是O(n)(需要移動后續所有元素)。`LinkedList`是O(1)(如果已知節點位置),否則需要O(n)(從頭或尾遍歷到插入位置)。*刪除(末尾):`ArrayList`是O(1)。`LinkedList`是O(1)。*刪除(中間):`ArrayList`是O(n)(需要移動后續所有元素)。`LinkedList`是O(1)(如果已知節點位置),否則需要O(n)(遍歷到刪除位置)。*查找(通過索引):`ArrayList`是O(n)(最壞情況需要遍歷一半)。`LinkedList`是O(n)(需要從頭或尾遍歷到索引位置)。*查找(通過元素):`ArrayList`是O(n)(需要遍歷)。`LinkedList`是O(n)(需要遍歷)。5.請簡述`HashMap`的工作原理(哈希函數、沖突解決方法),并說明影響`HashMap`性能的幾個關鍵因素。解析:*工作原理:*哈希函數:`HashMap`使用元素的`hashCode()`方法計算出一個哈希值,然后通過某種算法(通常是`hashCode()`與數組長度取模)將這個哈希值映射到數組的某個索引位置(稱為桶或bucket)。這個映射過程就是哈希函數。*沖突解決方法:由于哈希值可能不均勻分布,不同的鍵可能映射到同一個數組索引(稱為哈希沖突)。`HashMap`主要使用鏈表法解決沖突:當多個鍵值對哈希到同一個桶時,它們會被存儲在該桶位置的一個鏈表中。在Java8及以后版本中,當鏈表長度超過一定閾值(默認8)時,會轉換為紅黑樹結構以優化性能。*影響性能的關鍵因素:*哈希函數的質量:好的哈希函數應能盡可能均勻地將鍵分布到各個桶中,減少沖突,提高`put`和`get`操作的平均時間復雜度。*負載因子(LoadFactor):負載因子是`HashMap`中存儲的鍵值對總數與底層數組容量的比值。默認值為0.75。當這個比值超過負載因子時,`HashMap`會進行擴容操作(創建一個更大的數組,并將所有現有元素重新哈希到新數組中)。負載因子越高,擴容次數越少,但沖突概率越高;負載因子越低,沖突概率越低,但空間利用率較低,擴容次數頻繁。選擇合適的負載因子是一個權衡。*數組容量(初始容量和擴容后的容量):初始容量過大可以減少早期擴容的次數。擴容后的容量(通常是原容量的1.5倍)直接影響擴容時元素重新哈希的開銷。容量太小會導致頻繁擴容,容量太大可能浪費空間且增加沖突概率。*元素的大小:存儲的元素越大,內存占用越多,可能影響哈希分布和鏈表/紅黑樹的效率。四、編程題1.請編寫一個Java方法,接收一個整數數組作為參數,返回該數組中的最大值。要求:不能使用Java自帶的`Math.max()`方法。請提供方法的聲明和實現代碼。解答:```javapublicintfindMax(int[]arr){if(arr==null||arr.length==0){//可以拋出異常或返回特定值,這里返回Integer.MIN_VALUE作為示例returnInteger.MIN_VALUE;}intmax=arr[0];for(inti=1;i<arr.length;i++){if(arr[i]>max){max=arr[i];}}returnmax;}```2.請編寫一個簡單的Java程序,包含一個`Person`類。`Person`類有私有屬性`name`(字符串)和`age`(整數),并提供公有的構造方法(接收`name`和`age`作為參數)、`getName()`和`getAge()`方法。此外,提供一個`toString()`方法,用于返回`Person`對象的字符串表示形式,格式為`"Name:[name],Age:[age]"`。請提供`Person`類的完整定義。解答:```javapublicclassPerson{privateStringname;privateintag
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 某建材公司質量驗收準則
- 2026年七年級語文下冊文言文《陋室銘》綜合閱讀訓練(含答案)
- 高中英語選擇性必修一Unit2 詞匯變形默寫練習
- 江蘇徐州市銅山區2025-2026學年高二年級下冊期中學情調研歷史試題
- 定向鉆進考試試題及答案大全
- 注冊建筑考試真題及答案解析
- 農業工作者專業技術工作總結
- 新冠樣本接收考試題目及詳細答案
- 2025屆云南省德宏傣族景頗族自治州瑞麗市數學三年級下學期期末教學質量檢測模擬試題含答案
- 黨員競聘試題及答案
- 2026湖南興湘投資控股集團招聘面試題及答案
- 招行客戶經理面試技巧與常見問題解答
- 風電混凝土塔筒預制示范基地開發項目環境影響報告表
- GB/T 26952-2025焊縫無損檢測磁粉檢測驗收等級
- 民政局民政協理員考試試題及答案
- 智慧農業設備的選址與配置的操作規程
- 煤礦一規程四細則解讀課件
- (高清版)DB42∕T 2020-2023 《河道疏浚砂綜合利用實施方案編制導則》
- 《危險化學品目錄》(2026版)
- 新版《藥品召回管理辦法》質量管理培訓課件
- 2023版 光伏、風電項目基建管理辦法
評論
0/150
提交評論