內容簡介
本書適合計算機相關專業應屆畢業生閱讀,也適合作為正在應聘IT行業的相關從業人員和計算機愛好者的參考書。
本書特色
揭開眾多知名IT企業各類崗位的面試、筆試核心機密
本書詳盡剖析各類IT職位的特性與求職要點,涉及各大IT公司歷年面試真題(包括筆試題、口試題、電話面試、英語面試,以及邏輯測試和智商測試),在應聘眾多IT相關職位過程中所遇見的關鍵要點為你一一點破
前言
狄更斯在《雙城記》中說:“這是最好的時代,這是最壞的時代;這是光明的季節,這是黑暗的季節;這是希望之春,這是失望之冬;人們面前有著各樣事物,人們面前一無所有。”這些話也同樣適用於變幻莫測的IT行業。
我們正身處最好的時代。中國經濟的蓬勃發展為IT行業提供了充足的資本保證,從引進技術到自主創新技術,必將在制度、資源和資本等要素之外,為中國經濟成長培育新的動力源泉。身處一個國家的起飛年代,IT人士擁有著前人無法企及的幸運。經濟制度改革所蘊含的經濟成長動力還遠遠沒有釋放完畢。信息化用戶總體需求不改上揚趨勢,對於IT行業,機會應該比其他行業更多。具體來說,IT業務升級要求和新系統建設支撐,會推動IT軟硬體和系統集成業務的快速發展,其中,網際網路、套用開發集成,以及IT培訓等細分市場會得到更加明顯的集中推動。
我們正身處最壞的時代。之所以說是最壞的時代,是我們正遭遇“百年一遇”的金融危機,這場危機引發的全球IT市場衰退的可能性正在增大。如果沒能抓住變革的機遇為自己做好規劃,十年、二十年後,重新分配的財富、蝴蝶效應的加劇,會讓未能把握住這個時代機會的人們面臨惶惑。如果說21世紀初IT爆炸締造了許多投資人的財富神話,那么市場的逐漸規範則讓許多遲到的入行者體會到了泡沫消失的苦味。是最好的時代,抑或是最壞的時代,取決於我們如何利用這個時代。行業總有起伏波動,把握腳下的路則是一門需要智慧和耐心的藝術。
本書落筆之時,正值筆者曾經效力過的老東家——北美某著名電信公司申請破產保護。在2000年鼎盛時期,其市值曾達2500億美元,是整個業界當仁不讓的龍頭老大,而今市值不足0.5億,已經徹底隕落。我以前的朋友,包括北美曾經一起開過會的同事,或被裁,或離職。在全球金融危機愈演愈烈的當下,克萊斯勒、北電網路、奇夢達和碩泰克等宣告破產,Sun被收購,並且很多公司都在調整或大量裁員。金融危機已經切切實實走到我們的面前,不論目前有工作的人士(包括剛入職不久的新人和高高在上的管理層)還是正在找工作的應屆往屆大學生都充滿危機。如何找到工作,如何在大環境受到衝擊的情況下脫穎而出?成為求職者必須首先應對的事情。
IT行業各公司根據領域不同分為9大類(通信類、軟體類、硬體類、網際網路類、存儲類、資料庫類、ERP類、IT培訓類和金融類),本書將從每一類中抽取若干代表性企業所提供的職位信息進行介紹,如軟體類的C++研發工程師、算法工程師;通信類的J2ME工程師、網路售前工程師;網際網路類的搜尋引擎工程師、Web前端工程師、網路遊戲測試工程師等。
以往的面試書籍往往過於關注技術細節,而忽視了IT具體領域的特殊性和職位本身的特殊性。對於一個IT求職者來說,面試微軟和面試國內一家小公司截然不同;應聘Web運維工程師與C++算法工程師所考核的題目也大不相同。現代社會分工越來越細,針對不同職位的具體要求和規劃也各不相同,但市面上的面試類書籍卻很少有完整全面介紹IT行業各類職位詳情、招聘需求及職場規劃的。本書中的職位涵蓋研發、測試、售前、售後、運維、套用及IT等方面。本書通過詳細的職位介紹、領域類別介紹、招聘信息分析,並結合大量面試真題(含專業筆試、邏輯測試,智力測試和英語測試)對每個具體職位要關注的考點細節詳細解讀。本書的面試題並非簡單的羅列。除了對題目有詳細的解析和回答外,對相關知識點還有擴展說明,希望能達到由點成線、舉一反三的效果。除此之外,本書關注求職前後的整個過程,並對求職者常見誤區和求職技巧加以講解,旨在全面解讀IT行業職位密碼,並幫助求職者有的放矢地進行求職,是一本關於IT公司求職招聘的百科全書。
本書適合計算機相關專業應屆畢業生閱讀,也可作為正在應聘IT行業的相關從業人員和計算機愛好者的參考書。
目錄
第1部分 求職之前
本部分介紹各個職場象限間的區別與聯繫。有人說:選擇什麼樣的職位,就選擇了什麼樣的薪水。這句話是有一定道理的。
第1章 工作類型與差異 3
1.1 職場象限 3
1.2 職位差異 4
第2章 職業規劃要素 7
2.1 要素1:選擇與堅持 7
2.2 要素2:時間與事件管理 8
2.3 要素3:長遠考慮 9
2.4 要素4:平衡考慮 10
第2部分 流程與職位分析
本部分詳解IT公司求職的整個流程,包括網申、發郵件、技術類筆試、非技術類筆試,以及面試等,並對其中一些常見的技巧、經驗及陷阱加以匯總,最後分析IT公司幾大類常見職位的要求,以便讓求職者更加清楚簡歷的投遞方向。
第3章 面試流程及考點分析 15
3.1 網申策略 15
3.2 為何簡歷沒人看 17
3.3 發郵件技巧 17
3.4 技術類筆試 18
3.4.1 筆試語言考點分析 19
3.4.2 勿言必稱微軟谷歌 20
3.5 非技術性類筆試 21
3.5.1 圖表類筆試 21
3.5.2 數字類筆試 23
3.5.3 文字邏輯類筆試 24
3.6 面試的技巧 25
3.7 面試陷阱分析 26
第4章 IT公司職位分析 31
4.1 開發類職位 31
4.2 測試類職位 32
4.3 硬體類職位 33
4.4 資料庫類職位 35
4.5 售前類職位 36
4.6 售後類職位 39
4.7 套用類職位 40
第3部分 通信類公司
很多人是衝著“通信工程”這塊金字招牌才選擇通信專業的,而在進了大學後,又會有很大一部分同學對未來感到迷茫或擔憂。3G推行前後,很多專家們認為通信行業的“第二春”馬上就要來了,但同時他們也認為這一次春天不可能像上回那樣普降甘露,而只是滋潤那一部分有準備的人。
第5章 明信公司軟體開發工程師面試 45
5.1 職位介紹與規劃 45
5.2 招聘啟事 46
5.3 圖形類題目 47
5.4 通信相關類題目 51
5.5 C/C++編程類題目 55
第6章 美仕科技J2ME工程師面試 65
6.1 職位介紹與規劃 65
6.2 招聘啟事 66
6.3 智力類題目 67
6.4 Java基礎類題目 67
6.5 Java編程類題目 74
第7章 VVNT公司西安研發中心測試工程師面試 93
7.1 職位介紹與規劃 93
7.2 招聘啟事 94
7.3 智力類題目 95
7.4 C/C++編程類題目 96
7.5 測試類題目 104
第8章 深藍公司網路售前工程師面試 113
8.1 職位介紹與規劃 113
8.2 招聘啟事 114
8.3 圖形類題目 115
8.4 網路類題目 116
8.5 售前技術類題目 119
8.6 其他 122
第9章 百合公司網路售後工程師面試 127
9.1 職位介紹與規劃 127
9.2 招聘啟事 128
9.3 群面類題目 129
9.4 智力類題目 131
9.5 網路類題目 132
第4部分 硬體類公司
計算機硬體廠商是指主營業務以計算機硬體為主的生產廠商,如Intel、AMD、威盛(CPU生產商)、英飛凌(記憶體、智慧卡生產商)、磐正、精英(主機板生產商)、DELL、神州,以及同方(品牌電腦生產商)等。
第10章 Tieyi公司硬體開發工程師面試 141
10.1 職位介紹與規劃 141
10.2 招聘啟事 142
10.3 智力類題目 144
10.4 硬體類題目 145
第11章 美西公司嵌入式開發工程師面試 153
11.1 職位介紹與規劃 153
11.2 招聘啟事 154
11.3 數字類題目 155
11.4 數理分析類題目 158
11.5 嵌入式類題目 160
第12章 VST電子軟體開發工程師面試 169
12.1 職位介紹與規劃 169
12.2 招聘啟事 169
12.3 數字類測試 171
12.4 算法類測試 171
12.5 C++編程類題目 177
第5部分 軟體類公司
計算機軟體技術的迅速發展,為企業內部、企業與外部提供了快速、準確、可靠的信息交流渠道。信息化企業運作管理系統已成為企事業單位參與全球市場競爭的必備支持系統。
第13章 Vorks公司北京軟體研究院研究員面試 183
13.1 職位介紹與規劃 183
13.2 招聘啟事 184
13.3 表格類題目 185
13.4 智力類題目 189
13.5 算法類題目 192
13.6 排序類題目 206
13.7 C/C++編程類題目 215
第14章 藍色菲林軟體公司C++軟體工程師面試 217
14.1 職位介紹與規劃 217
14.2 招聘啟事 218
14.3 英語類題目 219
14.4 算法類題目 221
14.5 排序類題目 221
14.6 C/C++基礎類題目 225
14.7 C/C++編程類題目 231
第15章 SFS公司MFC軟體工程師面試 241
15.1 職位介紹與規劃 241
15.2 招聘啟事 242
15.3 智力類題目 243
15.4 排序類題目 244
15.5 C/C++編程類題目 247
15.6 作業系統類題目 259
第16章 卡夫卡公司C++白盒測試工程師面試 269
16.1 職位介紹與規劃 269
16.2 招聘啟事 270
16.3 智力類題目 271
16.4 C++編程類題目 275
16.5 測試類題目 279
16.6 排序類題目 283
第17章 GATE公司信息安全工程師面試 287
17.1 職位介紹與規劃 287
17.2 招聘啟事 288
17.3 算法類題目 289
17.4 排序類題目 293
17.5 C++編程類題目 297
第18章 水源軟體公司Java開發工程師面試 317
18.1 職位介紹與規劃 317
18.2 招聘啟事 318
18.3 Java基礎類題目 319
18.4 Java編程類題目 334
第19章 埃爾科技J2EE研發工程師面試 337
19.1 職位介紹與規劃 337
19.2 招聘啟事 338
19.3 Java基礎類題目 340
19.4 Java編程類題目 344
19.5 Struts類題目 346
19.6 JDBC類題目 347
第20章 亞速軟體Java測試工程師面試 355
20.1 職位介紹與規劃 355
20.2 招聘啟事 356
20.3 文字邏輯類題目 357
20.4 Java基礎類題目 361
20.5 Java編程類題目 369
20.6 軟體測試題目 375
第21章 ZM公司.NET架構師面試 377
21.1 職位介紹與規劃 377
21.2 招聘啟事 378
21.3 設計模式類題目 379
21.4 UML類題目 397
21.5 算法類題目 398
第6部分 網際網路類公司
網際網路正在創造越來越多的盈利方式,無論是電子商務、軟體銷售還是Web 2.0(第二代網際網路服務)熱潮,都將成為網際網路企業共同的選擇。同時影音娛樂、網路廣告、搜尋引擎等的發展也使網際網路細分市場的界線變得越來越模糊。
第22章 TST公司Web前端工程師面試 403
22.1 職位介紹與規劃 403
22.2 招聘啟事 404
22.3 JavaScript基礎類題目 405
22.4 JavaScript編程類題目 409
22.5 CSS類題目 417
22.6 XML類題目 419
第23章 Salo公司搜尋引擎研發工程師面試 421
23.1 職位介紹與規劃 421
23.2 招聘啟事 422
23.3 機率類題目 423
23.4 算法類題目 427
23.5 排序類題目 432
23.6 C++編程類題目 438
第24章 信創公司JSP開發工程師面試 443
24.1 職位介紹與規劃 443
24.2 招聘啟事 444
24.3 數理分析類題目 445
24.4 Java基礎類題目 446
24.5 JSP類題目 455
第25章 KNT公司Hibernate+Spring研發工程師面試 457
25.1 職位介紹與規劃 457
25.2 招聘啟事 457
25.3 Java編程類題目 458
25.4 Hibernate類題目 464
25.5 Spring類題目 473
第26章 NY公司網路遊戲測試工程師面試 475
26.1 職位介紹與規劃 475
26.2 招聘啟事 476
26.3 智力類測試 477
26.4 測試類題目 480
26.5 遊戲類題目 480
第27章 AG軟體PHP開發工程師面試 483
27.1 職位介紹與規劃 483
27.2 招聘啟事 484
27.3 智力類題目 485
27.4 PHP編程類題目 487
第28章 雲水謠軟體ASP開發工程師面試 505
28.1 職位介紹與規劃 505
28.2 招聘啟事 506
28.3 ASP編程類題目 507
28.4 網頁類題目 513
28.5 資料庫類題目 516
第7部分 存儲、資料庫、ERP類公司
存儲類公司、資料庫類公司、ERP類公司是當前IT市場上非常重要的3個組成部分。
第29章 喀納斯軟體ERP實施顧問面試 521
29.1 職位介紹與規劃 521
29.2 招聘啟事 523
29.3 ERP類題目 524
29.4 資料庫類題目 536
第30章 德龐珠存儲售後工程師面試 539
30.1 職位介紹與規劃 539
30.2 招聘啟事 540
30.3 圖形類題目 541
30.4 數理分析類題目 543
30.5 存儲類題目 544
30.6 AIX類題目 547
30.7 HP類題目 549
第31章 曼妥斯資料庫公司測試工程師面試 551
31.1 職位介紹與規劃 551
31.2 招聘啟事 552
31.3 智力類題目 554
31.4 Java編程類題目 555
31.5 資料庫類題目 558
31.6 軟體測試類題目 561
31.7 作業系統類題目 564
第8部分 培訓類公司
國際諮詢機構IDC發布的2008年度中國IT培訓分析報告顯示:2008年我國IT培訓市場銷售額突破50億元,IT培訓市場處於穩步發展階段。
第32章 藍天教育集團Java培訓師面試 567
32.1 職位介紹與規劃 567
32.2 招聘啟事 567
32.3 智力類題目 568
32.4 Java基礎類題目 570
32.5 Java編程類題目 571
32.6 教學類題目 574
第33章 WH網路中心Linux系統培訓師面試 577
33.1 職位介紹與規劃 577
33.2 招聘啟事 578
33.3 Linux基礎類題目 579
33.4 Shell類題目 604
33.5 教學類題目 606
第9部分 金融類公司
IT技術的快速發展,將擁有分散業務的金融公司資源整合併套用於服務,公司內部通過訊息匯流排連線起來,獲得了新的業務靈活性。
第34章 Silenus銀行系統管理員面試 609
34.1 職位介紹與規劃 609
34.2 招聘啟事 610
34.3 UNIX基礎類題目 612
34.4 Shell類題目 620
第35章 德貝保險網路管理員面試 635
35.1 職位介紹與規劃 635
35.2 招聘啟事 637
35.3 網路類題目 638
35.4 Shell類題目 648
第36章 博飛(Bosfriend)金融集團DBA面試 655
36.1 職位介紹與規劃 655
36.2 招聘啟事 657
36.3 數理分析類題目 658
36.4 資料庫類題目 659
附錄A 簽約注意事項 667
附錄B 離職違約注意事項 673
附錄C 常見招聘網站 677
附錄D 索引 679
【樣張】
13.1【職位介紹與規劃】
研究員這樣的招聘只存在於大型公司或集團的研究院或者政府研究所,如中國移動深圳研究院,IBM亞洲研究院,華為預研所等,一般的小型公司是不可能有這樣的機會的。
基礎學科的技術研究,如數學、物理、航空航天,這些企業不會做,一般是政府投資,推動科學發展;那些和產業有關的技術開發,則由企業市場化,研究成果做出來後對企業和產業都會有用。
企業在不同階段對技術研究的看法也不一樣。小企業不可能投資做研究,也沒有必要,它在乎的是今天能不能進入市場,明天是否還存在,不需要看到三到五年之後,也看不到;當企業發展到一定階段後,像聯想、TCL、華為這些公司,就需要考慮三五年後靠什麼進步,十年之後往什麼方向發展,自己就要有一些套用創新和專利技術;企業再進一步發展,像IBM、Intel、微軟,就要想得更長遠,同時自己也有一種責任感和使命感,去推動產業發展技術進步,就會做一些和產業相關的基礎技術研究。
研究人員工作框架限制較少,沒有事先定義好的模式。而是自己去探索一種最適合的模式;第二點,跨國公司預算充足,研究員可以調動充分的資源來實現自己的研究。在自己研究領域內最好的5家學術期刊和會議上發表論文,並且申請專利。
能去研究院所工作的,既有閱歷豐富的人,也有剛剛畢業的博士。有一些屬於內部推薦,因為這樣對求職者的經歷、性格都比較了解。對於應屆生面試,首先會查看智商,看它是否足夠聰明,其次就是對計算機相關算法,數據結構等基礎知識反覆考量,確定其在技術上的專業性。最後看他的性格是不是適合與人合作。雖然也把各項考核列出來進行打分,但這是次要的,因為對於一個具體的人,很難用語言、公式進行量化。所以進入面試階段,隨機應變是很重要的。
13.4【智力類題目】
面試例題3:史密斯先生遺產2000元,要分給他的2個孩子。遺囑規定如下:
1 由哥哥先提出分錢的方式,如果弟弟同意,那就這么分;
2 如果弟弟不同意,1000元會捐給地震災區,由弟弟提出剩下1000元的分錢方式;
3 如果哥哥同意弟弟的方式,就分掉這剩下的1000元;
4 如果哥哥不同意,遺囑規定剩下的1000元中的800元捐給災區,然後分別只給他們每人100元。
問:哥哥會提出什麼樣的分錢方式使其利益最大化?(分配最小單位元)
附帶條件:兩人都極聰明且唯利是圖。
A 1900 100
B 1899 101
C 1000 1000
D 1101 899
解析:這是一道風險評估題,屬於博弈論的範疇:
如果兩次都沒有通過,那么兩人最少獲得100元,所以100元是無風險的。
第二次弟弟分配,只要給哥哥101元,弟弟獲得899元。因為100元是無風險的,若少於或等於100元,哥哥“完全可以”不同意,然後獲得100元。
若給哥哥的大於100元,給得越多,哥哥不同意的可能性越小。所以第二次分配的時候,弟弟可能獲得的最大利益是899元,不可能再多,但是可能會更少。
回頭再考慮哥哥第一次分配的情況,最低風險同樣是100,給弟弟的越多弟弟同意的可能性越大。因為弟弟在第二次分配的時候可能最大獲利899元,所以只要小於這個數目弟弟不同意的可能就會,因為可以冒險獲得更大的利益。
但是只要等於899元,弟弟就沒必要冒險,因為不可能獲得比899元更多,況且哥哥也有不同意的可能。
所以哥哥分配的方案應該是:
哥哥:1101元
弟弟:899元
答案:D
擴展知識:這道面試題來說我們只是就題論題,考慮是兩人都極其聰明理智且唯利是圖。但是如果真的在實際生活中出現了這樣的博弈,考慮的東西就會更多些,因為有人的地方就有變數,人的情感,性格不是機械的數字所能左右的。這些變數都會影響到實際博弈的結果。 比如說現實生活中某些人總希望別人得到的比自己少,而不管自己得到多少。於是哥哥提出1899和101的方案,如果弟弟不同意,那么弟弟提出的方案哥哥也不同意。那最後雙方都得到100。對於兩個人來說都是雙虧的抉擇,當然這是一種極端的情況。
所以我們現實考慮問題的時候,要考慮最通常的情況:即每個人都希望拿得儘量多,如果萬一拿得比對方少,也不要差距太大(古人云不患寡患不均);所以實際生活中的情況可能是這樣的:
1 假如進入第二輪分配,弟弟會冒險地提出899、101的分配方案嗎?顯然不會,這個風險太大了,他完全沒有勝算。因為哥哥可能寧可不要多的一塊錢,也要和弟弟差距不大。他必須拿出一定的錢來換取哥哥至少有50%以上的可能性來同意他的分配方案,只要在保證分配方案得到對方點頭的情況下,利益最大才能得到體現,因此要博弈就不該僅僅考慮自己的利益,這放在商業上也是這樣的;
2 弟弟的方案,最保險的是每人500,但既然要考慮利益最大,那就不可能是公平地進行分配,那弟弟的分配方案應該是讓哥哥得到100到500的中間值,也就是300,自己得到700;
3 那么,如果哥哥考慮到弟弟可能提出的這種方案的話,也就是讓弟弟得到700,自己得到1300。這種分配方案,弟弟同意的可能性過半,所謂博就在於此,不能一味去追求極端的情況。
這道題出得非常好,它告訴了我們好夥伴之間怎樣合理分配利益,這是兩者能長久合作的基礎之一。大家都是做企業的,獲取最大利潤無可爭議;既然我們是兄弟般的合作者,分配的方法應該讓雙方心服口服;不要以為只有自己是智者,也不要壓人,總之要有理有節達到共贏的局面。
15.5【C/C++編程類題目】
面試例題5:以下程式的輸出結果為
#include<iostream>
main()
{
using namespace std;
int num[5]={1,2,3,4,5};
cout<<*((int*)(#+1)-2)<<endl;
}
A 1 B 5 C 4 D 未初始化記憶體,無法確定
解析:結果是4。首先num是表示一個1行5列數組,在記憶體中表示為一個5個元素的序列。 (int*)(# + 1)的意思是,指向num數組的第6個元素(儘管這個元素不存在)。那么顯然,(int*)(#+1)-2所指向的數據就是num數組第4個元素了——即4。
如果存在這樣的數組:int b[2][5]={1,2,3,4,5,6,7,8,9,10},那么顯然int *p=(int *)(&a+1)=b[1] ,實際上,b的數據分布還是按照 1 2 3 4 5 6 7 8 9 10分布的,所謂b[0]和b[1]實際上只是指向其中一個元素的指針。
時刻牢記這樣的觀點:數組名本身就是指針,再加個&,就變成了雙指針,這裡的雙指針就是指二維數組,加1,就是數組整體加一行,ptr指向a的第6個元素 。
答案:C
擴展知識:火燒赤壁的故事。
0X0000(a )里含有至少兩個信息,第一就是地址本身,第二個是隱藏的所指向的數組的大小, 1F000地址直接和0X0000進行通訊並為之提供服務,而不和1,2,3,4,5等直接通訊,服務的內容為0X0000的需求而和數組每個元素本身的大小沒有直接關係(只是間接),1F000里也至少含有兩個信息,即一地址本身,二是所服務的對象的容量。就像一艘船按序排列有1,2,3,4,5個座位,&a+1的意思是我要坐下一艘船的1號座位,而不是這艘船本身的座位。
話說曹操聽了別人的計策,把800艘戰船用鐵鏈首尾相接(兩船間稍有空隙)連成一條龍,準備攻打東吳,每個船上順序排列有5個位子分別坐著是船長、舵手、槍兵、弓兵、刀兵,每個船及座位編號規律為boat1~boat800_1~5,其中boat1~800代表本船在船隊中的序號,1~5代表本船上的位子,周瑜說:“把所有位子的人員按順序逐個消滅”諸葛亮說“公瑾此言差矣,我用火攻,&a+1的方法豈不是比逐個遍歷a[]更快捷?即所謂傾巢之下,安有完卵?” 周瑜同志聽後道“既生瑜,何生亮”。
7.5【測試類題目】
面試例題9:Function club is used to simulate guest in a club. With 0 guests initially and 50 as max occupancy, when guests beyond limitation, they need to wait outside;when some guests leave the waiting list will decrease. The function will print out number of guests in the club and waiting outside. The function declaration as follows:
void club(int x); positive x stands for guests arrived, nagative x stands for guests left from within the club.(club函式用來模擬一個俱樂部的顧客。初始化情況下是0個顧客,俱樂部最大規模只能有50個顧客,當用戶超過了最大規模,他們必須等在外面。當一些顧客離開了等待佇列將減少。這個club函式將列印在俱樂部裡面的顧客人數,和外面的等待人數。函式聲明如下:
void club(int x);
正數x代表客人來了,負數x代表客人離開了俱樂部)
For example, club (40) prints 40,0; and then club (20) prints 50,10; and then club (-5) prints 50,5; and then club (-30) prints 25,0; and then club (-30) prints N/A; since it is impossible input.(舉例而言,club (40)列印40,0;接著club (20)列印50,10;接著club (-5)列印50,5;接著club (-30)列印25,0;接著club (-30)列印N/A;因為這是不可能實現的。)
To make sure this function works as defined, we have following set of data to pass into the function and check the result are correct.(為了確保函式工作正常,我們使用下列數據來測試函式是否正常,你認為該選哪個選項)
a 60
b 20 50 -10
c 40 -30
d 60 -5 -10 -10 10
e 10 -20
f 30 10 10 10 -60
g 10 10 10
h 10 -10 10
A a d e g
B c d f g
C a c d h
D b d g h
E c d e f
解析:本題實際上是考邊界條件的測試情況。看有沒有覆蓋所有的邊界條件。設A為已在俱樂部的成員,B為排隊的人。
A B
Case1 <=0 0
Case2 <50(Up/Down) 0
Case3 50 >0(Up/Down)
對於a-h各種情況:
a 60 適用C3
b 20 50 -10 適用C2\C3
c 40 -30 適用C2
d 60 -5 -10 -10 10 適用C3\C2
e 10 -20 適用C1
f 30 10 10 10 -60 適用C1\C2\C3
g 10 10 10 適用C2
h 10 -10 10 適用C2
看看條件,肯定要包含e,因為只有這個case能測N/A的情況,排除了B C D三項;再看A和E,差別在a和c、g和f的選取上,很顯然,d包含a,f包含g,所以排除A,最終確定E。
答案:E
擴展知識:本題的測試代碼(C++)如下:
#include <iostream>
using namespace std;
#define MAX_IN_CUSTOM (50)
void club(int x)
{
//這裡必須使用靜態變數
static int in_custom = 0; // 初始情況下,內部客人為0個
static int out_custom = 0; // 初始情況下,外部客人為0個
if ( x > 0 ) // 來人的情況
{
if ( x+in_custom > MAX_IN_CUSTOM ) // 需要將人留在外面
{
out_custom += x+in_custom - MAX_IN_CUSTOM; // 多於的人留在外面
in_custom = MAX_IN_CUSTOM;
}
else
{
out_custom = 0; in_custom += x;
}
}
else if(x < 0) // 走人
{
x = -x; // 轉正
// 如果走的人比內部與外部之和的人還要多,那么就出現錯誤了!
// 在下面就表示為in_custom < 0
if ( out_custom > x ) // 外面人數更多(超過要走掉的人數)
{
out_custom -= x;
}
else
{
in_custom -= x-out_custom; out_custom = 0;
}
} // 列印輸出結果
if ( in_custom < 0 )
{
std::cout << "N/A" << std::endl;
}
else
{
std::cout << in_custom << "," << out_custom << endl;
}
}
int main()
{
club(40);
club(20);
club(-5);
club(-30);
club(-30);
return 0;
}
面試例題10:int FindMiddle(int a ,int b,int c)和int CalMiddle(int a ,int b,int c)分別為兩個C函式,他們都號稱能返回三個輸入int 中中間大小的那個int.。你無法看到他們的原始碼,你如何判斷哪個函式的質量好?
答案:從編程習慣上看,筆者認為int FindMiddle(int a ,int b,int c)比較好,因為名字比較明確,就是找中間那一個數,讓人一看就明白。
這道題是考軟體測試的分析能力,比如一些特殊情況要特殊處理,例如:先測試0 0 0 看他們的測試結果,再測0 0 1,再隨便輸入一些不是數字的數,測一下他們的排錯功能,如果他們的結果一樣,那就該測他們的算法效率。比如可以計算10000個數測試用時:
System.out.println(new Date().toString());
for(int i=0; i < 10000; i++){
for(int j=0; j < 10000; j++){
for(int k=0; k < 10000; k++){
FindMiddle(i, j, k);
}
}
}
System.out.println(new Date().toString())
System.out.println(new Date().toString());
for(int i=0; i < 10000; i++){
for(int j=0; j < 10000; j++){
for(int k=0; k < 10000; k++){
CalMiddle(i, j, k);
}
}
}
System.out.println(new Date().toString())
16.3【智力類題目】
面試例題4:During Olympic Games this summer, lots of people visited Beijing. However, many visitors have complains/difficulties towards trip since most hotels are very expensive or already fully booked. On the other hand, some local people are eagerly to rent out their apartments during Olympics, but don’t know how to effectively publish the information, even after Olympic, a lot of visitors and house renters are still facing the same problems(本屆夏季奧運會期間,有許多人來北京觀光旅遊,然而許多遊客不是抱怨住宿費太高就是旅館爆滿很難定到房間。同時一些當地人一方面希望奧運期間自己的房子能夠出租,另一方面又不知道如何更有效地打出租廣告。即使在奧運高峰之後遊客和房主還會面臨同樣的問題。)
You’re assigned to solve this problem, and what are the action(s) you want to take for your first step (假定你被被派去解決這一問題你第一步會採取什麼措施:)
A Contact some companies and ask for some initial funding(和一些公司聯繫請求基本基金援助)
B Work with your colleagues to do user study to figure out more on who may be your customers (和同事精誠合作分析潛在的客戶群)
C Work with your Developer and Tester to build a platform to help these customers (與開發商和監測人員聯繫共同搭建平台為這些顧客提供援助)
D Find some of your friends outside the company, discuss about the project details, and see if they can help you.(找些業外朋友談談具體細節看他們能否想辦法幫忙)
解析:這個題目是一個開放性的題目,以下答案僅供參考。筆者認為題目問的是你第一步是什麼?那就是需求分析,找清楚我們的潛在客戶群是哪些旅遊者和租主。選項ACD都不是第一步要做的。
答案:B
面試例題5:You are the PM of online shopping project. This project is running well and will be released to customer in two months. But the marketing team demands to add two new features in this release and emphasize these two features are critical because our major competitors already have similar features . At the same time, you found out that all developers and tester already had work items planned for next two months. What are the right possible action(s) to take to deal with this issue?(你是一個線上購物工程的項目經理。這個項目運行正常並打算在兩個月內投放市場。但是行銷團隊要求加入兩項新功能並且強調它們是非常重要的,因為我們的主要競爭對手已經擁有了這兩項新功能。可是同時你卻發現所有的研發者和測試者在未來兩個月內都已經安排好了工作內容。下面哪些是處理這個問題是比較可行的方法:)
1 Discuss the issue with the management team and try to request new resources to fulfill these two features(和團隊集體討論並想辦法尋找新的人員去增加這兩個新功能。)
2 Reject the new features request directly so that you can ship current release on time(否決增加這兩個新功能的要求,以使項目按期投入使用。)
3 Decrease the testing criteria to reduce the test duration so that you can add the two new features (降低測試標準以減少測試期限,以便能增加這兩個新功能。)
4 Go through all the left work items with marketing team and other partners to punt low priority items to next release(將下一個項目的工作推後,優先和銷售團隊以及其他拍檔一起完成增加新功能的工作。)
5 Discuss this issue with stakeholders (management team, marketing team etc) and propose to postpone current release (和所有的參與項目的人討論(管理團隊以及行銷團隊等)並且提議延期投放該項目。)
A 1, 3 and 4
B 2, 3 and 4
C 1, 3 and 5
D 1, 4 and 5
解析:2、4 是首先被否決的選項。因為這些是公司高層決定的事情,僅是一個項目經理,不可能越俎代庖做這樣的決定。
你首先考慮的是,應該與管理團隊和行銷團隊討論,在討論之前應該做一些準備:
1 與項目團隊集體討論,有什麼可替代方案,如果要增加功能會需要多少時間和資源,對現有項目和其他項目有什麼影響;
2 儘可能考察競爭對手的功能;
3 聽取行銷團隊的功能需求;
4 如果降低測試標準會節省多少時間,對項目的穩定有多少影響做出基本評估。
綜合以上情況,提出可能的幾種解決方法,可以有傾向性意見,但不能做結論。重點在客觀描述採用每種方案在時間、資源需求、穩定性等方面的情況,同時做好在每種方案下,怎么調度人力和資源的準備。然後在與管理團隊和行銷團隊的討論中,提出準備的情況,如果一次討論不能決定,可能需要重複這些步驟再次討論。最終應該由討論達成共識,或者由管理團隊做出決策。
因此1,3,5是可行方案。至於第3條有人覺得合適有人覺得離譜,這是由於看問題角度不同。從工程角度看,每個程式設計師都像藝術家一樣,希望每個作品都是完美的;可站在更高層面上看呢?這裡沒法分析具體情況,但可以肯定的是,高層董事會有一個自身利益訴求。最看重並非一個項目是否完美(那怕獲全球最佳項目獎也沒用),而是項目帶來的收益(效率、業務延伸、收入等等)。那么在一個項目中可能包含有很多功能,最被看重的功能可能只是項目(工作量)中的一小部分,只要確保這部分,其他部分的瑕疵可能是被容忍的,完全可以留待今後完善和修改。這樣看,未必不能減少一部分測試。
答案:C