2008-10-29 38 views
11

作爲第二次面試,我讓人們坐下來寫代碼......我試着讓這個問題真的是獨立於技術。面向對象編碼測試在面試時使用的問題

我的編程問題並沒有真正鍛鍊人們的OO能力。我傾向於嘗試在2小時內解決編碼問題。所以,我一直在努力尋找一個足夠小的問題,足以讓人們看到OO的設計技巧。

有什麼建議嗎?

+2

2小時!?!爲什麼不只是讓你的團隊有一些問題,並給他們,這樣你得到2個小時的免費工作! – 2008-10-29 04:50:07

+0

以前試過.....通常最終會以太多的方式談論問題領域而不是解決任何問題。另外,如果你爲許多不同的人設置相同的問題,這種方法會給你提供一個很好的比較基礎 – 2008-10-29 04:53:21

+0

重新標記你的問題以說明'長OO'問題if – 2008-10-29 04:56:12

回答

0

這些都不是特別OO問題,但檢查出其他問題標籤interview-questions

編輯:關於實施一些design patterns什麼?我對該領域的知識並不瞭解,但似乎你會因爲一個人的價格而得到兩個問題。您可以在一個問題中測試OO和設計模式。

-1

我有一個超級簡單的設置。這個想法主要是用它們來過濾的人真的不知道自己的東西而不是過濾的搖滾明星。

這些都是5分鐘的白板型問題,所以它們確實不那麼難。但編寫代碼並通過它進行交談的行爲揭示了很多關於候選人的問題 - 並且非常擅長揭露那些可以通過談話的BS。

  • 編寫呈圓形作爲參數的半徑,並返回圓的面積的方法(你會驚奇地發現人們在這一個多少奮鬥!)
  • 寫一個接受程序一系列數字作爲命令行中的參數。加入他們,並打印總和
  • 寫充當鍵計數器(基本上是一個地圖,保持多少次,每次關鍵是「計數」的軌道)一類
6

理想情況下,你想呈現出現困難,但有一個簡單的,優雅的,顯而易見的解決方案如果你認爲在OO方面

也許是一個問題:

  • 我們需要控制訪問客戶網站
  • 每個客戶可以有一個或更多的人訪問該網站
  • 不同客戶不同的人可能能夠查看網站
  • 同一個人的不同部分可能不止一個客戶
  • 客戶想要的工作基於個人,部門,團隊或項目

設計中使用了一個解決方案面向對象技術


管理權限

一個OO解決方案是擁有一個人,一個客戶,一個賬戶和AccountPermissions,賬戶指定一個人和一個客戶以及一個可選的父賬戶。遞歸Account對象的使用會導致直接ERD解決方案可能產生的繁瑣的人員/團隊/部門/項目結構崩潰

3

我已經使用了FizzBuzz Programming Test。令人震驚的是可以證實這篇文章提出的主張。作爲第二次跟進,我已經要求候選人計算模擬時鐘上兩隻手之間的角度。我們安裝了一臺安裝了VS 2008的筆記本電腦,並安裝了存根。他們所要做的就是填寫實施。

我總是對這兩個問題上候選人的表現感到非常驚訝。我真的是。

15

這是我的一些訓練用的問題,看起來簡單,但棘手的OOP明智:

創建將正確表示下面的結構模型類:

  1. 定義形狀對象,對象是任何二維圖形,並具有以下特徵:名稱,周長和表面積。
  2. 定義一個圓,保留並準確輸出上述形狀特徵的值。
  3. 定義一個三角形。這次,三角形的名稱應該考慮到,如果它是等邊的(所有3邊都是相同的長度),等邊(只有2邊是相同的長度),或者是斜角(沒有2邊是相同的)。

你可以繼續與四邊形(包括正方形,矩形,菱形等)和其他多邊形。

他們解決上述問題的方式會揭示那些瞭解OOP的人,而不是那些不瞭解OOP的人。

0

如何處理某種簡單的GUI。它有繼承,覆蓋,可能的事件。如果你的意思是讓他們實際上作爲測試的一部分來實現,那麼你可以用一個OnPaint()把它們給一個空白的窗體並告訴他們去實現它。

0

你可能會比讓他們用單進程實現設計MapReduce庫更糟糕。界面是否仍然適用於分佈式實現?什麼是異常處理策略?是否應該特別支持在管道中鏈接MapReduce作業?輸入和輸出的接口是什麼?輸入如何分塊?一份工作中的不同投入可以轉到不同的映射器上嗎?什麼樣的違約是合理的?

Python中的一個好的解決方案需要大約一頁代碼。

2

設計社會保障應用程序是我在面試過程中問很多人的東西。

關於這件事的好處是每個人都知道它是如何工作的以及要跟蹤哪些事情。 他們還必須證明自己的設計,這真的幫助我得到他們的頭:) 內(由於有大量的在這裏靈活性)

親切的問候,

1

不管有沒有人做一些編碼在採訪,我想問這個問題: 告訴我最近使用面向對象編程解決的問題。你會驚訝人們無法回答這個簡單的問題。很多時候我都會茫然,或者他們會說「你是什麼意思?NET,這是所有面向對象的。「