我在github中開了個欄目,專門收集面試題,各位同仁如有面試題可fork,或者在評論區(qū)寫上,我加上去,大家一起進步!
#2. 2017.11.19整理面試題
##2.1 10道騰訊的Java面試題
1、說幾種常見的攻擊方式及預防手段。
2、http1.x和http2.x的區(qū)別。
3、mysql查詢語句怎么做性能分析。
4、你知道哪幾種排序算法?
5、HashMap和HashTable的區(qū)別,并說明其底層實現(xiàn)數(shù)據(jù)結構。
6、HashMap滿了之后怎么擴容?
7、Linux中遠程傳輸文件有什么方式?
8、說說Java中異常的分類。
9、TCP和UDP的區(qū)別,TCP為什么是三次握手,不是兩次。
10、說說數(shù)據(jù)庫設計的三范式,可以違反三范式嗎?
##2.2 Dubbo面試題錦集
1、默認使用的是什么通信框架,還有別的選擇嗎?
2、服務調(diào)用是阻塞的嗎?
3、一般使用什么注冊中心?還有別的選擇嗎?
4、默認使用什么序列化框架,你知道的還有哪些?
5、服務提供者能實現(xiàn)失效踢出是什么原理?
6、服務上線怎么不影響舊版本?
7、如何解決服務調(diào)用鏈過長的問題?
8、說說核心的配置有哪些?
9、dubbo推薦用什么協(xié)議?
10、同一個服務多個注冊的情況下可以直連某一個服務嗎?
11、畫一畫服務注冊與發(fā)現(xiàn)的流程圖
12、集群容錯怎么做?
13、在使用過程中都遇到了些什么問題?
14、dubbo和dubbox之間的區(qū)別?
15、你還了解別的分布式框架嗎?
##2.3 Java List面試題匯總
1、你知道的List都有哪些?
2、List和Vector有什么區(qū)別?
3、List是有序的嗎?
4、ArrayList和LinkedList的區(qū)別?分別用在什么場景?
5、ArrayList和LinkedList的底層數(shù)據(jù)結構是什么?
6、ArrayList默認大小是多少,是如何擴容的?
7、List是線程安全的嗎?如果要線程安全要怎么做?
8、怎么給List排序?
9、Arrays.asList方法后的List可以擴容嗎?
10、List和Array之間如何互相轉換?
##2.4 Java Map集合面試題匯總
1、 你都知道哪些常用的Map集合?
2、Collection集合接口和Map接口有什么關系?
3、HashMap是線程安全的嗎?線程安全的Map都有哪些?性能最好的是哪個?
4、使用HashMap有什么性能問題嗎?
5、HashMap的數(shù)據(jù)結構是怎樣的?默認大小是多少?內(nèi)部是怎么擴容的?
6、怎么按添加順序存儲元素?怎么按A-Z自然順序存儲元素?怎么自定義排序?
7、HashMap的鏈表結構設計是用來解決什么問題的?
8、HashMap的鍵、值可以為NULL嗎?HashTable呢?
9、HashMap使用對象作為key,如果hashcode相同會怎么處理?
10、HashMap中的get操作是什么原理?
##2.5 Spring面試題和答案(70道,史上最全)
1.什么是spring?
2.使用Spring框架的好處是什么?
3.Spring由哪些模塊組成?
4.核心容器(應用上下文)模塊。
5.BeanFactory–BeanFactory實現(xiàn)舉例。
6.XMLBeanFactory
7.解釋AOP模塊
8.解釋JDBC抽象和DAO模塊。
9.解釋對象/關系映射集成模塊。
10.解釋WEB模塊。
11.為什么說Spring是一個容器?
12.Spring配置文件
13.什么是SpringIOC容器?
14.IOC的優(yōu)點是什么?
15.ApplicationContext通常的實現(xiàn)是什么?
16.Bean工廠和Applicationcontexts有什么區(qū)別?
17.一個Spring的應用看起來象什么?
18.什么是Spring的依賴注入?
19.有哪些不同類型的IOC(依賴注入)方式?
20.哪種依賴注入方式你建議使用,構造器注入,還是Setter方法注入?
21.什么是Springbeans?
22.一個SpringBean定義包含什么?
23.如何給Spring容器提供配置元數(shù)據(jù)?
24.你怎樣定義類的作用域?
25.解釋Spring支持的幾種bean的作用域。
26.Spring框架中的單例bean是線程安全的嗎?
27.解釋Spring框架中bean的生命周期。
28.哪些是重要的bean生命周期方法?你能重載它們嗎?
29.什么是Spring的內(nèi)部bean?
30.在Spring中如何注入一個java集合?
31.什么是bean裝配?
32.什么是bean的自動裝配?
33.解釋不同方式的自動裝配。
34.自動裝配有哪些局限性?
35.你可以在Spring中注入一個null和一個空字符串嗎?
36.什么是基于Java的Spring注解配置?給一些注解的例子.
37.什么是基于注解的容器配置?
38.怎樣開啟注解裝配?
39.@Required注解
40.@Autowired注解
41.@Qualifier注解
42.在Spring框架中如何更有效地使用JDBC?
43.JdbcTemplate
44.Spring對DAO的支持
45.使用Spring通過什么方式訪問Hibernate?
46.Spring支持的ORM
47.如何通過HibernateDaoSupport將Spring和Hibernate結合起來?
48.Spring支持的事務管理類型
49.Spring框架的事務管理有哪些優(yōu)點?
50.你更傾向用那種事務管理類型?
51.解釋AOP
52.Aspect切面
53.在SpringAOP中,關注點和橫切關注的區(qū)別是什么?
54.連接點
55.通知
56.切點
57.什么是引入?
58.什么是目標對象?
59.什么是代理?
60.有幾種不同類型的自動代理?
61.什么是織入。什么是織入應用的不同點?
62.解釋基于XMLSchema方式的切面實現(xiàn)。
63.解釋基于注解的切面實現(xiàn)
64.什么是Spring的MVC框架?
65.DispatcherServlet
66.WebApplicationContext
67.什么是SpringMVC框架的控制器?
68.@Controller注解
69.@RequestMapping注解
70.返回Json用什么注解?
##2.6 Zookeeper面試題錦集
1、zookeeper是什么框架?
2、有哪些應用場景?
3、使用什么協(xié)議?
4、說說分布式一致性算法Paxos
5、說一說選舉算法及流程
6、zookeeper有哪幾種節(jié)點類型?
7、zookeeper對節(jié)點的watch監(jiān)聽通知是永久的嗎?
8、有哪幾種部署模式?
9、集群中的機器角色都有哪些?
10、集群最少要幾臺機器,集群規(guī)則是怎樣的
11、集群如果有3臺機器,掛掉一臺集群還能工作嗎?掛掉兩臺呢?
12、集群支持動態(tài)添加機器嗎?
13、zookeeper的java客戶端都有哪些?
14、chubby是什么,和zookeeper比你怎么看?
15、說幾個zookeeper常用的命令。
##2.7 阿里巴巴高級Java面試題(首發(fā),70道)
1、java事件機制包括哪三個部分?分別介紹。
2、為什么要使用線程池?
3、線程池有什么作用?
4、說說幾種常見的線程池及使用場景。
5、線程池都有哪幾種工作隊列?
6、怎么理解無界隊列和有界隊列?
7、線程池中的幾種重要的參數(shù)及流程說明。
8、什么是反射機制?
9、說說反射機制的作用。
10、反射機制會不會有性能問題?
11、你怎么理解http協(xié)議?
12、說說http協(xié)議的工作流程。
13、http有哪些請求提交方式?
14、http中的200,302,403,404,500,503都代表什么狀態(tài)?
15、http get和post有什么區(qū)別?
16、你怎么理解cookie和session,有哪些不同點?
17、什么是web緩存?有什么優(yōu)點?
18、什么是https,說說https的工作原理?
19、什么是http代理服務器,有什么用?
20、什么是虛擬主機及實現(xiàn)原理?
21、什么是Java虛擬機,為什么要使用?
22、說說Java虛擬機的生命周期及體系結構。
23、說一說Java內(nèi)存區(qū)域。
24、什么是分布式系統(tǒng)?
25、分布式系統(tǒng)你會考慮哪些方面?
26、講一講TCP協(xié)議的三次握手和四次揮手流程。
27、為什么TCP建立連接協(xié)議是三次握手,而關閉連接卻是四次握手呢?為什么不能用兩次握手進行連接?
28、為什么TCP TIME_WAIT狀態(tài)還需要等2MSL后才能返回到CLOSED狀態(tài)?
29、什么是DoS、DDoS、DRDoS攻擊?如何防御?
30、描述一下Java異常層次結構。
31、什么是檢查異常,不受檢查異常,運行時異常?并分別舉例說明。
32、finally塊一定會執(zhí)行嗎?
33、正常情況下,當在try塊或catch塊中遇到return語句時,finally語句塊在方法返回之前還是之后被執(zhí)行?
34、try、catch、finally語句塊的執(zhí)行順序。
35、Java虛擬機中,數(shù)據(jù)類型可以分為哪幾類?
36、怎么理解棧、堆?堆中存什么?棧中存什么?
37、為什么要把堆和棧區(qū)分出來呢?棧中不是也可以存儲數(shù)據(jù)嗎?
38、在Java中,什么是是棧的起始點,同是也是程序的起始點?
39、為什么不把基本類型放堆中呢?
40、Java中的參數(shù)傳遞時傳值呢?還是傳引用?
41、Java中有沒有指針的概念?
42、Java中,棧的大小通過什么參數(shù)來設置?
43、一個空Object對象的占多大空間?
44、對象引用類型分為哪幾類?
45、講一講垃圾回收算法。
46、如何解決內(nèi)存碎片的問題?
47、如何解決同時存在的對象創(chuàng)建和對象回收問題?
48、講一講內(nèi)存分代及生命周期。
49、什么情況下觸發(fā)垃圾回收?
50、如何選擇合適的垃圾收集算法?
51、JVM中最大堆大小有沒有限制?
52、堆大小通過什么參數(shù)設置?
53、JVM有哪三種垃圾回收器?
54、吞吐量優(yōu)先選擇什么垃圾回收器?響應時間優(yōu)先呢?
55、如何進行JVM調(diào)優(yōu)?有哪些方法?
56、如何理解內(nèi)存泄漏問題?有哪些情況會導致內(nèi)存泄露?如何解決?
57、從分布式系統(tǒng)部署角度考慮,分哪幾層?
58、如何解決業(yè)務層的數(shù)據(jù)訪問問題?
59、為了解決數(shù)據(jù)庫服務器的負擔,如何做數(shù)據(jù)庫的分布?
60、什么是著名的拜占庭將軍問題?
61、為什么說TCP/IP協(xié)議是不可靠的?
62、講講CAP理念。
63、怎么理解強一致性、單調(diào)一致性和最終一致性?
64、分布式系統(tǒng)設計你會考慮哪些策略?
65、最常見的數(shù)據(jù)分布方式是什么?
66、談一談一致性哈希算法。
67、paxos是什么?
68、什么是Lease機制?
69、如何理解選主算法?
70、OSI有哪七層模型?TCP/IP是哪四層模型
##2.8 關于String的10道經(jīng)典面試題
1、String是基本數(shù)據(jù)類型嗎?
2、String是可變的話?
3、怎么比較兩個字符串的值一樣,怎么比較兩個字符串是否同一對象?
4、switch中可以使用String嗎?
5、String str = new String("abc");創(chuàng)建了幾個對象,為什么?
6、String、StringBuffer、StringBuilder有什么區(qū)別?
7、String.trim()方法去掉的是哪些字符?
8、String可以被子類繼承嗎?
9、可以自定義java.lang.String類并使用嗎?
10、String與byte[]兩者相互之間如何轉換?
##2.9 去BAT面試完的Mysql面試題總結(55道,帶完整答案)
1、一張表里面有ID自增主鍵,當insert了17條記錄之后,刪除了第15,16,17條記錄,再把mysql重啟,再insert一條記錄,這條記錄的ID是18還是15 ?
2、mysql的技術特點是什么?
3、Heap表是什么?
4、mysql服務器默認端口是什么?
5、與Oracle相比,mysql有什么優(yōu)勢?
6、如何區(qū)分FLOAT和DOUBLE?
7、區(qū)分CHAR_LENGTH和LENGTH?
8、請簡潔描述mysql中InnoDB支持的四種事務隔離級別名稱,以及逐級之間的區(qū)別?
9、在mysql中ENUM的用法是什么?
10、如何定義REGEXP?
11、CHAR和VARCHAR的區(qū)別?
12、列的字符串類型可以是什么?
13、如何獲取當前的mysql版本?
14、mysql中使用什么存儲引擎?
15、mysql驅(qū)動程序是什么?
16、TIMESTAMP在UPDATE CURRENT_TIMESTAMP數(shù)據(jù)類型上做什么?
17、主鍵和候選鍵有什么區(qū)別?
18、如何使用Unix shell登錄mysql?
19、 myisamchk是用來做什么的?
20、mysql數(shù)據(jù)庫服務器性能分析的方法命令有哪些?
21、如何控制HEAP表的最大尺寸?
22、MyISAM Static和MyISAM Dynamic有什么區(qū)別?
23、federated表是什么?
24、如果一個表有一列定義為TIMESTAMP,將發(fā)生什么?
25、列設置為AUTO INCREMENT時,如果在表中達到最大值,會發(fā)生什么情況?
26、怎樣才能找出最后一次插入時分配了哪個自動增量?
27、你怎么看到為表格定義的所有索引?
28、LIKE聲明中的%和_是什么意思?
29、如何在Unix和mysql時間戳之間進行轉換?
30、列對比運算符是什么?
31、我們?nèi)绾蔚玫绞懿樵冇绊懙男袛?shù)?
32、mysql查詢是否區(qū)分大小寫?
33、LIKE和REGEXP操作有什么區(qū)別?
34、BLOB和TEXT有什么區(qū)別?
35、mysql_fetch_array和mysql_fetch_object的區(qū)別是什么?
36、我們?nèi)绾卧趍ysql中運行批處理模式?
37、MyISAM表格將在哪里存儲,并且還提供其存儲格式?
38、mysql中有哪些不同的表格?
39、ISAM是什么?
40、InnoDB是什么?
41、mysql如何優(yōu)化DISTINCT?
42、如何輸入字符為十六進制數(shù)字?
43、如何顯示前50行?
44、可以使用多少列創(chuàng)建索引?
45、NOW()和CURRENT_DATE()有什么區(qū)別?
46、什么樣的對象可以使用CREATE語句創(chuàng)建?
47、mysql表中允許有多少個TRIGGERS?
48、什么是非標準字符串類型?
49、什么是通用SQL函數(shù)?
50、解釋訪問控制列表
51、mysql支持事務嗎?
52、mysql里記錄貨幣用什么字段類型好?
53、mysql數(shù)據(jù)表在什么情況下容易損壞?
54、mysql有關權限的表都有哪幾個?
55、mysql中有哪幾種鎖?
##2.10 稍微有點難度的10道java面試題
1、jvm對頻繁調(diào)用的方法做了哪些優(yōu)化?
2、常見的攻擊手段有哪些?如何防范?
3、restful api有哪些設計原則?
4、hessian是做什么用的?它的傳輸單位是什么?
5、http中的post、get有什么區(qū)別?base64過后的字符串可以通過get傳輸嗎?
6、常用的算法都有哪些分類,分別有哪些算法及應用場景?
7、死鎖是什么?寫一個死鎖的例子?如何避免死鎖?
8、學用的序列化方案都有哪些,說說它們的優(yōu)缺點?
9、什么是過濾器、攔截器、監(jiān)聽器,它們的順序是怎樣的?
10、servlet3.0有哪些新規(guī)范?
面試題答案詳見:https://github.com/landy8530/interview?