回覆列表
  • 1 # IT人劉俊明

    由於我經常受邀面試Java程式設計師,所以我來回答一下這個問題。

    Java程式設計師有多個不同的從業方向,比如Web開發、大資料開發、Android開發以及各種後端開發等等,不同的開發方向需要具備不同的知識結構,同時不同的開發崗位(應用級程式設計師和研發級程式設計師)也有不同的要求。

    對於參加面試的Java程式設計師來說,通常情況下需要注意以下幾個方面:

    第一:強調經驗。對於科技公司來說,最為看重的內容之一就是專案經驗,豐富的專案經驗能夠明顯提升面試的成功率。對於Java程式設計師來說,比較有價值的專案經驗包括大使用者併發訪問的經驗、分散式處理的經驗、事務處理經驗、安全處理經驗等等。另外,行業經驗往往也比較重要,如果長時間深入某個領域,比如金融、通訊等行業開發經驗都會提升面試成功率。

    第二:強調學習能力。學習能力也是用人單位非常看重的能力之一,尤其是面試初級程式設計師或者是主力程式設計師崗位。對於經驗並不豐富的程式設計師來說,如果想打動面試官,一定要強調自己的學習能力。可以透過一個專案案例來說明自己的學習能力,比如從零開始學習到完成一個專案經歷了哪些學習和實驗過程等等。

    第三:強調知識結構。隨著網際網路行業的不斷髮展,科技公司對於程式設計師的知識結構有越來越多的要求,知識結構的豐富程度往往能對面試結果有重要的影響。知識結構有兩個重點內容,第一個是要具備紮實的計算機基礎知識,包括作業系統體系結構、計算機網路、演算法設計等內容,另一方面就是目前流行的技術,包括大資料、雲計算、物聯網等方面的內容。

    面試過程中一定要思維清晰,能夠針對面試官的問題給出明確且肯定的回答,這也是一種自信的表現。

  • 2 # 陳三歲98

    正常人第一步肯定都會看面試題,我也不例外,在看的過程中,我發現有些文章寫的不錯,對我幫助不小值得推薦,如下:

    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注入。

    9、簡述悲觀鎖和樂觀鎖。

    五、linux基礎

    1、修改系統時間命令、修改許可權命令、

    六、前端基礎

    1、javascript中怎樣選中一個checkbox,設定它無效的方式。

    2、form表單 的input可以設定readonly和disable區別。

    3、javascript變數範圍有什麼不同,全域性變數和區域性變數。

    4、列舉3種資料型別。

    5、javascript常用物件

    7、jquery取值賦值基本方法。

    9、jquery的append與appendTo區別。

    10、CSS盒子模型的4個順序。

    一些經驗:

    1.先投一些普通公司,等面出了心得再去投理想的公司。

    2.不熟悉的技術不要主動提。

    3.對於那種實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。

    4.小公司喜歡在薪水上壓你,開的時候適當提高。

    5.不要去參加招聘會,純粹是浪費時間。

    6.把面試當作一次技術的交流,不要太在意是否能被錄取。

    7.公司一般面完就決定是否錄取了,讓你回去等訊息這種情況一般沒戲,無論你自己覺得面的有多好。

    8.儘量少透過電話面試,效果不好。

    9.在面試的日子裡,要保持每天學習,無論是學習新東西還是複習舊東西。

    10.拿到offer了,問問自己這個公司讓自己100%滿意了嗎,如果不是,請繼續努力找更好的。

    11.透過面試官可以大概判斷這家公司的情況。

    13.理想的公司可以多投幾次,我有好幾次都是第一次投被篩掉,多投幾次就過的經驗。

    14.問到自己有深入研究過的知識,抓住機會好好表現,不要輕易放過。

  • 中秋節和大豐收的關聯?
  • vivoX21有沒有紅外遙控功能?