免責事項
シニアソフトウェアエンジニアとして、私はこれを自我的に見ています。私はそれが正しいと主張するか、私が言うことは事実です。あなたはこれをあなたが望むどんな方法でも解釈する自由意志を持っています。
前文
典型的な候補者は、利用可能なポジションのスキルが不十分です。したがって、通常、最初の数ヶ月間、彼/彼女は自分自身を開発するための作業に置かれ、会社の純損失を生成している可能性があります。この人が必要なスキルを取得するには、どれくらいの時間がかかるかを推測する必要があります。
これは単純な脳のおしゃぶりです、あなたはエントリーレベルの候補者から質問することができます。彼らは、彼らの認知的不協和音がどのようなものかを推定します。基本的なアイデアは、処理上の問題であなたが良い/優れている場合、知識ベースの不十分さを見逃す可能性があるということです。
私はこの質問をするときに何を探しますか?
- 彼は最初の実用的な解決策を見つけた後に問題を "解決"したと考えました。
- 彼は「追加」は異なる意味を持つことができると考えました
- 彼は "数字"が異なるコンテキストを持つことができると考えました。
私は「処理上の問題で良い/優れている」と言いましたが、問題を解決することと同じではありません。人が失敗した場合、あなたは失敗にどのように反応したかを見たいと思っています。
前書き
ソフトウェアソリューションコストの80%は、開発が終了した後のメンテナンスから得られます。典型的なエンタープライズ・コードは、書かれたものよりも10倍多く読み取られます。総コストを削減する最善の方法は、「クリーンコード」を書くことです。
「クリーンコード」を書くことの1つの側面は、物事を正しく命名することです。言葉のあいまいさを示す最も簡単なケースの1つが「追加」です。 addにはいくつかの異なる意味があります(もっとたくさんあります):
(you add 2 values)
1 + 1 = 2
(you add a value to each list value)
{a, b, c} + 1 = {a + 1, b + 1, c + 1}
(you add a value to start of the list)
Prepend[{a, b, c}, 1] = {1, a, b, c}
(you add a value to end of the list)
Append[{a, b, c}, 1] = {a, b, c, 1}
(you add a value to list at specified index position starting from the beginning)
Insert[{a, b, c}, 1, i] ex: {1, a, b, c} if i = 1
(you add a value to list at specified index position starting from the end)
Insert[{a, b, c}, 1, -i] ex: {a, b, c, 1} if i = 1
(you add a set of lists)
Join[{a, b, c}, {x, y}] = {a, b, c, x, y}
(you add a set of lists without duplicates)
Union[{a, b, c}, {c, a, d}] = {a, b, c, d}
c#.netでは、リストには Add というメソッドがあり、複数の要素を追加するには単一の要素を追加し、 AddRange メソッドを追加します。単一のメソッドはあいまいな意味を持ち、きれいではありません。
32ビットアーキテクチャのコンピュータにコードを実装する場合、ビット32ビットシーケンスとその基本的な算術演算とロジックに対するハードウェアサポートがあります。 int32型の整数は32ビットで実装され、最大値2 ^ 31-1と最小値-2 ^ 31の離散数を表します。
ソリューション
c#.netのコード例
スポイラーが含まれています。
オクトー
なぜ彼の答えが投票されたのか分かりません - それは正しいです。
1 baker's dozen = 13
2 baker's dozen = 26 (22 + 4)
コード:
const int BakersDozen = 13;
値:ドメインの知識を表示
マンシュ
コード:
public static int operator +(マンシュ firstNumber, マンシュ secondNumber)
=> (firstNumber + secondNumber).ToString().Count();
値:基本データ型を知る
CodeNewbie
Following code example hides (int)(22/10 + 4/10) to be 22 + 4
コード:
public static int operator +(CodeNewbie firstNumber, CodeNewbie secondNumber)
=> firstNumber/10 + secondNumber/10;
値:データ型/演算子を知り、関数型プログラミング
オレグ
コード:
public static int operator +(オレグ firstNumber, オレグ secondNumber)
=> firstNumber > secondNumber ? firstNumber + secondNumber : 2;
値:デフォルトのフォールバックについて知っています
ジョブ
KoA and 私nace are just sub cases of ジョブ's general solution.
コード:
public static int operator +(ジョブ firstNumber, ジョブ secondNumber)
=> (firstNumber + secondNumber) % 24;
値:基本的な暗号化ドメインの知識を示します。
私
List that contains 22 and you add 4, now you have list containing 2 ele私nts.
コード:
var items = new List { 22 };
items.Add(4);
価値:質問を読む能力
結論
A brain teasers during a ジョブ interviews can have valid uses. From my experience it is usually just a filler to engage the applicant.