* nixシェルの経験があると主張する開発者をどのようにテストしますか?(明確にするために、誰かが* nixで開発できるかどうかはテストしません。コマンドラインの使い方を知っていることだけをテストします)。
Cat、grep、cutなどのいくつかの基本的な処理がパイプラインと組み合わされてログファイルから情報を取得する問題を解決することを考えていました。
他にどんな基本的な知識を求めますか?繰り返しますが、これは* nixシステム用に開発する人へのインタビュー用ではなく、* nixシステム管理者用ではなく、* nixシステムで作業を行う必要がある場合がある通常の開発者用です。
私の個人的な経験から、* nixシステムに取り組んでいる開発者は、次のことを知る必要があります。
...そしてボーナスとして:
このようなスキルセットにより、開発者に関連するほとんどのタスクを簡単に実行できます。
私が仕事を始めてからの多数の同僚との私の経験から、誰もUnixの知識を偽造したくありません:彼らは "コマンドラインの周りに自分の道を知っている"または単に "ノーウェイ!"と言います。
候補者がUnixワークステーションで作業する意思があるかどうかを尋ね、bashをどこまで実行できるかを教えてください。彼は最終的にいくつかのコマンドに名前を付けるでしょう。最も明白なものは、cd
、cat
、more
またはless
、vi
またはemacs
、grep
、awk
、sed
。彼がman
について言及しているかどうか注意深く聞いてください。
開発用であれば、make
とMakefiles、およびいくつかのソース管理コマンドラインインターフェース(svn
、git
、cleartool
、hg
、cvs
...)
なぜこれを行うのですか?
* nixシェル(および他のOSシェル、fwiw)は、非常に深くて幅広い作業環境です。誰かが何年もそこで働いて、シェルの容量の非常に小さい%しか使用しない可能性があります。
その人にa)シェルプログラム、またはb)シェルからシステムを管理することを期待していない場合、なぜそれが問題になるのでしょうか。実行されるすべてのことは、便利な* nixのチートシートが「スキルの不足」を補う以上の基本的なレベルになります。
私の頭の上から、おそらく次の2つのことを尋ねます。
以前に* nixコマンドラインを使用したときに、よく考えられたコマンドによって多くの時間を節約できるケースに遭遇しましたか?もしそうなら、詳しく説明します。
* nixコマンドラインと標準のWindowsデスクトップの主な違いを説明してください。それぞれの長所と短所は何ですか?
明らかに、最初のコマンドは、コマンドラインに関する申請者の知識がどの程度深いかを示します。彼が* nixで何年も働いていた場合、彼はgrepを実行できたことを誇りに思っているとだけは言いません。もちろん、正確なコマンド(常にマンページがある)を覚えているとは思わないでください。
代わりに、2番目の質問は、コマンドラインが本当に得意なこと、および適切なツールではないことを理解しているかどうかを確認します。ハンマーの使い方を学ぶのは簡単ですが、ハンマーが不適切な場合に別のツールに切り替えるのははるかに困難です。したがって、この質問は、* nixボックスの外側での申請者の見解をよく示しています。さらに、彼の知識で採点できるように(そしてすべき)十分に開かれています。 (「ああ..ウィンドウにはそれらのウィンドウがあります」のようなものに答えるよりも悪いことはありません)
あなたが彼らに何をしてほしいかに依存します。
ログファイルから情報を取得するの場合、cat + grepの提案は完全に理にかなっています。それにls、cd、less/moreを追加します。
それらがいくつかのマイナー編集(たとえば、設定ファイルで)も実行することを期待している場合は、viやemacs、cp/mv/rm/mkdirなどのテストを追加することは理にかなっています。 。
Emacsまたはvi/m、tar、sed、e/f/grep、さまざまなコンパイラ、いくつかのシェルスクリプトを知っていることをお勧めします。おそらく、これらのツールを使用して、ファイルを開かずに1つのファイルからコードを取得し、別のプログラムに挿入する必要があるテストを実行します。次に、いくつかの些細なエラーで壊れるプログラムをコンパイルします。次に、テキストエディターを使用してエラーを見つけ、コードを機能させ、バイナリをアーカイブする必要があります。次に、受信者に実行を許可しながら、どこかにメールで送信します。
私はあなたのことは知りませんが、面接担当者から尋ねられてLinuxでの作業方法がわからなかった場合は、少しイライラします。
あなたは彼らが正しく知っていることについては本当に気にする必要はありません今が、彼らができること学ぶ機会があれば。 * nixツールの学習はそれほど難しくはありませんが、少し決心が必要です。知識ではなく能力を実際にテストする必要があります。
それは、彼らにどの程度の経験をしてもらいたいかによります。これが* nixシステム用に開発する人向けではなく、* nixシステム管理者向けではなく、* nixシステムで作業が必要になることがある通常の開発者向けである場合、実際にどの程度の経験が必要ですか?
そのような開発者が* nixシェル(ls、chmod、catなど)で必要とする可能性のあるものはすべて、おそらく1ページのチートシートに記述できます。その場合、* nixシェルの知識が不要な場所で必要になると、一部の優れた候補が除外される可能性があります。
私は通常、簡単なタスクを選び、ホワイトボードにシェルスクリプトを書くように依頼します。
"ディレクトリ" foo "とバックアップディレクトリ" foo_backup "があります。" foo_backup "が変更されてから" foo "で何が変更されたかを確認するシェルスクリプトを記述してください。
「Linuxでのログインプロセスを、必要に応じて詳細に説明してください」はよい質問です。ログインプロセスには、ユーザーの切り替え、権限と所有権、および多くの一般的なUnixの哲学が含まれています。 /etc/passwd
と/etc/shadow
がある理由と理由、および非特権ユーザーが自分のパスワードを変更して他のユーザーは変更できない方法を明確に説明できれば、それはUnixを「取得」することを意味します。
もう1つの優れた点は、ログ解析やクイックセキュリティ監査を備えたものです。 Apacheログから特定の仮想ホストに提供される合計帯域幅を合計できる場合、またはuidが0のシステムに他のユーザーがいる場合は、コマンドラインで便利です。
そして、彼らにしてはいけないことが一つあります。紙やホワイトボードに書いてはいけません。ライブシステムを提供します(ただし、ほとんど不正行為のためインターネットは利用できません)。マニュアルページの使い方がわかっていて、その場でマルチパイプ式を作成できる場合、それは良い兆候です。彼らがすべてのためにグーグルを必要とするならば、彼らのスキルセットは疑わしいです。
なぜ彼らに関数型プログラムを書かせるのか? 「grepとsedの違いを教えてください。Xコマンドは何をしているのかなどを教えてください。そうすれば、少し先に進めることができます。
彼らがあなたが彼らに与える特定の割り当てに手を出したら、あなたは彼らが賢いとは思わないかもしれません。しかし、一般的な質問をすると、彼らは彼らが知っていることをあなたに示す機会が与えられます。これは重要かもしれませんが、あなたが思っていたものとは異なる方法であるかもしれません。