オブジェクト指向の設計スキルをどのように評価しますか?[閉まっている]


11

どのような洞察や質問があなたの人のOOADスキルを決定するのにつながるでしょう。


彼らが彼らのi'sにドットをつけるかどうか彼らに尋ねてください。
仕事

回答:


10

単純な問題の半ば半ばのOOデザインを示し、それが何をするのか、何が良いのか、何が悪いのか、十分な柔軟性があるのか​​、改善できるのか、そしてどのように行うのかを話し合うことができます。

話し合いを進める必要がある場合は、コードのある側面について人がどう思うかを尋ねますが、先導的な質問ではありません。

重要なのは、事前に答えを知っているのではなく、議論が重要であることを覚えておくことです。まともな開発者であれば、以前は考えもしなかったコードについて何か指摘できるはずです。


Q&Aではなくディスカッションであるインタビューの方法が好きです。
ロハンモンガ

5

オープンエンドの設計問題について人と話し合ってください。システムのモデルを構築する方法、尋ねられる質問の種類、新しい情報に応じて設計がどのように変化するかを確認します。

Steve Yeggeが彼のブログ投稿の1つで言及した素晴らしい例は、XMLのオブジェクトモデルを考え出すように依頼することです。


リンクを教えてください:)
Rohan Monga

1
@bronzebeard-ここに行きます-sites.google.com/site/steveyegge2/…。彼は実際にHTMLのOOモデリングについて語っていますが、XMLはその質問のより厳しいバージョンになると思います:)
talonx

4

最も人気のあるすべての設計パターンを熟知していれば、候補者が設計問題の解決策を実際に検索したことを証明できます。

それらを議論し、それらをいつ適用するかを知ることができるということは、彼がそれらを理解している良い兆候です。

彼の過去の経験での使用例を尋ねることも役立つかもしれません。


これは、C#でオーバーロードがどのように機能するかを知るためのテストですが、OOADの設計スキルをテストすることはほとんどありません。
user281377

あなたは完全に正しいです。私はあなたの質問を速すぎて読み変えます。

4
ただし、設計パターンの知識はありますが、概念を聞いたことはありません。私は、彼らに名前があることを知るずっと前から、責任の連鎖、オブザーバー、コントローラーのようなものを使っていました。誰かがパターンの名前を知らないので、それを適切に使用できないと仮定しないように注意してください。
マイケルK

@Michael:はい、それは確かに、最初に特定の問題を解決する方法を尋ねてから、パターンの実際の名前について話す方が良い理由です。私は毎日戦略パターンを使用している多くの人々を知っていますが、それがそのように呼ばれることを知りません。彼らは、4人の元のグループがしたように、考えるだけでそれを「作成」しました。違いは、後者が主題に関する本を書いたことです。

ギャングオブフォーは、他のプロジェクトで使用されているオブジェクト指向コードを見ることでパターンを得たことに注意してください。それらは、デザインを認識し、一貫した方法で説明するという点でのみ、デザインの功績ではありません。
マクニール

3

語彙のクイズを出さないでください。「Define Inheritance」または「name 3 features of OO design」は、個人のスキルについては何も語らない質問であり、最後に教科書を読んでからどれだけ経過したかだけです。私は、これらのスキルを毎日使用している数人の優秀なプログラマーに会いましたが、正式な定義を提供するよう求められた場合、窒息します。


2

ルームまたはその他の仮想エンティティのビジネスオブジェクト、クラス、インターフェイス/メソッドを書き留めるように彼に求めます


2

可能であれば、サンプルコードを要求してください。

それ以外の場合は、例として使用する手順コード(または設計が不十分なOOコード)を見つけて、再設計、一般化、改善する方法を尋ねます。再設計が有意義になるように、プログラムに追加のコンテキストがあることを確認してください。

最終的に、あなたがテストしているもの、つまり設計は主観的です。したがって、評価は、単一のソリューションではなく、いくつかの可能な良いソリューションを可能にするために、無制限である必要があります。次に、インターフェースの変更を強制する要件の可能な変更について考えます。どのように処理しますか?


1

本Head First Design Patternsを読んでください。本のすべての例は、オブジェクト指向の問題から始まり、デザインパターンで終わります。また、特定のOOPの概念が限られた結果を達成する理由と、特定のOOPの概念が他より優れている理由も示しています。

デザインパターンの本ですが、この本はOOPの問題でいっぱいです:-)


私はこれについては知りません。本のすべての例は、特定のデザインパターンに特化したものです。理論的な知識が十分にある場合、それを理解することができ、実用的なアプリケーションを反映していません
Rohan Monga

1

簡単に始めましょう:OOPとは何ですか?

まず、OOPの基本的な前提である抽象化、ポリモーフィズム、継承、カプセル化について尋ねることから始めます。それらを暖めるための思考のための良い食べ物。

彼らに問題を与える

次に、パターンを含む可能性が高い問題を提示します。パターンに名前を付けたり、パターンを使用したりする必要はありませんが、その分野での経験があれば、そのアプローチはおそらくいくらかをもたらします。

おそらく動的テキスト入力検証。入力文字を文字ごとに検証して、それが有効な日付、時刻、またはISO8601形式の日付と時刻であるかどうかを確認できるようにします。キーが押されるたびに入力文字列のコピーを取得し、少なくとも1つの形式でテキストが良好であるかどうかを示すブール値を返すことができます。OOの設計原則を使用して、設計について話し合い、スケッチするよう依頼します。

チャットを終えるまでに

  1. コントローラー(変更イベントを起動し、応答を評価するもの)、
  2. オブザーバー(バリデーターは変更イベントに応答します)、
  3. 戦略(各バリデーターは、入力が有効かどうかを判断するさまざまな方法を表します)、

彼らがOODを理解していれば、かなり良いアイデアが得られます。

もう一度同じ問題を与えますが、今回は別のデザインを要求します

次に、Observerパターンを使用せずにシステムを再設計するように依頼します(言及されている場合)-Chain of Responsibilityアプローチまたはコマンドパターンを選択できます。あなたは本当に気にしません、あなたは彼らが関係する原則を合理的に把握していることを知っています。

パターンベースのアプローチを採用していなくても、問題を関連する機能に分解しようとする方法を聞くだけで、目的の結果が得られます。


1

私は誰にでもよく知られている現実世界のシナリオを選択する傾向があります†。関係する俳優。それらの間にはどのような相互作用がありますか?共通の機能を抽象化できる場所。考慮すべきプロパティ。

はい、座ってUMLを描画するように依頼することができます。はい、OOP実装の詳細に関する質問を検索して、「すぐに実行できる」かどうかを確認できます。

しかし、雇用主がチーム内で本当に必要としているのは、関係する概念を理解し、それらを最終的に適用できる心です。概念が組み込まれていると、仕様をすばやく学習できます。


†深い知識とコードヘルプとのつながりがない:家族が朝にバスルームを使用する。夕食を作る。仕事へのバス路線; 車の組み立て。


0

かなりうまくいくようで、実際には数秒しかかからないもの:オブジェクトモデルの設計を依頼します。それは何でも構いません。それは絶対に些細なことです。実際、テストを不必要に引き出さないために、おそらく簡単なはずです。

彼らが最初に書くものがオブジェクトである場合、彼らはすでにオブジェクト指向の理解において同業者の99%より先にいます。彼らが最初に書くのがクラスの場合、親切に彼らに出かけ、次の候補者を送ってもらい、なぜそれがCOPではなくOOPと呼ばれるのかを考えてください。


あなたの言っていることは理解していますが、これを文字通り理解するのには少し注意が必要かもしれません。私が「自由に考える」設計ソリューションの場合、UMLクラス表記法を使用する傾向がありますが、それが私の図で意味するものではありません。
ケンヘンダーソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.