看面試題
正常人第一步肯定都會看面試題,我也不例外,在看的過程中,我發現有些文章寫的不錯,對我幫助不小值得推薦,如下:
Java面試題全集(上) 很多基礎的東西,建議先看。
各大公司Java后端開發面試題總結
面試心得與總結—-BAT、網易、蘑菇街
關於Java面試,你應該准備這些知識點
深入學習
在看面試題的過程,你會遇到一些自己沒接觸過的或者以前沒深入學習過的知識,例如最常問的HashMap內部實現原理,這就促使你得開始去看jdk的源碼或者是學習一些新的東西。看源碼是很重要的一步,起步很難,但是會讓你收益良多,看源碼的過程如果碰到無法理解的地方,可以百度看下別人的理解。我學習源碼的過程中,看過幾個人的關於源碼的文章寫的很不錯,如下:
熟悉項目
找出自己工作以來開發過的最叼的功能,將整個功能的流程和涉及的東西吃透。項目是面試中必問的環節,一般是以一個功能點為基礎展開問,因此你必須對這個功能有很深的認識,不能有模糊的地方。如果有時間,能把涉及到的知識點也搞懂最好。
做面試題
有不少公司是有面試的,如果你沒有准備過,很容易在各種小地方犯錯,建議去一些面試題網站多做些題目,我自己是用的牛客網。
學習記錄
把自己每天的學習時間和學習內容記錄下來,可以讓自己更有動力的學習,學習是一個枯燥的過程,你必須讓自己時刻保持有動力。
投簡歷、約面試環節
在哪些網站投?
拉勾網、BOSS直聘、獵聘網。
是否該海投?
投簡歷分為兩個情況。
1)沒有社招面試經驗:建議采取海投的方式,只要職位要求跟自己比較匹配都可以投,累計面試經驗。這個環節可以把投簡歷的網站增加兩家:智聯和無憂。
2)自認為社招面試經驗已經足夠:投那些職位匹配、公司滿意的職位。公司評價可以去看准網、百度、知乎等查詢。
一天約幾家面試合適?
最理想的情況為2家面試,上午一般在10點左右,下午一般在2點左右。建議把理想的公司放下午,因為下午的時間比較充足,可以讓公司更充分的了解你。我開始面的時候,每次都是上午面的不好,下午面的不錯。
投簡歷經常沒下文?
我當初也沒想到簡歷篩選這關有這么難,可能是我的簡歷確實亮點不多,再者HR很多都不是行內人,因此他們看得最直接的就是你上家的公司和你畢業的學校,如果你不是從牛逼的公司/學校出來,可能會碰到和我一樣的情況,應對的辦法就是多投。
是否該裸辭?
我一開始是邊上班邊投,然后利用調休時間,或者請假去面試。后來,面試機會越來越多,請假太頻繁了,自己都不好意思了,並且自己也已經有足夠的信心,這個時候我選擇了裸辭。裸辭還有一個原因是,在面試過程中你會發現,有的公司要人要的緊,如果你的辭職流程過長可能會導致你錯過這個公司。
注意事項
1)面試前一天把路線和時間算好,最好別遲到。
2)背個書包,帶好簡歷、充電寶、紙巾、雨傘。
面試環節
筆試常見的問題?
面試常見的問題上面給的面試題鏈接基本都有。我只提幾點:1)寫SQL:寫SQL很常考察group by、內連接和外連接。2)手寫代碼:手寫代碼一般考單例、排序、線程、消費者生產者。我建議排序算法除了冒泡排序,最好還能手寫一種其他的排序代碼。試想:如果一般面試者都寫的冒泡排序,而你寫的是快速排序/堆排序,肯定能給面試官留下不錯的印象。
面試流程?
1)讓你自我介紹
2)問Java基礎知識
3)問項目
4)情景問題,例如:你的一個功能上了生產環境后,服務器壓力驟增,該怎么排查。
5)你有什么想問面試官的
一、Java基礎部分
1、使用length屬性獲取數組長度,public、private、protected、friendly區別
2、Collection和Collections區別
3、String s=new String(‘xyz’);創建了幾個object對象
4、short s1;
s1=s1+1;是否有錯?
5、Overriding和Overloading區別
6、Set里面的元素不能重復,用什么方法區分重復與否。
7、給出一個常見的runtime exception。
8、error和exception區別。
9、List和Set是否繼承自Collection接口。
10、abstract class和interface 的區別。
11、是否可以繼承String類。
12、try{}里有一個return語句,緊跟在try后的finally里的code會不會被執行,什么時候執行,return前執行還是return后執行。
13、最有效率的方法算2*8等於幾
14、兩個對象值相同,x.equal(y)==true,但是卻可有不同的hashcode,這句話對不對。
15、值傳遞和引用傳遞
16、switch是否作用在byte、long、string上。
17、ArrayList和Vector區別,HashMap和Hashtable區別(了解這幾個類的底層jdk中的編碼方式)。
18、GC是什么,為什么要有GC,簡單介紹GC。
19、float f=3.4是否正確。
20、介紹Java中的Collection framework。
21、Collection框架中實現比較方法
22、String和Stringbuffer的區別
23、final、finally、finalize區別
24、面向對象的特征
25、String是最基本的數據類型嗎。
26、運行時異常和一般異常的區別
27、說出ArrayList、Vector、Linkedlist的存儲性能和特性
28、heap和stack區別
29、Java中的異常處理機制的簡單原理和應用
30、垃圾回收的原理和特點,並考慮2種回收機制
31、說出一些常用的 集合類和方法
32、描述一下JVM加載Class文件的原理和機制
33、排序的幾種方法,了解。(算法和數據結構在面試的時候還沒有被問到)
34、Java語言如何進行異常處理,throws,throw,try catch finally代表什么意義,try塊中可以拋出異常嗎
35、一個’.java’源文件是否可以包括多個類,有什么限制。
36、Java中有幾種類型流,jdk為每種類型的流提供了一些抽象類以供繼承,請分別說出它們是哪些類。
37、Java中會存在內存泄漏嗎,請簡單描述。
38、靜態變量和實例變量的區別。
39、什么是Java序列化,如何實現java序列化。
40、是否可以從一個static方法內部發生對非static方法調用。
41、寫clone方法,通常都有一行代碼。
42、Java中如何跳出多重嵌套循環
43、說出常用類、包、接口,各舉5個。
44、Java中實現線程的方法,用關鍵字修飾同步方法。
45、同步和異步區別。
46、線程同步的方法。
47、字符串常用方法,字符串轉化為整型數方法,整型數轉化為字符串方法。
二、Java高級
1、簡述面向對象的理解,並舉例說出你的理解。
2、寫出單例模式。
3、寫出一種11位手機號的正則表達式
4、實現字符串多個空格轉換一個空格
5、字符串常用方法,substring(),split()。
6、start()和run()區別。
7、寫出知道的設計模式。
8、Webservice介紹。(這個我自己沒用過,渣渣了)
9、說出Servlet生命周期,Servlet和CGI區別。
10、sleep和wait的區別。
11、什么是發射,如何實現。
12、檢查字符串回文,實現英文中單詞個數和單詞次數統計(部分公司要求較高,需要手動編程,百度查找一些面試常用編程題即可)。
13、tcp/ip協議三次握手。
14、http協議幾種請求方式,區別。
15、Ajax請求是否可以實現同步。
16、隱藏URL方式。
17、描述取到一個網頁內容的實現步驟,不需要具體實現過程(就是爬蟲:取到網頁的URL,然后從URL中國獲取網頁內容),考察邏輯思維能力。
18、簡述form表單提交post方法與get方法在字符編碼、http協議方面的區別。
19、一個http請求從開始到結束都經歷了哪些過程,簡寫流程圖。
三、框架(只介紹自己熟悉)
1、Spring中的事務管理,支持哪幾種方式,以及每種方式具體方法。
2、Spring常用注解。
3、Hibernate的緩存級別。
4、hibernate是什么,工作原理。
5、hibernate如何實現延遲加載。
6、hibernate如何怎樣類之間的關系。
7、struts1是什么,工作流程。
8、struts2工作流程。
9、spring是什么。
10、介紹IOC和AOP。
11、springmvc工作原理。
12、Mybatis工作流程。
13、Mybatis與Hibernate區別。
14、Mybatis框架傳遞參數方式。
15、簡述Spring事務管理,使用什么設計模式實現。
四、數據庫
1、數據庫里面的索引和約束是什么。
2、用SQL語句實現oracle分頁查詢。
3、學生成績表的常用查詢(百度即可查到,常用的查詢語法)
4、數據庫性能優化常用基礎知識,百萬級數據優化(百度搜搜即可)。
5、left join ,right join用法。
6、了解redis,memcache,mongodb等,最好有項目使用經驗。
7、如何防止SQL注入。
8、一個微博評論功能的數據庫設計,部門表和員工表的設計,權限管理系統的數據庫設計(數據庫設計這個是一個重點,面試了幾家公司都問到了,而且是重點)。
9、簡述悲觀鎖和樂觀鎖。
五、linux基礎
1、修改系統時間命令、修改權限命令、
六、前端基礎
1、javascript中怎樣選中一個checkbox,設置它無效的方式。
2、form表單 的input可以設置readonly和disable區別。
3、javascript變量范圍有什么不同,全局變量和局部變量。
4、列舉3種數據類型。
5、javascript常用對象
6、javascript中常用的取值賦值方法,對於單選按鈕,復選框等的取值賦值等方法。(百度即可,javascript常用基礎)
7、jquery取值賦值基本方法。
8、獲取單選按鈕的值,獲取復選框的值,獲取下拉列表的值,后去復選框的值,獲取單選按鈕組的值,文本框、文本域賦值。
9、jquery的append與appendTo區別。
10、CSS盒子模型的4個順序。
一些經驗:
1.先投一些普通公司,等面出了心得再去投理想的公司。
2.不熟悉的技術不要主動提。
3.對於那種實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。
4.小公司喜歡在薪水上壓你,開的時候適當提高。
5.不要去參加招聘會,純粹是浪費時間。
6.把面試當作一次技術的交流,不要太在意是否能被錄取。
7.公司一般面完就決定是否錄取了,讓你回去等消息這種情況一般沒戲,無論你自己覺得面的有多好。
8.盡量少通過電話面試,效果不好。
9.在面試的日子里,要保持每天學習,無論是學習新東西還是復習舊東西。
10.拿到offer了,問問自己這個公司讓自己100%滿意了嗎,如果不是,請繼續努力找更好的。
11.通過面試官可以大概判斷這家公司的情況。
12.拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。
13.理想的公司可以多投幾次,我有好幾次都是第一次投被篩掉,多投幾次就過的經驗。
14.問到自己有深入研究過的知識,抓住機會好好表現,不要輕易放過。