日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试软件设计人员的方法,附面试题。我的面试注重实效

發(fā)布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试软件设计人员的方法,附面试题。我的面试注重实效 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前段時間招聘。因為我一直在我的部門推行一些有效卻被絕大多數(shù)中國公司忽視的開發(fā)理念,比如平級人事結(jié)構(gòu)、測試驅(qū)動開發(fā)、制度化績效、設(shè)計先行、迭×××發(fā)等等,所以招軟件設(shè)計師非常困難。最終問題還算解決了吧。以下是我的面試總結(jié)。


  一般來說,作為迎接面試的人,我會借著詢問路況、接引進會議室或者索要簡歷,來表達出自己的禮貌,讓對方有一定緊張感。這樣我認(rèn)為有利于對方表現(xiàn)出自然狀態(tài)的思路。

  然后我會根據(jù)簡歷,大概咨詢下對方工作中所做過的設(shè)計工作。 因為我在招軟件設(shè)計師,所以只問設(shè)計,看看他對設(shè)計的理解是什么樣子。通過這種詢問,可以考察對方的簡歷是否作假,如果作假那么無法明確講述其過往工作。 還需要看對方的表達能力,即主動展現(xiàn)自己思路的能力。按照我這一批面試的人看,大多數(shù)人會講述其項目經(jīng)歷的業(yè)務(wù)或者架構(gòu)。只有一個人能夠把軟件設(shè)計和架構(gòu) 設(shè)計、軟件開發(fā)分離出來。

  然后就會開始做面試題了。面試題附在下邊。我會先讓其看第一大題,設(shè)計能力,請ta選擇一道題目作答。看題之后, 對方一般會陷入思考沉默。那么根據(jù)對方眼神不再在題目間掃動,表示對方已經(jīng)針對某一個題目思考。當(dāng)然,如果是溝通能力好的人,這這之前會主動告訴我,ta 準(zhǔn)備作答哪道題目。此時需要打斷沉默,對對方說,希望對方談一談想法,任何一點想法都可以說出來。這個時候如果對方能夠針對題目問一些具體沒表示明白的細(xì) 節(jié),或者自行設(shè)定細(xì)節(jié),都表明此人溝通能力極好,否則應(yīng)該認(rèn)為其溝通能力打折扣。


  當(dāng)對方陸陸續(xù)續(xù)講述自己的設(shè)計時,作為面試的人,需要指出其沒有 思考到的地方,或者贊揚對方想的很合理。一般來說,面試的人在經(jīng)歷了之前的客套和緊張之后,不太容易沉下心來仔細(xì)思考。凡是這時候依然能保持有序高效的思 考能力,說明這個人抗壓能力極強,至少是心理調(diào)節(jié)能力極好。通過這時的回答,就可以看出此人對設(shè)計是否了解,設(shè)計能力怎么樣。


  以 1.1 為例,我隨便說幾個要點。比如說,我們應(yīng)該抽象出牌局狀態(tài)這么一個類,作為傳輸給每一個玩家的內(nèi)容。比如 說,我們可以抽象出一張牌這么一類,作為出牌的玩家上報的內(nèi)容。比如說,此場景應(yīng)該有一個短連接請求處理類,還應(yīng)該有一個房間控制類;房間控制類里邊維護 一個個開通的房間;當(dāng)每一個進入房間的請求來臨時,都應(yīng)該通過房間控制類,將連接轉(zhuǎn)移到這個對應(yīng)的房間編號;那么房間編號可以由客戶端通過參數(shù)傳遞上來。 比如說,每一個房間能夠維護一組長連接,這可以開一個線程來處理;線程由一個單例的線程維護器對象來啟動。比如說,房間在新線程中執(zhí)行的代碼,應(yīng)該是輪詢 每個長連接看誰發(fā)來了“牌”,然后調(diào)用數(shù)據(jù)計算模塊,通過牌和原有牌局(保存在房間對象里),得到新牌局,發(fā)送給每一個連接。當(dāng)然了,如果能對斷鏈識別什 么的做出設(shè)計就更好了。不過控制此題時間不要超過 10 分鐘,所以一般不可能講述出太多內(nèi)容。


  接下來,要根據(jù)剛才設(shè)計方面的能力,中轉(zhuǎn)到 2 或者 3 。如果設(shè)計能力不錯,則應(yīng)該轉(zhuǎn)移到 3 ;如果設(shè)計能力不好,則應(yīng)該轉(zhuǎn)移到 2 。這個設(shè)計能力的好不好,是根據(jù)面試者覺得達標(biāo)不達標(biāo),夠用不夠用來說的。


   先來說說轉(zhuǎn)到 2 編程能力測試的情況。首先,應(yīng)讓其在 2.1 和 2.2 中選一道作答。2.1 的要點,是建立合適的數(shù)據(jù)結(jié)構(gòu)。最佳的是 money 與 id 雙排序的基礎(chǔ)對象構(gòu)建的 TreeSet ,通過 NavigableSet 提供的子樹功能,以 size() 獲取名次。自己前后幾位可通過正反向迭代器取得。當(dāng)然,也可以使用鏈表和散列集合的二重結(jié)構(gòu)。這要慢不少,但是也還算在可接受范圍內(nèi)能實現(xiàn)功能。

  此題非常多的面試者會聯(lián)想到 SQL 的 order by 子句。問題是這些人應(yīng)該設(shè)計不出合適的二維表結(jié)構(gòu),配合 SQL 實現(xiàn)想要的功能。如果面試者能夠?qū)崿F(xiàn),那也至少算能夠做出來一種實現(xiàn),不應(yīng)苛求。

  2.2 我認(rèn)為用二維表傳統(tǒng)關(guān)系型數(shù)據(jù)庫很合適。應(yīng)該有二個表,一個是歷史表,一個是實際操作記錄表。每次受影響玩家登錄,都會激活從實際操作記錄表到歷史記錄表的總結(jié)過程;這是一種最小型的數(shù)據(jù)挖掘。受試者能夠正確寫出總結(jié)過程,能夠正確寫出讀取歷史表的合并過程,則是滿分。


  編程過程測試,可以隨時提供設(shè)計思路指導(dǎo)。旨在督促受試者利用短暫 的面試時間,認(rèn)真思考,發(fā)揮出最強的思維能力,以檢測其通過自己思考解決問題的水平。如果能在不斷的設(shè)計方案提示下,指出語句寫法,則應(yīng)該認(rèn)為設(shè)計能力為 零,但編程基本功很扎實。如果算法也需要提示,則認(rèn)為編寫程序的技能本身不好,但語言知識尚可。


  做完 2.1 和 2.2 其中一題,應(yīng)準(zhǔn)備查資料的條件,也就是連接互聯(lián)網(wǎng)的瀏覽器,讓其做第 3 題。如果其對 Java5.0 多線 程類庫非常了解,則認(rèn)為此人關(guān)注技術(shù)新聞,有很強的技術(shù)敏感性和學(xué)習(xí)能力。否則則應(yīng)通過觀察其查資料選用關(guān)鍵詞的方式、查看內(nèi)容的耐心敏感度,來判斷此人 的學(xué)習(xí)能力和心性。至此,您應(yīng)該對面試的人有了較全面的認(rèn)識。推薦記錄下來,以便比較不同的面試者,誰綜合看來更適用。


   我們再來說說直接從 1 題轉(zhuǎn)移到 3 題的情況。同樣是 3.1 和 3.2 選做一題,來測試受試者的架構(gòu)能力。以和設(shè)計能力測評同樣的節(jié)奏進入互動,然后探尋受試者思路。架構(gòu)的核心,在于指派分布,即指派哪些邏輯運行在什么地 方,以及這些“地方”的布局方式。非常多的受試者無法分清軟件設(shè)計和架構(gòu)設(shè)計的區(qū)別。每當(dāng)這個時候,面試官就應(yīng)該主動給受試者講述架構(gòu)的含義,同時記錄受 試者不具備可用的架構(gòu)工作經(jīng)驗,但應(yīng)根據(jù)接下來的思路表現(xiàn),來判斷其架構(gòu)見識、思路以及資質(zhì)。

  3.1 的要點在于網(wǎng)絡(luò)存檔應(yīng)該與應(yīng)用服務(wù)分離。應(yīng)用服務(wù)做負(fù)載均衡的話,應(yīng)制作單獨的數(shù)據(jù)服務(wù)以支持網(wǎng)絡(luò)存檔。這樣可以保證無論是運營后臺還是玩家都能夠看到全 部的數(shù)據(jù)。如果受試者無法擺脫分區(qū)的概念,則應(yīng)指出,運營后臺頁面,能夠選擇分區(qū),每次選擇,程序能夠連接到不同區(qū)的數(shù)據(jù)服務(wù)。

  3.2 首先這種全球性質(zhì)或者打地理范圍的系統(tǒng),肯定要使用地域分流的域名服務(wù)(DNS)負(fù)載均衡。那么也需要建立專門的用戶數(shù)據(jù)傳輸機制,以保證用戶大范圍移動物理位置之時,能夠在對應(yīng)區(qū)域取得自己的數(shù)據(jù)。為此,也就需要設(shè)置統(tǒng)一的數(shù)據(jù)中心,以登記不同區(qū)域的位置關(guān)系以及服務(wù)器地址。考慮到系統(tǒng)不可能一次性完成,使用能夠自動加載的云基礎(chǔ)結(jié)構(gòu),應(yīng)該會是一個最合理的選擇。


  通過架構(gòu)測評,如果受試者能夠展現(xiàn)出關(guān)于自由軟件的很多知識,則 說明此人在技術(shù)進步上有較高追求。架構(gòu)這邊如果用時很短,也就是受試者表示出了對架構(gòu)的恐懼和放棄,應(yīng)該認(rèn)為受試者面對困難問題的解決決心堅韌程度打折 扣。這時應(yīng)將其引導(dǎo)至 2.3 題,以考察其通過查資料解決問題的水平和心性。面試完畢之后,您應(yīng)該記錄面試情況,以便比較不同的面試者,誰綜合看來更適用。


  最后我想說一句。很多面試官都相信自己對受試者的感覺。其實面試流程的目的,就是通過流程,讓受試者更多地表現(xiàn)自己,以豐富面試官的感覺,以防以偏概全、認(rèn)識不足等情況發(fā)生。



下邊附面試題目


1 設(shè)計能力(選做其一)
---------- ---------- ---------- ----------
1.1 現(xiàn)有多人卡牌游戲,由用戶根據(jù)場上情況出牌。玩家出的牌可被其它玩家看到。每一種游戲牌將會對場上局面造成某些影響。請設(shè)計本游戲服務(wù)器端關(guān)于數(shù)據(jù)傳輸部分;其它部分如需指明,也可以指出。

1.2 現(xiàn)有某軍事對戰(zhàn)型網(wǎng)絡(luò)游戲。架構(gòu)設(shè)計安排在戰(zhàn)斗發(fā)起之前,通過短連接方式進行信息處理。對戰(zhàn)為一對一,對戰(zhàn)開始之后,進行長連接,傳輸雙方對軍隊控制的操作。請設(shè)計本游戲開始建立長連接以及傳輸操作數(shù)據(jù)部分的服務(wù)器程序。


2 編程能力(2.1 和 2.2 選作其一)
---------- ---------- ---------- ----------
2.1 數(shù)據(jù)結(jié)構(gòu)
有一種數(shù)據(jù),結(jié)構(gòu)是
{
??? id: 38,
??? name: "Shane",
??? money: 3010.50
}
數(shù)據(jù)量大概有 100 0000 份。
請你設(shè)計一種方式,能夠支持以下要求。

首先,需要能往已有數(shù)據(jù)集里邊追加數(shù)據(jù)。如果 id 重復(fù),則為修改。
其次,需要得到某指定 id 對應(yīng)的人,全部數(shù)據(jù)按照 money 排序,其所在的名次。此過程不能太慢。
最后,能得到這個 id 對應(yīng)的人,全部數(shù)據(jù)按照 money 排序,其名次的前、后幾名的 name 。此過程不能太慢。

2.2 邏輯
一個社交游戲,玩家可以互相訪問,并在訪問時對對方進行某些操作。被訪問的人在登錄時統(tǒng)一接收上次登錄到這次登錄之間被訪問的報告。
獲取記錄通過 InteractSysRecord.INST.getRecord(int userId) 方法,獲得一個 List<ActRecord> 。
ActRecord 具有如下屬性
int fromUserId
int toUserId
Kind actKind
int actEffect
其中 Kind 是一個枚舉,包括一些類型,比如“贈送禮金”、“傷害”、“偷錢”等。

玩家獲取的記錄,需要按人整理。也就是說,在一個玩家登錄之時,與其上次登錄之間,某一另外玩家多次訪問此玩家生成的多個 ActRecord ,應(yīng)該合成一條。

請編程完成記錄整理。允許設(shè)計合理的 InteractSysRecord 結(jié)構(gòu)。

2.3 多線程(允許查資料,希望觀點能獨特、精辟、有實效)
請簡述 Java5.0 多線程框架的機制和要點


3 架構(gòu)能力(選做其一)
---------- ---------- ---------- ----------
3.1 請為如下功能需求設(shè)計架構(gòu)。文字或圖示都行。
現(xiàn)有某多客戶端弱聯(lián)網(wǎng)網(wǎng)絡(luò)游戲,需要實現(xiàn)網(wǎng)絡(luò)存檔。請簡述網(wǎng)絡(luò)游戲存檔的架構(gòu)方案。注意,后臺操作人員應(yīng)該能任意查看、修改任何人的存檔。要求說明設(shè)計理由。

3.2 現(xiàn)有基于位置的移動網(wǎng)絡(luò)游戲。在游戲界面中,當(dāng)玩家離開自己實際位置之時,就會在游戲中受到一個吸引力,吸引游戲中的角色回到玩家現(xiàn)實中的位置。此吸引力隨著距離增加而增加。所有的玩家在統(tǒng)一的世界地圖上進行對戰(zhàn)。請設(shè)計此網(wǎng)絡(luò)游戲的架構(gòu)方案。并說明設(shè)計理由。


本日志也發(fā)表在我的 CSDN 主頁: http://blog.csdn.net/shanelooli/article/details/8155765
發(fā)表在我的 ITeye 主頁: http://surmounting.iteye.com/blog/1717879
發(fā)表在我的中國開源社區(qū)主頁: http://my.oschina.net/shane1984/blog/87480

轉(zhuǎn)載于:https://blog.51cto.com/shanelooli/1052248

總結(jié)

以上是生活随笔為你收集整理的面试软件设计人员的方法,附面试题。我的面试注重实效的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。