Jaa就業面試題大全_第1頁
Jaa就業面試題大全_第2頁
Jaa就業面試題大全_第3頁
Jaa就業面試題大全_第4頁
Jaa就業面試題大全_第5頁
已閱讀5頁,還剩223頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

從享受生活的角度上來說:"程序員并不是一種最好的職業,我認為兩種人可以做程序

員,第一,你不做程序員,你就沒有什么工作可做,或者說是即使有可以做的工作但是你非

常不愿意去做;第二,你非常癡迷和愛好程序,并且在這方面有一些天賦和優勢。程序員的

結局也是有兩種:第一,默默退休,第二以程序員為起點或跳板,注意積累,跟對了好的老

板或團隊,找到和很好的搭檔自己創業,成為IT金領和籥

人們在時間面前是平等的,吾生也有涯,所以,你的經驗更豐富點,那不算什么,經驗

是用時間積累的,你一生只有那么多時間,你能積累多少經驗呢?最重要的是你的學習能力

和學習方法,這個發揮的能量可以有很大差異,要提高學習能力和學習方法首先要學會思考

和總結,要學會掌握事物的根本性的東西,而不是一些表面的細節。學習方法和學習能力對

于IT工作者來說尤為重要,因為IT行業技術更新太快,并且細節太多,同一個技術的細節

變來變去也是常有的事情,所以,IT技術學習者絕不能照著書籍和老師的講解死記硬背和

生搬硬套。搞n"工作很累人,如果學習方法不對、學習能力不強,那就更累了,不過,這

怨不得別人,你的學習方法和學習能力只適合做刷盤子的工作,卻非要跑到程序員圈子里來

混,那誰能有辦法拯救你!

在沒有人指引的情況下,只能是自己一個知識點、一個知識點地漫無目的學習,等到積

累了足夠的知識量后,才有能力開始思考和琢磨原理方面的問題,這個學習過程很漫長。如

果能在好老師的指引下,老師會啟發你先思考原理問題,然后再去學習一個具體的知識點,

讓你能夠舉一反三、觸類旁通,這樣的學習效率就會更高。

多學了幾個知識,并不能說明你就很厲害了,只能說是你比別人投入了更多的時間和精

力而已,別人想做也能做到!不是你學了多少知識就算厲害了,關鍵是要用好學到的知識,

要讓學到的知識發揮出最大的社會價值和經濟價值,這才是最厲害的。

另外,一個人的未來和造化,會深受環境的影響,所謂孟母三遷,近朱者赤、近墨者黑

的大大道理,這些典故大家不一定能深刻領悟和感受,我們就不多說了。就拿現代比較接近

我們生活的事例來說,如果你周圍的朋友全是以擦皮鞋為生、每月辛辛苦苦下來就掙1500

元,那么估計你的職業也是跟著擦皮鞋了,即使你再聰明和再勤奮,頂多每月比你那幫朋友

多掙300元,合下來也就區區1800元/月。前幾年只要抓住了大勢,沒錢全部找銀行貸款

了在北京買房、到山西開煤礦,是頭豬也能每年大把大把地撈錢,如果你周圍的朋友全是投

機倒把的買房和開煤礦者,你的職業自然也是與他們干同樣的事情,即使你再差,每年也能

掙到百來萬不成問題,這就是環境的重要性。聰明的你因為沒有機會置身于炒房團中,比那

些有機會接觸炒房者的豬掙得就要少、就要累。到我們的環境中來,你就很有機會拿到高薪

了,你可以不參加我們的培訓,但只要想辦法與我們的學員們住在一起,成功的機會就大多

了。

自從我們開設3C的課程后,許多學員都找到了月薪在7k或更高的3g開發工作,這

是他們的能力還完全不能與之相稱的一份好工作,這些學員眼看到嘴的肥肉又舍不得放棄,

最后就害苦我們這些老師了,學員紛紛把他們面試和工作中的要解決的問題帶回來讓我們老

師幫助做,有些問題雖然老師能做,但也是要花費很大的時間和精力才能做的,這相當于學

員把自己的工作交給我們老師替他去干了,可不是一句話兩句話就解決的問題。哀哉!我們

老師自己還有很繁重的備課和教學任務,我們的工作請誰來幫助做呢?同學們似乎沒有替我

們想過這個問題。

一個兩個學員偶爾回來這么干還可以,但架不住一批批的學員都來這么干,加上有的學

生還不太會說話,讓人很無奈:

"很簡單的,頂多占用你一個小時就搞定了r-,這么簡單,你為何自己不干?。?/p>

"今天晚上你必須做出來,明天就要交上去了",哎,我再熬夜命都要丟了,老婆就要

來砸電腦了,你叫我怎么辦???

"你沒時間干,那你吩咐其他老師干,也可以啊r,當老師都是我的奴隸,我隨時隨地

叫他們干啥,他們就干啥嗎?老師能把教學做好,就很給我面子了。

現在這些公司怎么都越來越狡猾了,他們把日后工作中要解決的問題、并且是他們自己

都很難解決的問題拿出來讓面試求職者去搞,不管面試求職者的水平怎樣,他們都說誰能搞

定,誰就來上班,我們學生很高興,不管自己水平是否適合做這份工作,反正有我們的老師

可以依靠,拿回來就讓我們做,還說"做好了就有高薪工作,這關于我一輩子的幸福,老師

你自己看這個忙幫不幫吧?",軟件公司這招夠狠!我們這批老師成了這些公司免費使用的

超級勞工。如果奧巴馬說你能把伊拉克擺平,我就讓你當伊拉克總統,這個奧巴馬都擺不平

的事情,但因為做完了就可以當伊拉克總統,我們學生也可能拿回來讓我們幫助做,讓我們

幫他擺平伊拉克,這對我們來說也是很難很難的事情啊。

1.學習方向與面試簡歷的相關問題

1.如何過簡歷關?

我先講解幾個軟件求職相關的真實故事,以幫助大家了解大多數軟件開發企業是如何賽

選簡歷和錄用新員工的。

1.我們學員A是大四在讀的應屆畢業生,他自信技術學得很不錯,實質上確實也達到

用人單位的標準,他不愿意編寫兩年工作經驗的虛假簡歷,希望憑借自己的真實情況去面對

求職,投遞了很多份簡歷,都沒有回應;而他周圍的很多相似背景的學員因為使用了假簡歷,

都很快找到了薪水4.5k/月左右的工作,最后萬不得已,他修改了自己的簡歷,增加了一些

水分,以兩年工作經驗的身份去投遞簡歷,結果就很快找到了滿意的工作。

2.一個穿著和氣質給人的印象都很不錯的女生咨詢時,問:“如果在我們學完了,能找

到工作嗎?",我問了她一些基本情況后,得知她是鄭州航空工業管理學院本科畢業,并且

畢業時間已經有兩年,談話中感覺很有工作經驗,英語也不錯,所以,我斬釘截鐵地告訴她:

"她學完后絕對能找到一份滿意的工作",并說出了一些原因:(1)她本身的談吐氣質就決

定了她找工作沒問題,應聘工作除了要求有那些必需的技能外,關鍵一點還要看這個人的性

格和素養,按她的條件,如果她要找軟件開發方面的工作,只需要把技術補上就可以了,這

一點在我們學習是很容易補上的;(2)要想找到好工作,除了掌握必需的技術外,通常都

需要編寫兩年工作經驗的簡歷,她的畢業是證確實兩年前的,編造兩年軟件開發的工作經驗

更容易,至少不用專門去做假的畢業證了。她聽完后,很贊同我的觀念,說她現在就在一家

軟件公司做人力資源,負責挑選應聘者的簡歷,按領導的吩咐:”凡是工作經驗低于兩年的

簡歷直接刪除到垃圾桶",可見,如果你的簡歷首先到達了類似這個女生的人力資源之手,

即使你的技術再厲害,如果你的工作經驗一欄上寫得低于了兩年,那簡歷就永無露臉之日了,

何談后來的筆試和面試呢?

3.與我們同一樓的一個軟件開發單位,因為項目經理讀過我們老師們的書籍和看過我們

的視頻,所以他們公司想到了從我們學員中招聘開發人員,提出薪水在2800元左后,我們

公司老師對他們誰,2800元薪水,我們學員肯定看不上!他們公司說對于沒有實際經驗的

新手開出2800元的薪水已經很不錯了,我們老師說,我們學員通過簡歷包裝都能找到平均

4500元的工資,樓下公司說假簡歷他們一聊就能聊出來,沒工作經驗的人是騙不住他們的,

我們的老師當時就無語了,…,因為就在前幾天,我們就有一個學員成功潛伏進了他們公司,

并且工資就是4500元,但我們老師不能當他們的面來說這事,就讓他們一直蒙在鼓里還很

自信吧!我用一個大餅的故事來說明這個問題吧,假如市場上賣的大餅都是10元一個,我

也做了一個這樣的大餅,比同類大餅還要好吃一點,我也買10元一個,你肯定愿意買,但

是,一旦我告訴你,我這個大餅的原材料才5毛錢,你心里還會平衡嗎?只會罵我太黑,5

毛錢的成本居然賣出10元的暴利,你不會買我的大餅,因為這超出了你的心理承受,只要

我不告訴你這么個實際情況,你則能欣然接受。也就是說,給你講實話,你心里會難受,給

你說假話,你心里則舒坦,相比市場上的同類產品,我這假話也算不上欺騙,畢竟你花I0

元買人家的大餅,還不如買我這個大餅好吃!

4.前面談到簡歷上的工作經驗很重要,可是大多數要找工作的同學往往是沒有工作經驗

的,所以,只能在簡歷上加點水分。但是,只要你將簡歷上寫成了兩年以上的工作經驗,是

不是一定就能得到筆試和面試的機會呢?寫兩年工作經驗只是有效簡歷的開始,離簡歷被用

人單位相中還有一段差距。一個好的畢業學校、優秀的英語水平、中共黨員的政治面貌、某

省或直轄市的優秀畢業生、奧林匹克競賽獲幾等獎等榮耀都會給用人單位一個很好的印象,

如果你有這些榮耀,一定要在簡歷的基本信息部分寫清楚。但是,很多人是沒有這些榮耀的,

那么只能平平淡淡列出自己的一些基本信息,這也沒有很大的關系,頂多就是自己的簡歷不

能脫穎而出,但是,對于軟件工程師崗位來說,學歷一欄怎么著也不能寫為高中,起碼也要

寫個大?;蛞陨?,畢業院校編個二線城市的不知名的小學院,如果你不愿意去做假證,等到

別人面試你時,再說"閑棄以前上的學校不好,因為對編程太感興趣,就輟學了r

2.為什么說不需要做出完整的項目嗎?

1.眾所周知,在實際的軟件項目中,都是很多人一塊共同做一個項目,每個人只是做項

目中的一部分內容,甚至是只做了項目中的一個模塊,項目越大,越是如此!隨便拿出一個

中等大小的項目,也需要好多個熟練的開發人員開發好多個月才能勉強做得差不多,培訓期

間沒有這么多時間,并且你還要先學會了很多技術后才能開始做項目。

2.一個項目中的很多東西都是重復性的工作量的累積,技術方面都大同小異。做一個

項目就好比蓋一座樓房,只要告訴你整個樓房的整體結構,然后帶著你蓋上一間兩間房子,

其他剩下的幾百間房子,老師想繼續蓋給你看,或者讓你自己蓋剩下的房間,你肯定也不愿

意吧。以后有的是練手的機會,拿著人家發給你的工資,你再去做這些重復性的工作也不遲,

豈不是更好!

3.業務重要?還是編碼實戰更重要?

1.對軟件企業來說,兩者都很重要,有的項目是業務為重心,有的則是以技術作為核心;

以業務為重心的項目大都是企業信息化建設方面的項目,與做鞋差不多,沒有多大技術含量

和壁壘,只有積累了一定的經驗,誰都可以做,利潤很薄,例如大多數管理系統,靠的是人

海戰術和時間糾纏,做這種項目的程序員工作都很辛苦,經常要加班加點。而以技術為核心

的項目則很有技術壁壘,不是誰都能做的,利潤率很高,例如,360殺毒軟件、baidu,qq,

迅雷下載,大型bbs項目和淘寶這樣的電子商務網站。

2.對程序員來說,編碼實戰更重要,業務則不算什么!程序員和軟件公司的工作就是

要把用戶的需求和業務變成代碼,即為人作嫁,一開始,需求和業務都在用戶那里,用戶最

懂業務,你不用了解業務,你的任務就是了解用戶的業務后編寫代碼,在開始做項目前,用

戶會把業務告訴給你的。一個軟件公司從來都不是只做自己熟悉業務的項目,而是來了業務

不熟悉的項目機會,肯定也會沖上去做,軟件公司通常都是在做自己以前沒做過的項目,即

做以前不了解業務的項目,只有項目做完了才完全熟悉了業務,這才叫做項目,否則就成了

賣產品了,所以,軟件工程里說的需求調研和理解業務的過程,也是在從側面說明,程序員

是在接到項目之后才開始了解其業務的,而在此之前,對業務可以是完全不懂的。

4.是培訓內容和信息量大好?還是培訓內容少而精的好?

答:雖然這兩種方式都能讓學有所獲和找到工作,并且,前者對于老師和學生要求都很

高,老師教得很辛苦,學生學得也很辛苦,學生甚至會產生畏懼心理,即使水平已經很高,

可能還是沒有信心;后者對于老師和學生的要求都不高,老師教得輕松,學生學得愉快,學

生很容易產生自信,成了井底之蛙,還自以為不得了。但是,內容和信息量大培訓課程體系,

對大多人來說是更收益的,因為,程序員做的工作總是在變化的,沒有一成不變的工作,為

了適應這種變化,你的知識面必須很廣泛。如果你學的知識內容很少,即使你把這些內容練

的滾瓜爛熟了,除非你出去找的一份工作正好就是你以前練習的那些東西,這時候會讓人感

覺你比誰都厲害,但這種千載難逢的好事怎么就被你碰上了呢?軟件開發畢竟不同于刷盤

子,不是在重復干一件事情。軟件開發的工作總是要面臨不同的需求和問題,如果培訓課程

的內容和信息量很大,即使由于時間關系,你暫時沒有完全消化和熟練這么多內容,但是,

你在工作中不管遇到什么新問題,都有那么一點點印象,知道大概的解決辦法和思路,你就

可以慢慢地通過查閱資料和最終解決這個問題,軟件開發的工作本來就是這么一種現狀,如

果你學的知識量很少,一旦遇到了新問題,你完全就沒有了思路,完全無從下手,這是何等

痛苦,只有灰溜溜走人的份了吧??傊R面越寬廣,了解的信息越多,解決問題的能力

就越強,好比以前治療哮喘沒有很好的辦法,即使是一個哮喘病專家醫生,也需要讓病人吃

上半年的藥,還不能完全治愈,現在,如果有了一種新藥,病人只需要吃上一周,就能徹底

治愈,所謂好的哮喘病專家醫生,他要做的工作就是迅速知道有這么一種新藥問世了,否則,

他就成名符其實的庸醫了。建筑大師可能自己連一個廁所都蓋不出來,但是他能指導別人去

干,建筑大師一定要閱歷廣泛,他經歷過的項目很多,但每個項目的很多細節不是他親力親

為。如果砌磚都是他親力親為,那他一輩子可能都是干砌磚工作了。

別的培訓機構培養的是技術單一的熟練技工,我們培養的是具有很強學習和解決問題能

力的技術高手和未來技術經理。很多工廠說,清華畢業的學生剛進工廠時的動手操作不如技

校畢業的學生熟練,但過一段時間后,清華學生則能解決工廠生成過程出現中的各種新問題

和弊端,甚至能提出創新和發明,后勁十足,因為清華培養的就不是一個單一工種的熟練工

人,而是知識全面和具有創新能力的高級工程師。別的機構和我們培養出來的學生差別好比

如此。

5.IT行業中也會出現蟻族和民工嗎?

先看看IT蟻族和IT民工的悲慘命運吧!

/aZ20100316/217473.html

/uZ20100317/16/2dba32e3-90f4-40b5-blfd-0bf370

9297c6.html?97395

搜素程序員的悲哀,還有更多辛酸的故事,但是,我并不同情他們,我只是說他們自

己無能!程序員這個職業能創造出許多年輕的富翁,不靠父母不靠天,還有那個職業比IT

行業更有機會和誘惑呢。不過,程序員毀壞身體是真,可是,不讓你做程序員,你去打游戲,

聊QQ不也照樣壞身體嗎?

SSH(struts,spring.hibernate)是當前做管理信息系統最基本和最流行的通用技術,

這幾個技術都出現7,8年了,應該很普及了,確實沒什么新意?,F在培訓機構教的都是這

些玩意,用來混飯吃,還是管點用的。每個做增刪改查的人基本都會SSH,所以,SSH沒

什么了不起的,SSH這套東西對培訓公司和個人發展來說,都不能成為核心競爭力,都難

以成大氣候。一些公司內部所謂的核心技術,就是那些非SSH的知識,我們教的不只是大

家都會的有點檔次的項目,確實不怎么用,但是大多數類的項目都是增刪

SSHOSSHOA

改查,雖然沒有技術含量,但是用工需求量大,這也就是能誕生出n?蟻族和IT民工的由來。

但是,java不只是有SSH這套技術,如果你不想成為11■蟻族,如果你不想厭煩軟件開

發,那就不能只學SSH,這個沒有太多技術含量的單一熟練工種。

2.筆試答題技巧與若干問題

說明,為了節省大家的時間和提高學習效率,一些過時知識點和被筆試概率極低的題目

不再被收錄和分析。

回答問題的思路:先正面敘述一些基本的核心知識,然后描述一些特殊的東西,最后再

來一些錦上添花的東西。要注意有些不是錦上添花,而是畫蛇添足的東西,不要隨便寫上。

把答題像寫書一樣寫。我要回答一個新技術的問題大概思路和步驟是:我們想干什么,怎么

干,干的過程中遇到了什么問題,現在用什么方式來解決。其實我們講課也是這樣一個思路。

例如,講ajax時,我們希望不改變原來的整個網頁,而只是改變網頁中的局部內容,

例如,用戶名校驗,級聯下拉列表,下拉樹狀菜單。用傳統方式,就是瀏覽器自己直接向服

務器發請求,服務器返回新頁面會蓋掉老頁面,這樣就不流暢了。

對本面試寶典中的題目有信心嗎?本來有信心的,結果聽你講完后,就沒信心了!我非

常理解。因為他覺得我的太深,他想記住我的些東西,可是記不住,所以沒信心了。我又問:

聽履了嗎?他說聽童了。你到現在只要把你的理解盡量清晰地、有條理地表達出來,就很棒

了。

這套面試題主要目的是幫助那些還沒有java軟件開發實際工作經驗,而正在努力尋找

java軟件開發工作的朋友在筆試時更好地贏得筆試和面試。由于這套面試題涉及的范圍很

泛,很廣,很雜,大家不可能一天兩天就看完和學完這套面試寶典,即使你已經學過了有關

的技術,那么至少也需要一個月的時間才能消化和掌握這套面試寶典,所以,大家應該早作

準備,從拿到這套面試寶典之日起,就要堅持在每天閑暇之余學習其中幾道題目,日積月累,

等到出去面試時,一切都水到渠成,面試時就自然會游刃有余了。

答題時,先答是什么,再答有什么作用和要注意什么(這部分最重要,展現自己的心得)

答案的段落分別,層次分明,條理清晰都非常重要,從這些表面的東西也可以看出一個

人的習慣、辦事風格、條理等。

要講你做出答案的思路過程或者說你記住答案的思想都寫下來。把答題想著是辯論賽。

答題就是給別人講道理、擺事實。答題不局限于什么格式和形式,就是要將自己的學識展現

出來!

別因為人家題目本來就模棱兩可,你就心里膽怯和沒底氣了,不敢回答了。你要大膽地

指出對方題目很模糊和你的觀點,不要把面試官想得有多高,其實他和你就是差不多的,你

想想,如果他把你招進去了,你們以后就是同事了,可不是差不多的嗎?

關于就業薪水,如果你是應屆生,那不能要高工資,好比大餅的故事,沒有文憑還想拿

高工資,就去中關村缺什么補什么吧!少數人基礎確實很好,在校期間確實又做過一些項目,

那仍然是可以要到相對高的工資的。

公司招聘程序員更看重的要用到的編碼技術、而不是那些業務不太相關的所謂項目經

歷:

1.公司想招什么樣的人2.公司面試會問什么,.3.簡歷怎么寫4怎樣達到簡歷上的標準

(培訓中心教項目的目的)

對于一些公司接到了一些項目,想招聘一些初中級的程序員過來幫助寫代碼,完成這個

項目,你更看重的是他的專業技術功底,還是以前做過幾個項目的經歷呢?我們先排除掉那

些編碼技術功底好,又正好做過相似項目的情況,實際上,這種魚和熊掌兼得的情況并不常

見。其實公司很清楚,只要招聘進來的人技術真的很明白,那他什么項目都可以做出來,公

司招人不是讓你去重復做你以前的項目,而是做一個新項目,業務方面,你只要進了項目團

隊,自然就能掌握。所以,大多數招聘單位在招聘那些編碼級別的程序員時也沒指望能招聘

到做過類似項目的人,也不會刻意去找做過類似項目的人,用人單位也不是想把你招進,然

后把你以前做過的項目重做一遍,所以,用人單位更看重招進來的人對要用到的編碼技術的

功底到底怎樣,技術扎實不扎實,項目則只要跟著開發團隊走,自然就沒問題。除非是一些

非常專業的行業,要招聘特別高級的開發人員和系統分析師,招聘單位才特別注重他的項目

經驗和行業經驗,要去找到行業高手,公司才關心項目和與你聊項目的細節,這樣的人通常

都不是通過常規招聘渠道去招聘進來的,而是通過各種手段挖過來的,這情況不再我今天要

討論的范圍中。

技術學得明白不明白,人家幾個問題就把你的深淺問出來了只要問一些具體的技術點,

就很容易看出你是真懂還是假懂,很容看出你的技術深度和實力,所以,技術是來不得半點

虛假的,必須扎扎實實。

由于項目的種類繁多,涉及到現實生活中的各行各業,什么五花八門的業務都有,例如,

酒店房間預定管理,公司車輛調度管理,學校課程教室管理,超市進銷存管理,知識內容管

理,等等……成千上萬等等,但是,不管是什么項目,采用的無非都是我們學習的那些目前

流行和常用的技術。技術好、經驗豐富,則項目做出來的效率高些,程序更穩定和更容易維

護些,?技術差點,碰碰磕磕最后也能把項目做出來,無非是做的周期長點、返工的次數多點,

程序代碼寫得差些,用的技術笨拙點。如果一個人不是完完全全做過某個項目,他是不太關

心該項目的業務的,對其中的一些具體細節更是一竅不知,(如果我招你來做圖書管理,你

項目經歷說你做過汽車調度,那我能問你汽車調度具體怎么回事嗎?不會,所以,你很容易

蒙混過去的)而一個程序員的整個職業生涯中能實實在在和完完整整做出來的項目沒幾個,

更別說在多個不同行業的項目了,有的程序員更是一輩子都只是在做某一個行業的項目,結

果他就成了這個行業的專家(專門干一件事的家伙)。所以,技術面試官通常沒正好親身經歷

過你簡歷寫的那些項目,他不可能去問你寫的那些項目的具體細節,而是只能泛泛地問你這

個項目是多少人做的,做了多長時間,開發的過程,你在做項目的過程中有什么心得和收獲,

用的什么技術等面上的問題,所以,簡歷上的項目經歷可以含有很多水分,很容易作假,技

術面試官也無法在項目上甄別你的真偽。

簡歷該怎么寫:精通那些技術,有一些什么項目經歷

教項目是為了鞏固和靈活整合運用技術,增強學習的趣味性,熟悉做項目的流程,或得

一些專業課程中無法獲得的特有項目經驗,增強自己面試的信心。講的項目應該真實可靠才

有價值,否則,表面上是項目,實際上還是知識點的整合,對鞏固技術點和增強學習的趣味

性,但無法獲得實際的項目經驗。(項目主要是增加你經驗的可信度,獲得更多面試機會,

真正能不能找到工作,找到好工作,主要看你鍵盤上的功夫了),好的面試官幾下就能面出

你是否真有工作經驗,他們問技術以外的公司的人和事,并且問開始、過程、結果,看你怎

么編。

建議大家盡量開自己的blog,堅持每天寫技術blog.在簡歷上寫上自己的blog地址,

可以多轉載一些技術文章。

3.筆試題之Java基礎部分

基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的

語法,集合的語法,io的語法,虛擬機方面的語法,其他,有些題來自網上搜集整理,有些題來自我們學

員面試后的反饋,說真的,少數一些網上的面試題,我真懷疑其是否還有存在價值!

1、一個“Java”源文件中是否可以包括多個類(不是內部

類)?有什么限制?

可以有多個類,但只能有一個public的類,并且public的類名必須與文件名相一致.

2、Java有沒有goto?

java中的保留字,現在沒有在java中使用。

3、說說&和&&的區別。

&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為true時,

整個運算結果才為true,否則,只要有一方為false,則結果為false.

&&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,例如,對于if(str!=

null&&!str.equalsC'))表達式,當str為null時,后面的表達式不會執行,所以不會出現

NullPointerException如果將&&改為&,則會拋出NullPointerException異常。lf(x==33&++y>0)y

會增長,lf(x==33&&++y>0)不會增長

&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常

使用OxOf來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31&OxOf的結果為0x01。

備注:這道題先說兩者的共同點,再說出&&和&的特殊之處,并列舉一些經典的例子來表明自己理解

透徹深入、實際經驗豐富。

4、在JAVA中如何跳出當前的多重嵌套循環?

在java中,要想跳出多重循環,可以在外面的循環語句前定義一個標號,然后在里層循環體的代碼中

使用帶有標號的break語句,即可跳出外層循環。例如,

ok:

for(inti=0;i<10;i++)

(

for(intj=O;j<l0;j++)

{

System.out.printlnCi=M+i+"J="+j);

if(j==5)breakok;

)

}

另外,我個人通常并不使用標號這種方式,而是讓外層的循環條件表達式的結果可以受到里層循環體

代碼的控制,例如,要在二維數組中查找到某個數字。

intarr口口={{1,2,3},{4,5,6,7},{9}};

booleanfound=false;

for(inti=O;i<arr.length&&!found;i++)

|

for(intj=O;j<arr[i].length;j++)

(

System.out.println("i="+i+",j="+j);

if(arr[i][j]==5)

{

found=true;

break;

)

)

}

5、switch語句能否作用在byte上,能否作用在long上,

能否作用在String±?

在switch(exprl)中,exprl只能是一個整數表達式或者枚舉常量(更大字體),整數表達式可以

是int基本類型或Integer包裝類型,由于,byte,short,char都可以隱含轉換為int,所以,這些類型以

及這些類型的包裝類型也是可以的.顯然,long和String類型都不符合switch的語法規定,并且不能被

隱式轉換成int類型,所以,它們不能作用于swtich語句中。

6、shortsi=1;si=si+1;有什么錯?shortsi=1;si

+=1;有什么錯?

對于shortsi=1;si=si+1;由于si+1運算時會自動提升表達式的類型,所以結果是int型,

再賦值給short類型si時,編譯器將報告需要強制轉換類型的錯誤。

對于shortsi=1;si+=1;由于+=是java語言規定的運算符Java編譯器會對它進行特殊處理,

因此可以正確編譯。

7、char型變量中能不能存貯一個中文漢字?為什么?

char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,所以,char型

變量中當然可以存儲漢字啦。不過,如果某個特殊的漢字沒有被包含在unicode編碼字符集中,那么,這

個char型變量中就不能存儲這個特殊漢字。補充說明:unicode編碼占用兩個字節,所以,char類型的

變量也是占用兩個字節。

備注:后面一部分回答雖然不是在正面回答題目,但是,為了展現自己的學識和表現自己對問題理解

的透徹深入,可以回答一些相關的知識,做到知無不言,言無不盡。

8、用最有效率的方法算出2乘以8等於幾?

2<<3,

因為將一個數左移n位,就相當于乘以了2的n次方,那么,一個數乘以8只要將其左移3位即可,

而位運算cpu直接支持的,效率最高,所以,2乘以8等於幾的最效率的方法是2<<3。

9、請設計一個一百億的計算器

首先要明白這道題目的考查點是什么,一是大家首先要對計算機原理的底層細節要清楚、要知道加減

法的位運算原理和知道計算機中的算術運算會發生越界的情況,二是要具備一定的面向對象的設計思想。

首先,計算機中用固定數量的幾個字節來存儲的數值,所以計算機中能夠表示的數值是有一定的范圍

的,為了便于講解和理解,我們先以byte類型的整數為例,它用1個字節進行存儲,表示的最大數值范

圍為-128到+1270-1在內存中對應的二進制數據為11111111,如果兩個-1相加,不考慮Java運算

時的類型提升,運算后會產生進位,二進制結果為1,11111110,由于進位后超過了byte類型的存儲空

間,所以進位部分被舍棄,即最終的結果為11111110,也就是-2,這正好利用溢位的方式實現了負數的

運算。-128在內存中對應的二進制數據為10000000,如果兩個-128相加,不考慮Java運算時的類型

提升,運算后會產生進位,二進制結果為1,00000000,由于進位后超過了byte類型的存儲空間,所以

進位部分被舍棄,即最終的結果為00000000,也就是0,這樣的結果顯然不是我們期望的,這說明計算

機中的算術運算是會發生越界情況的,兩個數值的運算結果不能超過計算機中的該類型的數值范圍.由于

Java中涉及表達式運算時的類型自動提升,我們無法用byte類型來做演示這種問題和現象的實驗,大家

可以用下面一個使用整數做實驗的例子程序體驗一下:

inta=Integer.MAX_VALUE;

intb=Integer.MAX_VALUE;

intsum=a+b;

System.out.println("a="+a+",b="+b+,,,sum="+sum);

先不考慮long類型,由于int的正數范圍為2的31次方,表示的最大數值約等于

2*1000*1000*1000,也就是20億的大小,所以,要實現一個一百億的計算器,我們得自己設計一個類

可以用于表示很大的整數,并且提供了與另外一個整數進行加減乘除的功能,大概功能如下:

()這個類內部有兩個成員變量,一個表示符號,另一個用字節數組表示數值的二進制數

()有一個構造方法,把一個包含有多位數值的字符串轉換到內部的符號和字節數組中

()提供加減乘除的功能

publicclassBiginteger

intsign;

byte[]val;

publicBiginteger(Stringval)

sign=;

val=;

}

publicBigintegeradd(Biglntegerother)

|

}

publicBigintegersubtract(Biglntegerother)

(

}

publicBigintegermultiply(Biglntegerother)

{

}

publicBigintegerdivide(Biglntegerother)

(

)

)

備注:要想寫出這個類的完整代碼,是非常復雜的,如果有興趣的話,可以參看jdk中自帶的

java.math.Biginteger類的源碼。面試的人也知道誰都不可能在短時間內寫出這個類的完整代碼的,他要

的是你是否有這方面的概念和意識,他最重要的還是考查你的能力,所以,你不要因為自己無法寫出完整

的最終結果就放棄答這道題,你要做的就是你比別人寫得多,證明你比別人強,你有這方面的思想意識就

可以了,畢竟別人可能連題目的意思都看不懂,什么都沒寫,你要敢于答這道題,即使只答了一部分,那

也與那些什么都不懂的人區別出來,拉開了距離,算是矮子中的高個,機會當然就屬于你了。另外,答案

中的框架代碼也很重要,體現了一些面向對象設計的功底,特別是其中的方法命名很專業,用的英文單詞

很精準,這也是能力、經驗、專業性、英語水平等多個方面的體現,會給人留下很好的印象,在編程能力

和其他方面條件差不多的情況下,英語好除了可以使你獲得更多機會外,薪水可以高出一千元。

10、使用final關鍵字修飾一個變量時,是引用不能變,還

是引用的對象不能變?

使用final關鍵字修飾一個變量時,是指引用變量不能變,引用變量所指向的對象中的內容還是可以改

變的。例如,對于如下語句:

finalStringBuffera=newStringBufferC'immutable");

執行如下語句將報告編譯期錯誤:

a=newStringBufferC);

但是,執行如下語句則可以通過編譯:

a.append("broken!");

有人在定義方法的參數時,可能想采用如下形式來阻止方法內部修改傳進來的參數對象:

publicvoidmethod(finalStringBufferparam)

}

實際上,這是辦不到的,在該方法內部仍然可以增加如下代碼來修改參數對象:

param.append("a");

11、”=="和equals方法究竟有什么區別?

(單獨把一個東西說清楚,然后再說清楚另一個,這樣,它們的區別自然就出來了,混在一起說,則

很難說清楚)

==操作符專門用來匕修交兩個變量的值是否相等,也就是用于b匕較變量所對應的內存中所存儲的數值是

否相同,要匕徽兩個基本類型的數據或兩個引用變量是否相等,只能用==操作符。

如果一個變量指向的數據是對象類型的,那么,這時候涉及了兩塊內存,對象本身占用一塊內存(堆

內存),變量也占用一塊內存,例如Objetobj=newObject。;變量obj是一個內存,newObject。是另

一個內存,此時,變量obj所對應的內存中存儲的數值就是對象占用的那塊內存的首地址。對于指向對象

類型的變量,如果要匕檄兩個變量是否指向同一個對象,即要看這兩個變量所對應的內存中的數值是否相

等,這時候就需要用==操作符進行比較。

equals方法是用于匕檄兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它匕徽

的兩個對象是獨立的。例如,對于下面的代碼:

Stringa=newStringC'foo");

Stringb=newString("foo");

兩條new語句創建了兩個對象,然后用a,b這兩個變量分別指向了其中一個對象,這是兩個不同的對

象,它們的首地址是不同的,即a和b中存儲的數值是不相同的,所以,表達式a==b將返回false,而

這兩個對象中的內容是相同的,所以,表達式a.equals(b)將返回true.

在實際開發中,我們經常要比較傳遞進行來的字符串內容是否等,例如,Stringinput

=..Jnput.equalsC'quiO,許多人稍不注意就使用==進行比較了,這是錯誤的,隨便從網上找幾個項目

實戰的教學視頻看看,里面就有大量這樣的錯誤。記住,字符串的比較基本上都是使用equals方法。

如果一個類沒有自己定義equals方法,那么它將繼承Object類的equals方法,Object類的equals

方法的實現代碼如下:

booleanequals(Objecto){

returnthis==o;

}

這說明,如果一個類沒有自己定義equals方法,它默認的equals方法(從Object類繼承的)就是

使用==操作符,也是在比較兩個變量指向的對象是否是同一對象,這時候使用equals和使用==會得到

同樣的結果,如果比較的是兩個獨立的對象則總返回false。如果你編寫的類希望能夠bH交該類創建的兩個

實例對象的內容是否相同,那么你必須覆蓋equals方法,由你自己寫代碼來決定在什么情況即可認為兩

個對象的內容是相同的。

12、靜態變量和實例變量的區別?

在語法定義上的區別:靜態變量前要加static關鍵字,而實例變量前則不加。

在程序運行時的區別:實例變量屬于某個對象的屬性,必須創建了實例對象,其中的實例變量才會被

分配空間,才能使用這個實例變量。靜態變量不屬于某個實例對象,而是屬于類,所以也稱為類變量,只

要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就會被分配空間,靜態變量就可以被使用了。

總之,實例變量必須創建對象后才可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。

例如,對于下面的程序,無論創建多少個實例對象,永遠都只分配了一個staticVar變量,并且每創

建一個實例對象,這個staticVar就會加1;但是,每創建一個實例對象,就會分配一個instanceVar,即

可能分配多個instanceVar,并且每個instanceVar的值都只自加了1次。

publicclassVariantTest

(

publicstaticintstaticVar=0;

publicintinstanceVar=0;

publicVariantTestO

{

staticVar++;

instanceVar++;

System.out.println("staticVar="+staticVar+”,instanceVar="+instanceVar);

}

)

備注:這個解答除了說清楚兩者的區別外,最后還用一個具體的應用例子來說明兩者的差異,體現了

自己有很好的解說問題和設計案例的能力,思維敏捷,超過一般程序員,有寫作能力!

13、是否可以從一個static方法內部發出對非static方法

的調用?

不可以。因為非static方法是要與對象關聯在一起的,必須創建一個對象后,才可以在該對象上進行

方法調用,而static方法調用時不需要創建對象,可以直接調用。也就是說,當一個static方法被調用時,

可能還沒有創建任何實例對象,如果從一個static方法中發出對非static方法的調用,那個非static方法

是關聯到哪個對象上的呢?這個邏輯無法成立,所以,一個static方法內部發出對非static方法的調用。

14、Integer與int的區別

int是java提供的8種原始數據類型之一Java為每個原始類型提供了封裝類Integer是java為int

提供的封裝類。int的默認值為0,而Integer的默認值為null,即Integer可以區分出未賦值和值為0的

區別,int則無法表達出未賦值的情況,例如,要想表達出沒有參加考試和考試成績為0的區別,則只能

使用Integer.在JSP開發中,Integer的默認為null,所以用el表達式在文本框中顯示時,值為空白字

符串,而int默認的默認值為0,所以用el表達式在文本框中顯示時,結果為0,所以,int不適合作為

web層的表單數據的類型。

在Hibernate中,如果將0ID定義為Integer類型,那么Hibernate就可以根據其值是否為null而

判斷一個對象是否是臨時的,如果將OID定義為了int類型,還需要在hbm映射文件中設置其

unsaved-value屬性為0?

另外,Integer提供了多個與整數相關的操作方法,例如,將一個字符串轉換成整數,Integer中還定

義了表示整數的最大值和最小值的常量。

15、Math.round。1.5)等於多少?Math.round(-11.5)等

於多少?

Math類中提供了三個與取整有關的方法:ceil、floor,round,這些方法的作用與它們的英文名稱的

含義相對應,例如,ceil的英文意義是天花板,該方法就表示向上取整,所以,Math.ee*11.3)的結果為

12,1^由4口(-11.3)的結果是-11;floor的英文意義是地板,該方法就表示向下取整,所以,

Math.floor。1.6)的結果為11,Math.floor(-l1.6)的結果是-12;最難掌握的是round方法,它表示"四

舍五人"算法為Math.floor(x+0.5),即將原來的數字加上0.5后再向下取整所以,Math.round。1.5)

的結果為12,Math.round(-11.5)的結果為-11。

15、下面的代碼有什么不妥之處?

1.if(username.equals("zxx"){}

2.intX=1;

returnx==l?true:false;

lx請說出作用域public,private,protected,以及不寫

時的區別

這四個作用域的可見范圍如下表所示。

說明:如果在修飾的元素上面沒有寫任何訪問修飾符,則表示friendly。

作用域當前類同一package子孫類其他package

publicVVVV

protectedVVVx

friendlyVVxx

privateVxxx

備注:只要記住了有4種訪問權限,4個訪問范圍,然后將全選和范圍在水平和垂直方向上分別按排

從小到大或從大到小的順序排列,就很容易畫出上面的圖了。

2、Overload和Override的區別。Overloaded的方法是

否可以改變返回值的類型?

Overload是重載的意思,Override是覆蓋的意思,也就是重寫。

重載Overload表示同一個類中可以有多個名稱相同的方法,但這些方法的參數列表各不相同(即參

數個數或類型不同入

重寫Override表示子類中的方法可以與父類中的某個方法的名稱和參數完全相同,通過子類創建的

實例對象調用這個方法時,將調用子類中的定義方法,這相當于把父類中定義的那個完全相同的方法給覆

蓋了,這也是面向對象編程的多態性的一種表現。子類覆蓋父類的方法時,只能比父類拋出更少的異常,

或者是拋出父類拋出的異常的子異常,因為子類可以解決父類的一些問題,不能比父類有更多的問題。子

類方法的訪問權限只能比父類的更大,不能更小。如果父類的方法是private類型,那么,子類則不存在

覆蓋的限制,相當于子類中增加了一個全新的方法。

至于Overloaded的方法是否可以改變返回值的類型這個問題,要看你倒底想問什么呢?這個題目很

模糊。如果幾個Overloaded的方法的參數列表不一樣,它們的返回者類型當然也可以不一樣。但我估計

你想問的問題是女口果兩個方法的參數列表完全一樣,是否可以讓它們的返回值不同來實現重載Overload。

這是不行的,我們可以用反證法來說明這個問題,因為我們有時候調用一個方法時也可以不定義返回結果

變量,即不要關心其返回結果,例如,我們調用map.remove(key)方法時,雖然remove方法有返回值,

但是我們通常都不會定義接收返回結果的變量,這時候假設該類中有兩個名稱和參數列表完全相同的方法,

僅僅是返回類型不同,java就無法確定編程者倒底是想調用哪個方法了,因為它無法通過返回結果類型來

判斷.

override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法并且對其重寫,以求

達到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現,在接口中一般只是對方

法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。除了這個典型的用法以

外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:

1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;

2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;

4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進

行覆蓋。

overload對我們來說可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱相同

的方法,通過定義不同的輸入參數來區分這些方法,然后再調用時,VM就會根據不同的參

數樣式,來選擇合適的方法執行。在使用重載要注意以下的幾點:

1、在使用重載時只能通過不同的參數樣式。例如,不同的參數類型,不同的參數個數,不

同的參數順序(當然,同一方法內的幾個參數類型必須不一樣,例如可以是fun(int,float),

但是不能為fun());

2、不能通過訪問權限、返回類型、拋出的異常進行重載;

3、方法的異常類型和數目不會對重載造成影響;

4、對于繼承來說,如果某一方法在父類中是訪問權限是priavte,那么就不能

在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重

載的效果。

3、4月21號班同學貢獻的一些題?

朱wenchao,女:3500,21歲

搞了多個重載方法,參數分別是int,char,和double,然后將doublex=2,

傳遞進去,會選擇哪個方法?

說說對javaee中的session的理解,你是怎么用session的?

陳yong,4000

一個房子里有椅子,椅子有腿和背,房子與椅子是什么關系,椅子與腿和背是什么關系?

如果房子有多個椅子,就是聚合關系,否則是一種關聯關系,當然,聚合是一種特殊的關聯。

椅子與腿和背時組合關系。

說說hasa與isa的區別。

答:is-a表示的是屬于得關系。比如兔子屬于一種動物(繼承關系\

has-a表示組合,包含關系。比如兔子包含有腿,頭等組件;

工廠模式的類圖

4.5月15號班同學貢獻的一些題?

1.線程如何同步和通訊。同學回答說synchronized方法或代碼塊!面試官似乎不太滿意!

只有多個synchronized代碼塊使用的是同一個監視器對象,這些synchronized代碼塊

之間才具有線程互斥的效果,假如a代碼塊用objl作為監視器對象,假如b代碼塊用。切2

作為監視器對象,那么,兩個并發的線程可以同時分別進入這兩個代碼塊中?!@里還可

以分析一下同步的原理。

對于同步方法的分析,所用的同步監視器對象是this

接著對于靜態同步方法的分析,所用的同步監視器對象是該類的Class對象

接著對如何實現代碼塊與方法的同步進行分析。

2.ClassLoader如何力口載class。

jvm里有多個類加載,每個類加載可以負責加載特定位置的類,例如,bootstrap類加

載負責加載jre/lib/rt.jar中的類,我們平時用的jdk中的類都位于rt.jar中。

extclassloader負責加載jar/lib/ext/*.jar中的類,appclassloader負責classpath指定

的目錄或jar中的類。除了bootstrap之外,其他的類加載器本身也都是java類,它們的

父類是

ClassLoadero

3.Servlet的生命周期

4.抽象類的作用

5.ArrayList如何實現插入的數據按自定義的方式有序存放

classMyBeanimplementsComparable(

publicintcompareTo(Objectobj){

if(!objinstanceofMyBean)

thrownewClassCastExceptionO〃具體異常的名稱,我要查jdk文檔。

MyBeanother=(MyBean)obj;

returnage>other.age?l:age==other.age?0:-l;

}

}

classMyTreeSet{

privateArrayListdatas=newArrayListO;

p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論