☆★☆★快來!!10月25日讀者見面會☆★☆★
清華大學出版社《Java程式員,上班那點事兒》作者:鐘聲 章節:1.2.3:
前面我們瞭解了和不同角色的人物見面的面試技巧,下面再說說程式員們更加頻繁遇到的一個考核方式“筆試”。
“筆試”對於初級程式員應聘者來說是一個關鍵一關,也是刷掉的可能性最大的一關,一次面試中大部分程式員都會由於“筆試”沒有過而無緣進入下一個階段,只有少數程式員得到與主考官見面的機會。
作為即將應聘初級程式員的我們,更應該做好技術的準備工作,這部分工作恐怕要花費比較多的時間去準備。
如何準備?
還是那句話至少應該讀完本書,因為除了“技巧”之外,“技能”更重要。
1.2.3.1 筆試目的
(1) 為防止沒有實際開發經驗和開發技能的人來面試,可以通過“筆試”過濾掉一批人;
(2) 考察掌握知識的紮實程度,及面對問題的思考方式。
1.2.3.2 筆試誤區,這些情況在筆試時應避免
(1) 有一道題不會,就放棄了整個筆試
也許你認為這道題很難,其他競爭者也會覺得很難。
(2) 沒有看清題匆忙作答
這不是入學考試,如果沒有人給你計時間,你不用那麼匆忙,正常速度作答即可。
(3) 不能完整作答的,乾脆就空白
這和我們在學校考試不一樣,如果你不能回答完整,最好也寫上思路,或者寫上想和主考官說的話,有的時候他也會給你機會的呦。
(4) 不清楚的一些概念性的問題,用其他同樣不太清楚的概念“生搬硬套”
有些概念本來就不太清楚,就別拿另一個你不清楚的問題往上“套”啦,這樣做,往往讓主考官哭笑不得,一下暴露原來這些概念都不清楚。
(5) 筆試沒有60分及格線這麼一說
應聘職位的“筆試”和我們在學校的“考試”完全不同,不存在“及格”與“不及格”的問題,也許你某一個道題回答的很精彩,但是總分並不是很理想也會被錄用。
1.2.3.3 筆試技巧我挑了幾道筆試題,曾經給入職程式員出過的幾個測試題,大家看看應該怎麼作答,我們再看看需要注意什麼,題目如下:
1.2.3.3.1 例題1:請說出這個程式的目的是什嗎?返回結果是什嗎? public Station(URL urla){
try
{
String a="",b="";
InputStream ins = urla.openStream();
BufferedReader bReader = new BufferedReader(new InputStreamReader(ins));
String info = bReader.readLine();
int i=1;
info=bReader.readLine();
while(info!=null){
a=info.substring(0,info.indexOf("@"));
b=info.substring(info.indexOf("@")+1,info.length()); if (i==1){
this.X1=Integer.parseInt(a);
this.Y1=Integer.parseInt(b);
} if (i==2){
this.X2=Integer.parseInt(a);
this.Y2=Integer.parseInt(b);
}
if (i==3){
this.X3=Integer.parseInt(a);
this.Y3=Integer.parseInt(b);
}
if (i==4){
this.X4=Integer.parseInt(a);
this.Y4=Integer.parseInt(b);
}
i++;
info=bReader.readLine();
}
}
catch(MalformedURLException e){
System.out.println(e);
}
catch(IOException e){
System.out.println(e);
}
}
該題解釋:
第二問,傳回值是什嗎?
總有人直接回答,說“沒有傳回值”,這說明沒有弄明白建構函式的聲明,如果是普通函數沒有傳回值的話,應該用“void”而不是沒有寫任何東西。
第一問,這個程式的目的是什嗎?
這個程式乍一看確實不太明白,其實,這正是在考察應聘者的想象力和理解能力,這個程式一看就應該知道這是一個建構函式,這個建構函式裡有四對變數分別是“X”和“Y”作為開頭的,讓人直接聯想到座標,另外這個建構函式的名字是Station,說明這個類的名字是Station,因此,可以想見,這個確實是這個Station的四個點的座標,是用http協議到一個Web上去取得一個字串,再去解出這個字串中的每一個數字,賦值給相應的屬性。
某君的比較精彩回答:
該函數是一個建構函式,他的目的是構造一個Station類,根據他的名字和屬性判斷,這個類有可能是描述一個物體的位置資訊,這個資訊可以解出四個變數分別賦值給不同的屬性。疑問,感覺用substring 和indexOf的方法解析出資料比較麻煩,為什麼本程式不用String的split方法呢?那會更省事點。另外這個程式是採用URL類的openStream()方法得到遠端某一個網頁上的資料,那網頁可能是一個JSP,可以直接從資料庫中取得資料,這個方法,省去了一個自建的Server程式,這種用法我是第一次看到,感覺學習到了一個新的應用方法的知識。
1.2.3.3.2 例題2:請寫一段html,完成下列表格的樣子。注意:是單線邊框。
該題解釋:
陷阱一:這道題初看起來很簡單,似乎就是在考一個簡單的“<table>”標記,於是有很多人都直接畫出了一個table,至於單線邊框的問題,他們總是用“border="1"”來描述table。
這樣的話,畫出來的圖一定是這樣的。還是一個雙線表格,並沒有像一樣的單線邊框。
陷阱二:本題表格中的文字是大小寫不同的,有的用的是小寫,有的用的是大寫,一定要按照要求回答問題,這主要考察的是按照要求完成任務的能力。
正確答案:<table width="200" border="0" cellspacing="1" bgcolor="#000000">
<tr>
<td bgcolor="#FFFFFF">A</td>
<td bgcolor="#FFFFFF">b</td>
<td bgcolor="#FFFFFF">C</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">D</td>
<td bgcolor="#FFFFFF">e</td>
<td bgcolor="#FFFFFF">F</td>
</tr>
</table> 如果你做過網頁中的表格,一定知道應該用這個方法獲得單線邊框的表格,因為這是一個典型的單線表格設計方法。當然,有的人用CSS來回答這個問題,也可以算對,只是方法比較複雜了。
1.2.3.3.3 例題3:一個演算法題 再給大家一道據說是難倒很多人的題,這道題曾經有50人接受過提問,但是,只有3個人答對,請大家試試如何回答。
要求:有兩個數組一個N個元素,另一個M個元素,這兩個數組中有些元素是相同的,希望通過編寫一段程式將兩個數組中的相同元素找出來,請用最少的迴圈次數完成需求,請問需要用什麼方法?
一般程式員馬上會想到類似如下的程式:for (int j=1;j<m;j++){
for(int i=1;i<n;i++){
……
}
} 那麼,這個方法的迴圈次數是多少呢?答:M*N個。 但是,要注意這個題的要求是,最少的迴圈次數完成需求,這時候只要想想一共有幾種方法完成這個任務即可,然後從中選擇一個最快的就行了。
正確的答案是,用雜湊表的方法,這個方法的迴圈次數是M+N,一個是將M裝入雜湊表的迴圈,一個是將N逐個放倒M雜湊表中去查詢的次數。
這道題有兩個陷阱,第一個,“演算法題”,一般有些程式員只要聽到“演算法”這個詞,馬上暈了,從而影響合理的思考。第二個陷阱是“最少”,用最少的迴圈次數的方法,而不是普通的,但就是這麼兩個陷阱使很多應聘程式員落馬。
1.2.3.3.4 例題總結 大家看看,上面的筆試題其實從技術方面來說都不難,但是陷阱比較多,而且,需要你能夠有想象力,與出題者形成互動。從這幾個例題可以看出,招聘單位最需要的人是實踐能力強的人,因此,我們要從這個方面多下功夫,這些功夫擷取途徑仍然是加強日常的積累,本書的後面章節中也會涉及更多的類似經驗,讀者可以循序閱讀。
清華大學出版社《Java程式員,上班那點事兒》作者:鐘聲
《
Java程式員,上班那點事兒
》,
前言
,
目錄
卓越網銷售連結
China-pub銷售連結
噹噹網銷售連結
《Java程式員,上班那點事》紀念帖