私はスキルをキーボード(ペンや紙など)から離れて練習したいです.Fizz Buzzのような簡単な練習問題の後、最初のN個の素数を印刷します。簡単なプログラミングの練習(Fizz Buzz、Print Primes)
お気に入りの簡単なプログラミングに関する質問は何ですか?
私はスキルをキーボード(ペンや紙など)から離れて練習したいです.Fizz Buzzのような簡単な練習問題の後、最初のN個の素数を印刷します。簡単なプログラミングの練習(Fizz Buzz、Print Primes)
お気に入りの簡単なプログラミングに関する質問は何ですか?
私はプロジェクトのオイラーのようにもhttp://projecteuler.net/
問題: 挿入+または - 式は条件が数字の順番は変更してはならないということである100に評価されるように数字123456789の間のどこかに署名。
例えば:1 + 2 + 3から4 + 5 + 6 + 78 + 9 = 100
プログラミング問題: は、上記問題の全ての可能な解決策を出力お気に入りの言語でプログラムを書きます。
飯能のタワーズは再帰練習に最適です。
サンプルプログラミングのインタビューに関する質問も検索します。
Steve Yeggeの記事Five Essential Phone Screen Questions(Area Number One:Coding)のシンプル・アイ・プログラミングに関する質問の良い例がいくつかあります。私はこれらがペンと紙でやっているのにはかなり良いと思う。また、同じ記事のOOP Designの質問は、ペンと紙(またはあなたの頭の中でも)で行うことができ、そうするための良い練習であると思います。
競争の激しいプログラミングのためのいくつかのオンラインサイトには、「難易度」でソートされたサンプルの質問/課題がたくさんあります。多くの場合、「アルゴリズム」の質問のより単純なカテゴリが私の思う通りに適合します。
たとえば、TopCoder(アルゴリズムセクション)をチェックしてください。
あなたはそれらの座標(X_I、Y_I)、及び数R> 0によって平面にNポイントのリストを与えられている。それとは別に、2個のサンプルが
。半径Rのディスクで同時にカバーすることができるN個の点のうち最大数を出力します(ボーナスポイントは複雑ですか?)。
あなたは、ANにa1のN番号の配列を与え、あなたは分裂を使用せずに、iのすべての値に対してa1 * a2 * ... * aN/ai
(その出力は再びN個の要素の配列である)を計算したいされています。 (非ナイーブな)メソッドを提供する(複雑さはO(N)乗算でなければならない)。
に取り組んできましたが、私は質問が本当に速い本当にトリッキー得ることを指摘したいと思います。最初の20個の質問の後、彼らはほとんどの人が1時間半で把握できない問題になり始めます。もう1つの問題は、数多くの人が数多くの数学を扱い、標準的な整数や長い変数型には適合しないということです。
ペンやパパーのようなエクササイズが必要な場合は、コーディングよりも多くのデザインをお勧めします。
実際に紙でコード化すると、ほとんど何も学ばなくなります。作業環境はコンピュータで入力すること、コンパイルすること、エラーを見ていること、ここでリファクタリングを使用することなどは問題ではありません。紙に書いたことと比較することはできません。興味深い精神的なエクササイズは実用的ではありませんが、コーディングスキルはそれほど向上しません。
一方、中規模または複雑なアプリケーションのアーキテクチャを手作業で紙で設計することができます。実際、私は通常そうしています。エンジニアリングツール(Enterprise Architectなど)は、すべての手の良い図を置き換えるには十分ではありません。
良いプロジェクトは、どのようにゲームエンジンを設計しますか?クラス、スレッド、ストレージ、物理、すべてを保持するデータ構造などがあります。どのように検索エンジンを始めるでしょうか?どのようにパターン認識システムを設計しますか?
このような問題は、紙のコーディングによってはるかに多くの価値があることがわかりました。