一、心態(tài)
心態(tài)很重要!
心態(tài)很重要!
心態(tài)很重要!
?? 重要的事情說三遍,這一點我覺得是必須放到前面來講。
找工作之前,有一點你必須清楚,就是找工作是一件看緣分的事情,不是你很牛,你就一定能進你想進的公司,都是有一個概率在那。如果你基礎好,項目經(jīng)驗足,同時準備充分,那么你拿到offer的概率就會比較高;相反,如果你準備不充分,基礎也不好,那么你拿到offer的概率就會比較低,但是你可以多投幾家公司,這樣拿到offer的幾率就要大一點,因為你總有運氣好的時候。所以,不要懼怕面試,剛開始失敗了沒什么的,多投多嘗試,面多了你就自然能成面霸了。得失心也不要太重,最后每個人都會有offer的。
還有就是對待校招的態(tài)度,校招的目的并不僅僅是為了找工作,而且也是為了鍛煉自己,提升自己;對于每個大學生來說,真正的校招只有一次,因此一定要珍惜;經(jīng)過了校招的磨練后,自己的能力將得到很大的提升;這也是人生一個重要的經(jīng)歷;
二、基礎
基礎這東西,各個公司都很看重,尤其是BAT這種大公司,他們看中人的潛力,他們舍得花精力去培養(yǎng),所以基礎是重中之重。之前很多人問我,項目經(jīng)歷少怎么辦,那就去打牢基礎,當你的基礎好的發(fā)指的時候,你的其他東西都不重要了。基礎無外乎幾部分:語言(C/C++或java),操作系統(tǒng),TCP/IP,數(shù)據(jù)結構與算法,再加上你所熟悉的領域。這里面其實有很多東西,各大面試寶典都有列舉。在這只列舉了java后臺工程師所需要的和我的學生面試中所遇到的知識點,盡量做到全面,如果你掌握了以下知識點,去面java后臺工程師應該得心應手。
J2SE基礎
1. 八種基本數(shù)據(jù)類型的大小,以及他們的封裝類。
2. 如果兩個Integer的值相等,使用==進行判斷的結果是否相等(常量池問題)?
3. 你重寫過hashcode和equals么,要注意什么
4. Object有哪些公用方法?
5. Java的四種引用,強弱軟虛,用到的場景。
6. equals與==的區(qū)別。
7. try catch finally,try里有return,finally還執(zhí)行么?
8. Excption與Error包結構。OOM你遇到過哪些情況,SOF你遇到過哪些情況。
9. Java面向對象的三個特征與含義。
10. Override和Overload的含義與區(qū)別。
11. Interface與abstract類的區(qū)別。
12. Static class 與non static class的區(qū)別。
13. String、StringBuffer與StringBuilder的區(qū)別。
14. ArrayList、LinkedList、Vector的區(qū)別。
15. Hashmap的原理
16. Map、Set、List、Queue、Stack的特點與用法。
17. HashMap和HashTable的區(qū)別。
18. HashMap和ConcurrentHashMap的區(qū)別,HashMap的底層源碼。
19. TreeMap、HashMap、LindedHashMap的區(qū)別。
20. Collection包結構,與Collections的區(qū)別。
21. Hashmap的大小為什么指定為2的冪次
22. Arraylist的原理
23. Hashmap中jdk1.8之后做了哪些優(yōu)化
24. 多線程條件變量為什么要在while體里
25. Concurrent包里的其他東西:ArrayBlockingQueue、CountDownLatch等等。
26. 實現(xiàn)多線程的三種方法:Thread,Runable,Callable.
27. 線程同步的方法:sychronized、lock、reentrantLock等。
28. 寫一個單例模式,如何解決線程安全的問題;
29. 問了為什么用Volatile,synchronize移到方法最外面會怎么樣?
30. 鎖的等級:方法鎖、對象鎖、類鎖。
31. 寫出生產(chǎn)者消費者模式。
32. Synchronize關鍵字為什么jdk1.5后效率提高了
33. 講一下countDownLatch
34. ThreadLocal的設計理念與作用。
35. ThreadPool用法與優(yōu)勢。
36. wait()和sleep()的區(qū)別。
37. 說一個你最熟悉的設計模式
38.講一下你項目中用到了哪些設計模式
39 講一下線程狀態(tài)轉移圖
40. Java IO與NIO。
41.Nio的原理
42.Channel和buffer
43.directBuffer和buffer的區(qū)別
44.nio和aio的區(qū)別
45.I++操作怎么保證線程安全
46.如何解決并發(fā)訪問的錯誤
47.死鎖是什么呢
48.怎么解決死鎖
49. 反射的作用于原理。
50. 泛型常用特點,List能否轉為List。
51. 解析XML的幾種方式的原理與特點:DOM、SAX、PULL。
52. Java與C++對比。
53. Java1.7與1.8新特性。
54. 設計模式:單例、工廠、適配器、責任鏈、觀察者等等。
55.單例模式在你項目里哪些應用?
Java里有很多很雜的東西,有時候需要你閱讀源碼,大多數(shù)可能書里面講的不是太清楚,需要你在網(wǎng)上尋找答案。
推薦書籍:《java核心技術卷I》《Thinking in java》《java并發(fā)編程實戰(zhàn)》《effictive java》《大話設計模式》
JVM
1. 內存模型以及分區(qū),需要詳細到每個區(qū)放什么。
2. 堆里面的分區(qū):Eden,survival from to,老年代,各自的特點。
3. 對象創(chuàng)建方法,對象的內存分配,對象的訪問定位。
4. GC的兩種判定方法:引用計數(shù)與引用鏈。
5. GC的三種收集方法:標記清除、標記整理、復制算法的原理與特點,分別用在什么地方,如果讓你優(yōu)化收集方法,有什么思路?
6. GC收集器有哪些?CMS收集器與G1收集器的特點。
7. Minor GC與Full GC分別在什么時候發(fā)生?
8. 幾種常用的內存調試工具:jmap、jstack、jconsole。
9. 類加載的五個過程:加載、驗證、準備、解析、初始化。
10.雙親委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。
11.分派:靜態(tài)分派與動態(tài)分派。
10.Java的full gc
11.Full gc會導致什么問題
12.垃圾回收算法的過程
13.你了解的垃圾收集器? Cms收集器的過程
14.怎樣進入老年代?
JVM過去過來就問了這么些問題,沒怎么變,內存模型和GC算法這塊問得比較多,可以在網(wǎng)上多找?guī)灼┛蛠砜纯础?/b>
推薦書籍:《深入理解java虛擬機》
操作系統(tǒng)
1. 進程和線程的區(qū)別。
2. 死鎖的必要條件,怎么處理死鎖。
3. Window內存管理方式:段存儲,頁存儲,段頁存儲。
4. 進程的幾種狀態(tài)。
5. IPC幾種通信方式。
6. 什么是虛擬內存。
7. 虛擬地址、邏輯地址、線性地址、物理地址的區(qū)別。
推薦書籍:《深入理解現(xiàn)代操作系統(tǒng)》
TCP/IP
1. OSI與TCP/IP各層的結構與功能,都有哪些協(xié)議。
2. TCP與UDP的區(qū)別。
3. TCP報文結構。
4. TCP的三次握手與四次揮手過程,各個狀態(tài)名稱與含義,TIMEWAIT的作用。
5. TCP擁塞控制。
6. TCP滑動窗口與回退N針協(xié)議。
7. Http的報文結構。
8. Http的狀態(tài)碼含義。
9. Http request的幾種類型。
10. Http1.1和Http1.0的區(qū)別
11. Http怎么處理長連接。
12. Cookie與Session的作用于原理。
13. 電腦上訪問一個網(wǎng)頁,整個過程是怎么樣的:DNS、HTTP、TCP、OSPF、IP、ARP。
14. Ping的整個過程。ICMP報文是什么。
15. C/S模式下使用socket通信,幾個關鍵函數(shù)。
16. IP地址分類。
17. 路由器與交換機區(qū)別。
18. http請求流程
網(wǎng)絡其實大體分為兩塊,一個TCP協(xié)議,一個HTTP協(xié)議,只要把這兩塊以及相關協(xié)議搞清楚,一般問題不大。
推薦書籍:《TCP/IP協(xié)議族》
數(shù)據(jù)結構與算法
1. 鏈表與數(shù)組。
2. 隊列和棧,出棧與入棧。
3. 鏈表的刪除、插入、反向。
4. 字符串操作。
5. Hash表的hash函數(shù),沖突解決方法有哪些。
6. 各種排序:冒泡、選擇、插入、希爾、歸并、快排、堆排、桶排、基數(shù)的原理、平均時間復雜度、最壞時間復雜度、空間復雜度、是否穩(wěn)定。
7. 快排的partition函數(shù)與歸并的Merge函數(shù)。
8. 對冒泡與快排的改進。
9. 二分查找,與變種二分查找。
10. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。
11. 二叉樹的前中后續(xù)遍歷:遞歸與非遞歸寫法,層序遍歷算法。
12. 圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。
13. KMP算法。
14. 排列組合問題。
15. 動態(tài)規(guī)劃、貪心算法、分治算法。(一般不會問到)
16. 大數(shù)據(jù)處理:類似10億條數(shù)據(jù)找出最大的1000個數(shù).........等等
17. 加密解密了解么?幾種算法,講一下你了解的
18.寫一個兩個有序鏈表合并成一個有序鏈表
19.堆排序的原理
20.介紹一下紅黑樹
21.對算法有什么了解?答主先回答了動態(tài)規(guī)劃,解釋了一下dp的思想
22.快排的思想講一下
23.講一下穩(wěn)定的排序算法和不穩(wěn)定的排序算法
24.手撕算法:一棵二叉排序樹,給定一個數(shù),找到與給定數(shù)差值最小的數(shù)
25.場景題:設計一個系統(tǒng),解決搶購時所需要的大量的短鏈接的功能,如何保證高并發(fā),如何設計短鏈接
26.手撕算法:兩個排序的數(shù)組A和B分別含有m和n個數(shù),找到兩個排序數(shù)組的中位數(shù),答主用的二分,時間復雜度為O(log (m+n))。結果面試官不滿意,
讓用歸并的思想做,時間復雜度其實更高了
27.手撕算法:假設你是一個專業(yè)的竊賊,準備沿著一條街打劫房屋。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是:相鄰的房子裝著相互
聯(lián)系的防盜系統(tǒng),且 當相鄰的兩個房子同一天被打劫時,該系統(tǒng)會自動報警。給定一個非負整數(shù)列表,表示每個房子中存放的錢, 算一算,如果今晚去
打劫,你最多可以得到多少錢 在不觸動報警裝置的情況下。
28.算法題:給一個整數(shù)數(shù)組,找到兩個數(shù)使得他們的和等于一個給定的數(shù) target。
29.手撕算法:最小公倍數(shù)和最大公約數(shù)
30.手撕算法:反轉單鏈表
31.手撕算法:實現(xiàn)類似微博子結構的數(shù)據(jù)結構,輸入一系列父子關系,輸出一個類似微博評論的父子結構圖
32.手撕一個單例模式
33.智力題:時針分針什么時候重合
算法的話其實是個重點,因為最后都是要你寫代碼,所以算法還是需要花不少時間準備,這里有太多算法題,寫不全,我的建議是沒事多在OJ上刷刷題(??途W(wǎng)、leetcode等),劍指offer上的算法要能理解并自己寫出來,編程之美也推薦看一看。
推薦書籍:《大話數(shù)據(jù)結構》《劍指offer》《編程之美》《編程珠璣》
javaEE:
1.servlet工作流程,如何解決配置文件過于繁瑣的問題
2.JSP和Servlet有什么區(qū)別?為什么要搞出兩個來。
3.forward 和 redirect區(qū)別
4.servlet的幾個方法 doget dopost區(qū)別
5.在多個服務器之間session是怎么共享的。
6.servlet工作流程,如何解決配置文件過于繁瑣的問題
7.session的機制;session和cookie區(qū)別
8.servlet和filter的區(qū)別。filter你在哪些地方用到過。
9.怎么解決session一致性緩存的問題
框架:
1.Hibernate的延遲加載是怎么實現(xiàn)的
2.Hibernate持久化的狀態(tài)。
3.Hibernate的生成策略
4.Hibernate的batch有數(shù)量限制么
5.hiberate與mybatis區(qū)別
6.Mybatis高級映射
7.Spring IOC和AOP的理解,它們的原理是什么,如果讓你自己搞個IOC,AOP的話,怎么搞。
8.Struts2和SpringMVC的區(qū)別。
9.spring實現(xiàn)事務的方式有哪些。
10.spring中$與#。
11.spring的事務有幾種方式?談談spring事務的隔離級別和傳播行為。
12.spring中用到了哪些設計模式,線程池;
13.Spring中autowire和resourse關鍵字的區(qū)別
14.講講你對spring的理解,不要把ioc和aop背給我聽
15.介紹spring中的熟悉的注解
16.讓你實現(xiàn)autowire注解的功能你會如何實現(xiàn)
17.Spring的aop怎么實現(xiàn)
18.Spring的aop有哪些實現(xiàn)方式
19.動態(tài)代理的實現(xiàn)方式和區(qū)別
框架里有很多很雜的東西,有時候需要你閱讀源碼,大多數(shù)可能書里面講的不是太清楚,需要你在網(wǎng)上尋找答案,也同時需要看一下官方的文檔
數(shù)據(jù)庫
1.講一下數(shù)據(jù)的acid
2.什么是一致性
3.什么是隔離性
4.Mysql的隔離級別
5.每個隔離級別是如何解決
6.數(shù)據(jù)庫的索引原理
7.非聚簇索引和聚簇索引
8.索引的使用注意事項
9.項目用到什么數(shù)據(jù)庫?隔離級別?每個隔離級別各做了什么
10.數(shù)據(jù)庫的索引?mysql不同引擎索引的區(qū)別
11.數(shù)據(jù)庫的索引原理
12.索引使用的注意事項
13.Mysql的數(shù)據(jù)庫引擎,區(qū)別特點
14.一千萬用戶并發(fā)搶購,怎么設計
15.什么時候用讀鎖
16.什么時候用寫鎖
17.Cas的原理,使用場景
18.數(shù)據(jù)庫的瓶頸
19.緩存還沒更新到主存,服務器掛了怎么辦
20.數(shù)據(jù)庫掛了怎么辦
21.鎖的實現(xiàn)原理
22.怎么解決緩存和主存的一致性問題
23.數(shù)據(jù)庫掛了怎么怎么辦
24.怎么保證一致性
25.分布式事務知道么
26.介紹分布式事務
27.為什么負載均衡
28.怎么實現(xiàn)負載均衡
29.數(shù)據(jù)庫掛了怎么辦?除了熱備份還有什么方法
30.數(shù)據(jù)庫的索引
31.數(shù)據(jù)庫的隔離級別
32.Mysql的容災備份
33.Redis和memcache 的區(qū)別
34.為什么選擇redis
35.mysql數(shù)據(jù)庫的引擎和區(qū)別
36.看你最近博客寫的是redis,介紹redis和mysql的區(qū)別
37.Redis的應用場景
38.設計題,一個圖書館管理系統(tǒng),數(shù)據(jù)庫怎么設計,需求自己定
39.Redis的特點
40.分布式事務了解么
41.Mongodb和關系型數(shù)據(jù)庫之間的區(qū)別,還了解其他的非關系型數(shù)據(jù)庫沒
42.Redis如何解決key沖突
43.有深入了解過redis嗎?
44.Redis的優(yōu)勢和特點
45.Redis和mysql的區(qū)別
46.Redis的持久化有哪些方式,具體原理
47.如果成功的用戶有10萬,redis存不下怎么處理
48.了解redis源碼么
49.了解redis集群么
50.Redis的持久化?有哪些方式,原理是什么?
51.Mysql對聯(lián)合索引有優(yōu)化么?會自動調整順序么?哪個版本開始優(yōu)化?
52.Redis的應用
53.Redis的持久化的方式和原理
新技術
1.如果你夠牛,mq,dubbo,zookeeper都會問到
2.對高負載有了解么
3.對高并發(fā)有了解么?
4.消息隊列了解么
5.分布式了解么
6.自己寫一個tomcat服務器,你會怎么寫
7.分布式服務器會出現(xiàn)哪些問題
8.反爬蟲的機制,有哪些方式
場景
1.場景題:設計一個下單系統(tǒng),下單成功后可以給用戶發(fā)優(yōu)惠券
2.接上面場景題:服務器掛了,優(yōu)惠券還沒發(fā)怎么辦
3.場景題:千萬用戶搶購,如何處理高并發(fā),并且有一個鏈接,指向前一天搶購成功的用戶,如何設計這個系統(tǒng)和數(shù)據(jù)庫
4.如果后臺處理搶購請求的服務器,每次最多承受200的負載,系統(tǒng)該怎么設計
hr
你的職業(yè)規(guī)劃
有哪些offer
為什么還來我們這
自我介紹
三、 項目
關于項目,這部分每個人的所做的項目不同,所以不能具體的講。項目不再與好與不好,在于你會不會包裝,有時候一個很low的項目也能包裝成比較高大上的項目,多用一些專業(yè)名詞,突出關鍵字,能使面試官能比較容易抓住重點。在聊項目的過程中,其實你的整個介紹應該是有一個大體的邏輯,這個時候是在考驗你的表達與敘述能力,所以好好準備很重要。、
面試官喜歡問的問題無非就幾個點:
1. XXX(某個比較重要的點)是怎么實現(xiàn)的?
2. 你在項目中遇到的最大的困難是什么,怎么解決的?
3. 項目某個部分考慮的不夠全面,如果XXXX,你怎么優(yōu)化?
4. XXX(一個新功能)需要實現(xiàn),你有什么思路?
5. XXX項目的亮點有哪些?
6. 如果數(shù)據(jù)量很大,并發(fā)數(shù)很多怎么處理?
7. 項目介紹,最復雜的表
8. 項目介紹
9. 項目架構
10.項目難點
11.項目里一個完整請求的流程
12.項目的優(yōu)化
其實你應該能夠預料到面試官要問的地方,請?zhí)崆皽蕚浜?,如果被問到?jīng)]有準備到的地方,也不要緊張,一定要說出自己的想法,對不對都不是關鍵,主
要是有自己的想法,另外,你應該對你的項目整體框架和你做的部分足夠熟悉。
四、 其他
你應該問的問題
面試里,最后面完之后一般面試官都會問你,你有沒有什么要問他的。其實這個問題是有考究的,問好了其實是有加分的,一般不要問薪資,主要應該是:關于公司的、技術和自身成長的。
以下是我常問的幾個問題,如果需要可以參考:
1. 貴公司一向以XXX著稱,能不能說明一下公司這方面的特點?
2. 貴公司XXX業(yè)務發(fā)展很好,這是公司發(fā)展的重點么?
3. 對技術和業(yè)務怎么看?
4. 貴公司一般的團隊是多大,幾個人負責一個產(chǎn)品或者業(yè)務?
5. 貴公司的開發(fā)中是否會使用到一些最新技術?
6. 對新人有沒有什么培訓,會不會安排導師?
7. 對Full Stack怎么看?
8. 你覺得我有哪些需要提高的地方?
知識面
除了基礎外,你還應該對其他領域的知識有多少有所涉獵。對于你所熟悉的領域,你需要多了解一點新技術與科技前沿,你才能和面試官談笑風生。
軟實力
什么是軟實力,就是你的人際交往、靈活應變能力,在面試過程中,良好的禮節(jié)、流暢的表達、積極的交流其實都是非常重要的。很多公司可能不光看你的技術水平怎么樣,而更看重的是你這個人怎么樣的。所以在面試過程中,請保持誠信、積極、樂觀、幽默,這樣更容易得到公司青睞。很多時候我們都會遇到一個情況,就是面試官的問題我不會,這時候大多數(shù)情況下不要馬上說我不會,要懂得牽引,例如面試官問我C++的多態(tài)原理,我不懂,但我知道java的,哪我可以向面試官解釋說我知道java的,類似的這種可以往相關的地方遷移(但是需要注意的是一定不要不懂裝懂,被拆穿了是很尷尬的),意思就是你要盡可能的展示自己,表現(xiàn)出你的主動性,向面試官推銷自己。還有就是遇到智力題的時候,不要什么都不說,面試官其實不是在看你的答案,而是在看你的邏輯思維,你只要說出你自己的見解,有一定的思考過程就行。
五、面試技巧
1.技術面試時,會的問題以回答,不會的問題怎么回答;
2.HR面時,注意自己的禮貌;
3.聽懂面試官的問題一、心態(tài)
心態(tài)很重要!
心態(tài)很重要!
心態(tài)很重要!
?? 重要的事情說三遍,這一點我覺得是必須放到前面來講。
找工作之前,有一點你必須清楚,就是找工作是一件看緣分的事情,不是你很牛,你就一定能進你想進的公司,都是有一個概率在那。如果你基礎好,項目經(jīng)驗足,同時準備充分,那么你拿到offer的概率就會比較高;相反,如果你準備不充分,基礎也不好,那么你拿到offer的概率就會比較低,但是你可以多投幾家公司,這樣拿到offer的幾率就要大一點,因為你總有運氣好的時候。所以,不要懼怕面試,剛開始失敗了沒什么的,多投多嘗試,面多了你就自然能成面霸了。得失心也不要太重,最后每個人都會有offer的。
還有就是對待校招的態(tài)度,校招的目的并不僅僅是為了找工作,而且也是為了鍛煉自己,提升自己;對于每個大學生來說,真正的校招只有一次,因此一定要珍惜;經(jīng)過了校招的磨練后,自己的能力將得到很大的提升;這也是人生一個重要的經(jīng)歷;
二、基礎
基礎這東西,各個公司都很看重,尤其是BAT這種大公司,他們看中人的潛力,他們舍得花精力去培養(yǎng),所以基礎是重中之重。之前很多人問我,項目經(jīng)歷少怎么辦,那就去打牢基礎,當你的基礎好的發(fā)指的時候,你的其他東西都不重要了?;A無外乎幾部分:語言(C/C++或java),操作系統(tǒng),TCP/IP,數(shù)據(jù)結構與算法,再加上你所熟悉的領域。這里面其實有很多東西,各大面試寶典都有列舉。在這只列舉了java后臺工程師所需要的和我的學生面試中所遇到的知識點,盡量做到全面,如果你掌握了以下知識點,去面java后臺工程師應該得心應手。
J2SE基礎
1. 八種基本數(shù)據(jù)類型的大小,以及他們的封裝類。
2. 如果兩個Integer的值相等,使用==進行判斷的結果是否相等(常量池問題)?
3. 你重寫過hashcode和equals么,要注意什么
4. Object有哪些公用方法?
5. Java的四種引用,強弱軟虛,用到的場景。
6. equals與==的區(qū)別。
7. try catch finally,try里有return,finally還執(zhí)行么?
8. Excption與Error包結構。OOM你遇到過哪些情況,SOF你遇到過哪些情況。
9. Java面向對象的三個特征與含義。
10. Override和Overload的含義與區(qū)別。
11. Interface與abstract類的區(qū)別。
12. Static class 與non static class的區(qū)別。
13. String、StringBuffer與StringBuilder的區(qū)別。
14. ArrayList、LinkedList、Vector的區(qū)別。
15. Hashmap的原理
16. Map、Set、List、Queue、Stack的特點與用法。
17. HashMap和HashTable的區(qū)別。
18. HashMap和ConcurrentHashMap的區(qū)別,HashMap的底層源碼。
19. TreeMap、HashMap、LindedHashMap的區(qū)別。
20. Collection包結構,與Collections的區(qū)別。
21. Hashmap的大小為什么指定為2的冪次
22. Arraylist的原理
23. Hashmap中jdk1.8之后做了哪些優(yōu)化
24. 多線程條件變量為什么要在while體里
25. Concurrent包里的其他東西:ArrayBlockingQueue、CountDownLatch等等。
26. 實現(xiàn)多線程的三種方法:Thread,Runable,Callable.
27. 線程同步的方法:sychronized、lock、reentrantLock等。
28. 寫一個單例模式,如何解決線程安全的問題;
29. 問了為什么用Volatile,synchronize移到方法最外面會怎么樣?
30. 鎖的等級:方法鎖、對象鎖、類鎖。
31. 寫出生產(chǎn)者消費者模式。
32. Synchronize關鍵字為什么jdk1.5后效率提高了
33. 講一下countDownLatch
34. ThreadLocal的設計理念與作用。
35. ThreadPool用法與優(yōu)勢。
36. wait()和sleep()的區(qū)別。
37. 說一個你最熟悉的設計模式
38.講一下你項目中用到了哪些設計模式
39 講一下線程狀態(tài)轉移圖
40. Java IO與NIO。
41.Nio的原理
42.Channel和buffer
43.directBuffer和buffer的區(qū)別
44.nio和aio的區(qū)別
45.I++操作怎么保證線程安全
46.如何解決并發(fā)訪問的錯誤
47.死鎖是什么呢
48.怎么解決死鎖
49. 反射的作用于原理。
50. 泛型常用特點,List能否轉為List。
51. 解析XML的幾種方式的原理與特點:DOM、SAX、PULL。
52. Java與C++對比。
53. Java1.7與1.8新特性。
54. 設計模式:單例、工廠、適配器、責任鏈、觀察者等等。
55.單例模式在你項目里哪些應用?
Java里有很多很雜的東西,有時候需要你閱讀源碼,大多數(shù)可能書里面講的不是太清楚,需要你在網(wǎng)上尋找答案。
推薦書籍:《java核心技術卷I》《Thinking in java》《java并發(fā)編程實戰(zhàn)》《effictive java》《大話設計模式》
JVM
1. 內存模型以及分區(qū),需要詳細到每個區(qū)放什么。
2. 堆里面的分區(qū):Eden,survival from to,老年代,各自的特點。
3. 對象創(chuàng)建方法,對象的內存分配,對象的訪問定位。
4. GC的兩種判定方法:引用計數(shù)與引用鏈。
5. GC的三種收集方法:標記清除、標記整理、復制算法的原理與特點,分別用在什么地方,如果讓你優(yōu)化收集方法,有什么思路?
6. GC收集器有哪些?CMS收集器與G1收集器的特點。
7. Minor GC與Full GC分別在什么時候發(fā)生?
8. 幾種常用的內存調試工具:jmap、jstack、jconsole。
9. 類加載的五個過程:加載、驗證、準備、解析、初始化。
10.雙親委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。
11.分派:靜態(tài)分派與動態(tài)分派。
10.Java的full gc
11.Full gc會導致什么問題
12.垃圾回收算法的過程
13.你了解的垃圾收集器? Cms收集器的過程
14.怎樣進入老年代?
JVM過去過來就問了這么些問題,沒怎么變,內存模型和GC算法這塊問得比較多,可以在網(wǎng)上多找?guī)灼┛蛠砜纯础?/b>
推薦書籍:《深入理解java虛擬機》
操作系統(tǒng)
1. 進程和線程的區(qū)別。
2. 死鎖的必要條件,怎么處理死鎖。
3. Window內存管理方式:段存儲,頁存儲,段頁存儲。
4. 進程的幾種狀態(tài)。
5. IPC幾種通信方式。
6. 什么是虛擬內存。
7. 虛擬地址、邏輯地址、線性地址、物理地址的區(qū)別。
推薦書籍:《深入理解現(xiàn)代操作系統(tǒng)》
TCP/IP
1. OSI與TCP/IP各層的結構與功能,都有哪些協(xié)議。
2. TCP與UDP的區(qū)別。
3. TCP報文結構。
4. TCP的三次握手與四次揮手過程,各個狀態(tài)名稱與含義,TIMEWAIT的作用。
5. TCP擁塞控制。
6. TCP滑動窗口與回退N針協(xié)議。
7. Http的報文結構。
8. Http的狀態(tài)碼含義。
9. Http request的幾種類型。
10. Http1.1和Http1.0的區(qū)別
11. Http怎么處理長連接。
12. Cookie與Session的作用于原理。
13. 電腦上訪問一個網(wǎng)頁,整個過程是怎么樣的:DNS、HTTP、TCP、OSPF、IP、ARP。
14. Ping的整個過程。ICMP報文是什么。
15. C/S模式下使用socket通信,幾個關鍵函數(shù)。
16. IP地址分類。
17. 路由器與交換機區(qū)別。
18. http請求流程
網(wǎng)絡其實大體分為兩塊,一個TCP協(xié)議,一個HTTP協(xié)議,只要把這兩塊以及相關協(xié)議搞清楚,一般問題不大。
推薦書籍:《TCP/IP協(xié)議族》
數(shù)據(jù)結構與算法
1. 鏈表與數(shù)組。
2. 隊列和棧,出棧與入棧。
3. 鏈表的刪除、插入、反向。
4. 字符串操作。
5. Hash表的hash函數(shù),沖突解決方法有哪些。
6. 各種排序:冒泡、選擇、插入、希爾、歸并、快排、堆排、桶排、基數(shù)的原理、平均時間復雜度、最壞時間復雜度、空間復雜度、是否穩(wěn)定。
7. 快排的partition函數(shù)與歸并的Merge函數(shù)。
8. 對冒泡與快排的改進。
9. 二分查找,與變種二分查找。
10. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。
11. 二叉樹的前中后續(xù)遍歷:遞歸與非遞歸寫法,層序遍歷算法。
12. 圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。
13. KMP算法。
14. 排列組合問題。
15. 動態(tài)規(guī)劃、貪心算法、分治算法。(一般不會問到)
16. 大數(shù)據(jù)處理:類似10億條數(shù)據(jù)找出最大的1000個數(shù).........等等
17. 加密解密了解么?幾種算法,講一下你了解的
18.寫一個兩個有序鏈表合并成一個有序鏈表
19.堆排序的原理
20.介紹一下紅黑樹
21.對算法有什么了解?答主先回答了動態(tài)規(guī)劃,解釋了一下dp的思想
22.快排的思想講一下
23.講一下穩(wěn)定的排序算法和不穩(wěn)定的排序算法
24.手撕算法:一棵二叉排序樹,給定一個數(shù),找到與給定數(shù)差值最小的數(shù)
25.場景題:設計一個系統(tǒng),解決搶購時所需要的大量的短鏈接的功能,如何保證高并發(fā),如何設計短鏈接
26.手撕算法:兩個排序的數(shù)組A和B分別含有m和n個數(shù),找到兩個排序數(shù)組的中位數(shù),答主用的二分,時間復雜度為O(log (m+n))。結果面試官不滿意,
讓用歸并的思想做,時間復雜度其實更高了
27.手撕算法:假設你是一個專業(yè)的竊賊,準備沿著一條街打劫房屋。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是:相鄰的房子裝著相互
聯(lián)系的防盜系統(tǒng),且 當相鄰的兩個房子同一天被打劫時,該系統(tǒng)會自動報警。給定一個非負整數(shù)列表,表示每個房子中存放的錢, 算一算,如果今晚去
打劫,你最多可以得到多少錢 在不觸動報警裝置的情況下。
28.算法題:給一個整數(shù)數(shù)組,找到兩個數(shù)使得他們的和等于一個給定的數(shù) target。
29.手撕算法:最小公倍數(shù)和最大公約數(shù)
30.手撕算法:反轉單鏈表
31.手撕算法:實現(xiàn)類似微博子結構的數(shù)據(jù)結構,輸入一系列父子關系,輸出一個類似微博評論的父子結構圖
32.手撕一個單例模式
33.智力題:時針分針什么時候重合
算法的話其實是個重點,因為最后都是要你寫代碼,所以算法還是需要花不少時間準備,這里有太多算法題,寫不全,我的建議是沒事多在OJ上刷刷題(??途W(wǎng)、leetcode等),劍指offer上的算法要能理解并自己寫出來,編程之美也推薦看一看。
推薦書籍:《大話數(shù)據(jù)結構》《劍指offer》《編程之美》《編程珠璣》
javaEE:
1.servlet工作流程,如何解決配置文件過于繁瑣的問題
2.JSP和Servlet有什么區(qū)別?為什么要搞出兩個來。
3.forward 和 redirect區(qū)別
4.servlet的幾個方法 doget dopost區(qū)別
5.在多個服務器之間session是怎么共享的。
6.servlet工作流程,如何解決配置文件過于繁瑣的問題
7.session的機制;session和cookie區(qū)別
8.servlet和filter的區(qū)別。filter你在哪些地方用到過。
9.怎么解決session一致性緩存的問題
框架:
1.Hibernate的延遲加載是怎么實現(xiàn)的
2.Hibernate持久化的狀態(tài)。
3.Hibernate的生成策略
4.Hibernate的batch有數(shù)量限制么
5.hiberate與mybatis區(qū)別
6.Mybatis高級映射
7.Spring IOC和AOP的理解,它們的原理是什么,如果讓你自己搞個IOC,AOP的話,怎么搞。
8.Struts2和SpringMVC的區(qū)別。
9.spring實現(xiàn)事務的方式有哪些。
10.spring中$與#。
11.spring的事務有幾種方式?談談spring事務的隔離級別和傳播行為。
12.spring中用到了哪些設計模式,線程池;
13.Spring中autowire和resourse關鍵字的區(qū)別
14.講講你對spring的理解,不要把ioc和aop背給我聽
15.介紹spring中的熟悉的注解
16.讓你實現(xiàn)autowire注解的功能你會如何實現(xiàn)
17.Spring的aop怎么實現(xiàn)
18.Spring的aop有哪些實現(xiàn)方式
19.動態(tài)代理的實現(xiàn)方式和區(qū)別
框架里有很多很雜的東西,有時候需要你閱讀源碼,大多數(shù)可能書里面講的不是太清楚,需要你在網(wǎng)上尋找答案,也同時需要看一下官方的文檔
數(shù)據(jù)庫
1.講一下數(shù)據(jù)的acid
2.什么是一致性
3.什么是隔離性
4.Mysql的隔離級別
5.每個隔離級別是如何解決
6.數(shù)據(jù)庫的索引原理
7.非聚簇索引和聚簇索引
8.索引的使用注意事項
9.項目用到什么數(shù)據(jù)庫?隔離級別?每個隔離級別各做了什么
10.數(shù)據(jù)庫的索引?mysql不同引擎索引的區(qū)別
11.數(shù)據(jù)庫的索引原理
12.索引使用的注意事項
13.Mysql的數(shù)據(jù)庫引擎,區(qū)別特點
14.一千萬用戶并發(fā)搶購,怎么設計
15.什么時候用讀鎖
16.什么時候用寫鎖
17.Cas的原理,使用場景
18.數(shù)據(jù)庫的瓶頸
19.緩存還沒更新到主存,服務器掛了怎么辦
20.數(shù)據(jù)庫掛了怎么辦
21.鎖的實現(xiàn)原理
22.怎么解決緩存和主存的一致性問題
23.數(shù)據(jù)庫掛了怎么怎么辦
24.怎么保證一致性
25.分布式事務知道么
26.介紹分布式事務
27.為什么負載均衡
28.怎么實現(xiàn)負載均衡
29.數(shù)據(jù)庫掛了怎么辦?除了熱備份還有什么方法
30.數(shù)據(jù)庫的索引
31.數(shù)據(jù)庫的隔離級別
32.Mysql的容災備份
33.Redis和memcache 的區(qū)別
34.為什么選擇redis
35.mysql數(shù)據(jù)庫的引擎和區(qū)別
36.看你最近博客寫的是redis,介紹redis和mysql的區(qū)別
37.Redis的應用場景
38.設計題,一個圖書館管理系統(tǒng),數(shù)據(jù)庫怎么設計,需求自己定
39.Redis的特點
40.分布式事務了解么
41.Mongodb和關系型數(shù)據(jù)庫之間的區(qū)別,還了解其他的非關系型數(shù)據(jù)庫沒
42.Redis如何解決key沖突
43.有深入了解過redis嗎?
44.Redis的優(yōu)勢和特點
45.Redis和mysql的區(qū)別
46.Redis的持久化有哪些方式,具體原理
47.如果成功的用戶有10萬,redis存不下怎么處理
48.了解redis源碼么
49.了解redis集群么
50.Redis的持久化?有哪些方式,原理是什么?
51.Mysql對聯(lián)合索引有優(yōu)化么?會自動調整順序么?哪個版本開始優(yōu)化?
52.Redis的應用
53.Redis的持久化的方式和原理
新技術
1.如果你夠牛,mq,dubbo,zookeeper都會問到
2.對高負載有了解么
3.對高并發(fā)有了解么?
4.消息隊列了解么
5.分布式了解么
6.自己寫一個tomcat服務器,你會怎么寫
7.分布式服務器會出現(xiàn)哪些問題
8.反爬蟲的機制,有哪些方式
場景
1.場景題:設計一個下單系統(tǒng),下單成功后可以給用戶發(fā)優(yōu)惠券
2.接上面場景題:服務器掛了,優(yōu)惠券還沒發(fā)怎么辦
3.場景題:千萬用戶搶購,如何處理高并發(fā),并且有一個鏈接,指向前一天搶購成功的用戶,如何設計這個系統(tǒng)和數(shù)據(jù)庫
4.如果后臺處理搶購請求的服務器,每次最多承受200的負載,系統(tǒng)該怎么設計
hr
你的職業(yè)規(guī)劃
有哪些offer
為什么還來我們這
自我介紹
三、 項目
關于項目,這部分每個人的所做的項目不同,所以不能具體的講。項目不再與好與不好,在于你會不會包裝,有時候一個很low的項目也能包裝成比較高大上的項目,多用一些專業(yè)名詞,突出關鍵字,能使面試官能比較容易抓住重點。在聊項目的過程中,其實你的整個介紹應該是有一個大體的邏輯,這個時候是在考驗你的表達與敘述能力,所以好好準備很重要。、
面試官喜歡問的問題無非就幾個點:
1. XXX(某個比較重要的點)是怎么實現(xiàn)的?
2. 你在項目中遇到的最大的困難是什么,怎么解決的?
3. 項目某個部分考慮的不夠全面,如果XXXX,你怎么優(yōu)化?
4. XXX(一個新功能)需要實現(xiàn),你有什么思路?
5. XXX項目的亮點有哪些?
6. 如果數(shù)據(jù)量很大,并發(fā)數(shù)很多怎么處理?
7. 項目介紹,最復雜的表
8. 項目介紹
9. 項目架構
10.項目難點
11.項目里一個完整請求的流程
12.項目的優(yōu)化
我已經(jīng)把以上問題的答案錄制成了小視頻 有需要的可以加群:561614305免費領取
根據(jù)面試題我也查找了一些系統(tǒng)的學習課程,下面是我經(jīng)過認真比對查找找到的一個比較實用的學習資料,我們一起來看看


同時想要免費獲取上面資料的朋友和想學習交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、redis、jvm、多線程、netty、kafka知識的的加群:561614305
其實你應該能夠預料到面試官要問的地方,請?zhí)崆皽蕚浜?,如果被問到?jīng)]有準備到的地方,也不要緊張,一定要說出自己的想法,對不對都不是關鍵,主
要是有自己的想法,另外,你應該對你的項目整體框架和你做的部分足夠熟悉。
四、 其他
你應該問的問題
面試里,最后面完之后一般面試官都會問你,你有沒有什么要問他的。其實這個問題是有考究的,問好了其實是有加分的,一般不要問薪資,主要應該是:關于公司的、技術和自身成長的。
以下是我常問的幾個問題,如果需要可以參考:
1. 貴公司一向以XXX著稱,能不能說明一下公司這方面的特點?
2. 貴公司XXX業(yè)務發(fā)展很好,這是公司發(fā)展的重點么?
3. 對技術和業(yè)務怎么看?
4. 貴公司一般的團隊是多大,幾個人負責一個產(chǎn)品或者業(yè)務?
5. 貴公司的開發(fā)中是否會使用到一些最新技術?
6. 對新人有沒有什么培訓,會不會安排導師?
7. 對Full Stack怎么看?
8. 你覺得我有哪些需要提高的地方?
知識面
除了基礎外,你還應該對其他領域的知識有多少有所涉獵。對于你所熟悉的領域,你需要多了解一點新技術與科技前沿,你才能和面試官談笑風生。
軟實力
什么是軟實力,就是你的人際交往、靈活應變能力,在面試過程中,良好的禮節(jié)、流暢的表達、積極的交流其實都是非常重要的。很多公司可能不光看你的技術水平怎么樣,而更看重的是你這個人怎么樣的。所以在面試過程中,請保持誠信、積極、樂觀、幽默,這樣更容易得到公司青睞。很多時候我們都會遇到一個情況,就是面試官的問題我不會,這時候大多數(shù)情況下不要馬上說我不會,要懂得牽引,例如面試官問我C++的多態(tài)原理,我不懂,但我知道java的,哪我可以向面試官解釋說我知道java的,類似的這種可以往相關的地方遷移(但是需要注意的是一定不要不懂裝懂,被拆穿了是很尷尬的),意思就是你要盡可能的展示自己,表現(xiàn)出你的主動性,向面試官推銷自己。還有就是遇到智力題的時候,不要什么都不說,面試官其實不是在看你的答案,而是在看你的邏輯思維,你只要說出你自己的見解,有一定的思考過程就行。
五、面試技巧
1.技術面試時,會的問題以回答,不會的問題怎么回答;
2.HR面時,注意自己的禮貌;
3.聽懂面試官的問題