金三銀四跳槽季-Java中級程序員必備面試題

1、如何創建一個有序集合

2、用jdbc寫一段有事務的代碼

3、簡述servlet,jsp,Struts2,springMVC是否是線程安全的,為什麼

5、如何避免瀏覽器緩存

6、radis,ehcache兩種緩存有什麼區別。radis如何存放一個java對象

7、如何寫sql能夠有效的使用到複合索引

8、在myBatis的xml配置文件中,怎樣使用sql中的in條件

9、在linux中,修改一個文件的所屬賬戶為weblogic並設置為只讀。打出命令。

10、如何在一臺電腦上使用http://www.baidu.com域名地址訪問本地eclipse啟動的應用

11、query有哪些選擇器,用jquery如何獲取一個checkbox的是否被選中的值/

12、請按照你理解的方式,編碼實現(允許偽碼),如下功能:

List keyList = Maps.toList(aMap).byKey();

List valueList = Maps.toList(aMap).byValue();

如果你來設計上述你所理解到的功能的API,你會如何設計(只需如上,給到API調用代碼即可,實現可以忽略)?

深挖上面的問題,如果要求在獲取對應List的過程中,需要做到:

a. 如果遇到null,則去除或者替換成其他默認字符

b. 需要在新生成的字符串中,添加前綴(假設這是一個Map<string>)/<string>

c. 在保持代碼優雅、可讀、極佳複用和擴展體驗的情況下,你覺得還可以加入什麼樣的功能?

13、由HashMap,你可以聯想到什麼?

14、NULL是一個比較讓人困擾的設計,你是否同意呢? 如果需要在應用中規避NULL帶來的不足之處,請你列舉可能的應對方案。

15、如何在父類中為子類自動完成所有的hashcode和equals的實現?這麼做有何優劣?

16、請結合OO設計理念,談談訪問修飾符public、private、protected、default在應用設計中的作用?

17、請舉出JDK中,你最有感情和心得的幾個類,如果要把它們全部都使用起來,請結合用戶下單的邏輯,告知一個方案,能把這些類全部用上?

18、請用批判的角度(越瘋狂越好),抨擊一下JDK中collection體系和IO體系的設計。

19、有一個方法 getLimitResource(resKey/*resource key*/), 在併發調用的情況下,如何控制併發量,(進一步)如何控制秒級併發?

20、請思考一個方案,設計一個可以控制緩存總體大小的自動適應的本地緩存

21、JDK中的ThreadPool的設計有何優劣,如果要改造它以求達到最大吞吐量,請問有何方案?

22、請思考一個方案,實現分佈式環境下的countDownLatch?

23、舉例一種JDK內部實現CAS的方式

24、列舉你可以搜索到的,並且喜歡的併發框架(請上網)。

25、怎麼實現緩存過期?

26、你最喜歡的設計模式有哪些?他們為你解決了什麼問題?你覺得你的性格和哪個設計模式比較像?

27、如果要你來設計一個設計模式,你會為她取什麼名字?

28、你讀過哪些設計模式的書,談談對這些作者的印象?

29、在裝飾器模式和代理模式之間,你如何抉擇,請結合自身實際情況聊聊

30、請列舉幾個反模式,並列舉可能的應用場景,並通過調整以求“撥正”

31、代碼重構的步驟和原因,如果理解重構到模式?

32、如果要改造Spring,你最有興趣的是哪些方面?你覺得spring是一個分佈式框架嗎?如果不是,你覺得還差哪些東西?

33、請結合自身情況,聊聊分佈式三態?

34、重複和重發的應對方案有哪些?

35、分佈式環境下的控制併發手法?

36、從12306系統入手,分析一下這個系統的分佈式特點、挑戰和你的解決方案

37、如何評價一個消息系統,有哪些考核指標?

38、關於平臺組件化和業務組件化,你有什麼想法?

39、列舉分佈式高性能的常用框架,並結合營銷、訂單聊聊你的項目經驗?(適用於有電商經驗的候選人)

40、深拷貝和淺拷貝區別,深拷貝的幾種實現方法。

41、equals和==的區別?

42、mysql中in 和exists 區別

43、寫出三種單例模式實現

44、Java多線程協作,countdowlatch和cyclicbarrier的用法,以及相互之間的差別?

45、JVM的組成,作用

46、g1和cms區別,吞吐量優先和響應優先的垃圾收集器選擇

47、數組和鏈表數據結構描述,各自的時間複雜度

48、描述克隆表達式和正則表達式

49、DispatcherServlet初始化過程

50、ConcurrentHashMap的內部結構是什麼

51、如果兩個數相加超過long的最大值,怎麼求平均值

52、方法區(永久代)可以進行垃圾回收嗎

53、redis哪些命令是線程安全的,哪些非安全

54、ByteArrayInputStream內部維護的是一個byte[],能想象這個api讀取一個比較大的文件時會出現什麼問題嗎

55、介紹下你理解的線程切換過程,名詞不準確沒關係

56、集群環境中,如果大量請求同時運行到以下方法,有沒有線程安全問題,為什麼

public String getXXStr(){

return new StringBuilder().append("abc")

.append(123).append("zkl")

.append("edf").toString();

}


57、有哪些方法可以實現分佈式鎖,至少挑一種詳細介紹下

58、java八種基礎類型+一種引用類型,他們的賦值操作中,有哪些是線程安全絕不會劃分到兩個時間片中的

59、關注過哪些jvm參數(說明意義就行,不需要單詞拼對)

60、請列出5個設計模式

61、請列出5個運行時異常

62、int i=0; for(String item:ItemArray){i++;continue;} system.out.println(i); 請寫出輸出值

63、int i=0; system.out.print(i++); 請寫出輸出值

64、請描述 Session/Cookies/Request Attribute的作用範圍

65、請列舉web.xml的配置元素, 並寫出對應的描述

66、請畫出Spring MVC中的 ServletDispatch, Controller, Filter 的執行順序

67、http請求返回的狀態碼:200, 302, 404分別代表什麼意思

68、請描述一下什麼是悲觀鎖,什麼是樂觀鎖

69、請描述分佈式事務和數據庫事務有什麼異同

70、-server -Xms512m -Xmx512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m 是java啟動參數, 請描述上述參數的意思

71、請列出你所瞭解的性能測試工具

72、請寫一行斷言,斷言返回值 result 不為空

73、請列出你所瞭解的Mock框架

74、用一行命令查看文件的最後五行

75、用一行命令輸出正在運行的java進程

76、使用maven命令打包應用程序, 並忽略測試用例

77、使用maven命令將maven工程轉化為eclipse工程

78、error和exception的區別,RuntimeException和非RuntimeException的區別

79、使用synchronized修飾靜態方法和非靜態方法有什麼區別?

80、java nio的幾個核心api

81、什麼是ThreadLocal類,怎麼使用它?

82、畫出線程的生命週期的狀態轉換。sleep()、yield() 有什麼作用

83、cms回收機制分那幾個過程,有幾次堵塞

84、寫出不少於3種nosql數據庫,並簡單描述

85、MySQL中varchar與char的區別以及varchar(30)中的30代表的涵義

86、從哪些角度進行數據庫優化

87、後臺系統怎麼防止請求重複提交?

88、Spring AOP的原理?

89、列舉幾個用到過的jvm優化參數?參數:-XX:+PrintFlagsFinal中加號表示什麼意思?

90、代碼:System.out.println(1 / 0D); 輸出什麼?為什麼?

91、寫代碼自己封裝實現jquery中ajax函數(入參,回調,支持跨域);

92、如何通過mysql日誌分析出慢sql,並提供幾種慢sql解決方案?

93、java.util.concurrent包中使用過哪些類?分別說說使用在什麼場景?為什麼要使用?

94、如何使用redis和zookeeper實現分佈式鎖?有什麼區別(優缺點)?分別適用什麼場景?

95、針對應用程序出現“OutOfMemoryError: Java heap space”的情況,下面說法正確的有哪些

A. 檢查程序,看是否有死循環或不必要地重複創建大量對象。

B. jvm配置參數不變的情況下,加大物理內存。

C. 發生這種問題的原意是程序中使用了大量的jar或class,使java虛擬機裝載類的空間不夠。可通過調大 -XX:PermSize -XX:MaxPermSize 來避免。

D. 調大jvm的參數 -Xms -Xmx,可以一定程度上避免出現上述異常。

E. 調小jvm參數-Xss,可以一定程度上避免出現上述異常。

96、簡述tcp建立連接3次握手,和斷開連接4次握手的過程;關閉連接時,出現TIMEWAIT過多是由什麼原因引起,是出現在主動斷開方還是被動斷開方。

97、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題。

Class A{

private Map<string> cache;/<string>

public Map<string> initAndGetCache() {/<string>

// TODO: 初始化代碼

}

}

98、多線程高併發的情況下,採用doubleCheck方式實現方法initAndGetCache();

99、maven打的web工程中,同一個類出現在相同的jar包中,多臺機器實際使用的類不一樣,如何定位和解決這類問題。

100、描述HashMap與ConcurrentHashMap的區別。

101、簡述一種RPC(dubbo優先)的啟動和調用流程。

102、jvm對java堆內存如何分區,簡述GC原理,一個堆內對象在產生和被GC掉,會經歷過哪幾代。

103、後端服務器(4核CPU)出現load很高(到40),登陸在linux服務器上後,如何定位和排查原因,並提出解決方案。

104、如何看待緩存的使用(本地緩存,集中式緩存),簡述本地緩存和集中式緩存和優缺點。本地緩存在併發使用時的注意事項。

105、描述動態代理的兩種實現方式,分別說出相應的優缺點。

106、什麼是B+樹,B-樹,列出實際的使用場景。

107、請你寫出數據庫悲觀鎖和樂觀鎖你所瞭解的內容並且舉例說明使用場景

108、關鍵字final、static、public、volatile分別可以用來修飾什麼(類、方法、屬性)?會產生怎樣的效果?

109、在自己的代碼中,如果創建一個java.lang.String對象,這個對象是否可以被類加載器加載?為什麼?

110、說一說你對環境變量classpath的理解?如果一個類不在classpath下,為什麼會拋出ClassNotFoundException異常,如果在不改變這個類路徑的前期下,怎樣才能正確加載這個類?

111、結合你所用到過的開源框架,說一說你對反射的理解。反射可以在哪些場景下發揮作用?

112、說一說你對java.lang.Object對象中hashCode和equals方法的理解。在什麼場景下需要重新實現這兩個方法?

113、在jdk1.5中,引入了泛型,泛型的存在是用來解決什麼問題?

114、一臺全新的電腦,除了操作系統(windows)外,電腦上只有jdk安裝程序和windows自帶的記事本,寫出你編寫並運行hellow world程序的步驟。

115、說一說你所理解的jsp、servlet、request、response、filter、session、appliation。request.forward和request.redirect有什麼區別?

116、你閱讀過哪些開源框架的源代碼?並且從中學到了什麼?有沒有參與過開源項目?

117、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

118、解釋內存中的棧(stack)、堆(heap)和靜態區(static area)的用法

119、描述一下JVM加載class文件的原理機制

120、請簡單描述,java中存在內存洩漏的情況

121、泛型你使用的多麼?說說這兩個有什麼區別。List super T>、Set extends T>。

122、用java實現二分查找

123、寫一個產生者、消費者多線程的demo

124、請描述一下,當發現線上的程序佔用的內存越來越大時,如何來分析,解決此類問題?

125、SQLEXPLAIN語法及用途

126、實際開發中優化哪些SQL舉例說明

127、a.hashcode() 有什麼用,與a.equals(b)有什麼關係

128、volatile 修飾的變量一定線程安全嗎

129、有沒有可能2個不相等的對象有相同的hashcode

130、final,finalize和finally的不同之處

131、String與StringBuffer區別

132、HashTable與HashMap有什麼不同之處,請說明Hashmap的內部原理

133、Java中的HashSet內部是如何工作的

134、簡述NIO的最佳實踐,比如netty,mina

135、簡述Http請求get和post的區別以及數據包格式

136、TCP是如何建立連接和斷開連接的

137、簡述Synchronized的用法

138、列舉java多線程包以及常用類名稱

139、簡述Classloader加載機制

140、簡述ConcurrentLinkedQueue和LinkedBlockingQueue的用處和不同之處

141、導致線程死鎖的原因?怎麼解除線程死鎖

142、如何理解悲觀鎖和樂觀鎖,悲觀鎖會導致什麼結果,悲觀鎖和樂觀鎖怎麼正確使用

143、簡述Java垃圾回收機制

144、數據庫表索引機制,表索引和數據庫索引的區別

145、Mysql數據庫事務隔離機制有哪些


以上面試題來源網絡;


分享到:


相關文章: