ホームページ >バックエンド開発 >PHPチュートリアル >プログラマーインタビュー: 電話インタビューの質問と回答トップ 42 (パート 2)

プログラマーインタビュー: 電話インタビューの質問と回答トップ 42 (パート 2)

WBOY
WBOYオリジナル
2016-08-08 09:27:25993ブラウズ

今年は 2015 年 ここ数年、プログラマーのポジションの候補者を選考する方法は対面 (電話面接) が最も一般的でした。これにより、雇用主と雇用主の両方がお互いを知ることが容易になり、候補者は将来の雇用主の所在地に行く必要がなく、面接官も追加の手配をする必要がありません。これは、プログラマーの面接の質問を取り上げた記事の第 2 部です。最初のセクションがコーディングに関する質問に焦点を当てすぎているというフィードバックを受け取り、多くのプログラマーが電気に関する質問についても同様のリストを作成するよう求めていました。面接に合格して次のラウンドに進むには、職務要件に関連するすべての質問に十分に答える必要があります。 JavaC++ の開発者へのほとんどの面接では、対応するプログラミング言語だけでなく、SQL XML などの他のテクノロジーでも問題に遭遇します。 UNIX、汎用プログラミング、オブジェクト指向プログラミング、データ構造とアルゴリズム、ネットワーキング、コーディング、その他の仕事の側面。プログラマーの就職面接は状況によって異なるため、面接官が期待する方法で自分自身を表現するには特別なスキルが必要です。

覚えておくべき重要なことは、面接の質問に答えるときは、できるだけ早く重要な点を挙げ、常に重要な答えをすることです。面接官の質問は幅広いトピックをカバーする傾向があるため、「OK、わかりました」のような空虚な言葉よりも批判的な回答を好みます。対面面接では、問題についてより詳しく説明する機会があります。ちなみに、これは厳格なルールではなく、面接官があなたの答えにどのように反応するかに基づいて、彼がどのような反応を期待しているかを知ることができます。彼が質問を迫り、あなたがもっと言うことを期待しているなら、あなたはもっと言うべきです。しかし、彼がすぐに次の質問に移った場合は、明確かつ簡潔に答える必要があります。この記事では、エレクトロニクス向けにアレンジされた、一般的な興味深いプログラミングの問題をいくつか紹介します。そのほとんどは、バークレイズシティ野村インフォシスTCSなどの銀行を含むテクノロジー企業のエレクトロニクス側からのものです。 のような企業CTSTech MahindraHCLがサービスを提供しています。前に述べたように、面接の質問はランダムに選択されましたが、面接官が面接中にテストしたい内容であるため、そのほとんどは基本的な知識に基づいていました。これらの質問のほとんどは若手開発者 (経験年数 2 から 5) を対象としていますが、上級プログラマーやベテラン プログラマーも自分の面接の質問として使用できます。あなたが面接官であれば、これらの質問を使用して、開発職の候補者を迅速に選別できます。ここでは短い回答を、長い回答へのリンクとともに提供します。

以下は、ほぼ42プログラマーの面接の質問のリストです。これらの質問はプログラミングの基礎に基づいているため、プログラマー、開発者、ソフトウェア エンジニア、テストおよび運用エンジニアのテストに使用できます。ただし、これらはプログラマーや開発者に最適です。ちなみに、あなたが Java 開発者で、Javaの電子面接の質問を探している場合は、そのリストをチェックしてください。このリストはより一般的であり、PythonRubyPerl、およびC#の開発者を含むすべてのプログラマに適用されます。 22.

アプリをリリースする前にテストする 3 つの異なる方法について説明できますか?

単体テスト、統合テスト、スモークテスト。単体テストは、独立したユニットが期待どおりに動作するかどうかをテストするために使用されます。 統合テストは、テストされた独立したユニットが連携して動作できるかどうかをテストするために使用されます。航空機の注文プロセスでは、チケットの予約、フライトのキャンセル、変更ができる必要があります。

23.

反復と再帰の違いは何ですか?

(詳細な回答)

反復はループを通じて同じステップを繰り返し実行し、再帰は関数自体を呼び出すことによって反復的な作業を実行します。再帰は、多くの場合、ハノイ塔、リンク リストの逆順、文字列の逆順などの複雑な問題に対する明確かつ簡潔な解決策です。再帰の欠点の 1 つは深さです。再帰は中間結果をスタックに保存するため、再帰の特定の深さまでしか進むことができず、それ以降はプログラムが

StackOverFlowError

でクラッシュします。これが、実稼働コードでは再帰よりも反復が優先される理由です。

24. &&&

演算子の違いは何ですか?

(詳細な回答)

&はビット演算子、&&は論理演算子です。 &&& の違いの 1 つは、ビット演算子 (&) は整数型とブール型に使用でき、論理演算子 (&&) はブール型にのみ使用できることです。型変数。 a & b と書くと、2 つの整数の各ビットが AND 演算されます。 a && b と書くと、2 番目のパラメータは実行される場合と実行されない場合があります。これが、少なくとも Java では、このパラメータが短絡演算子と呼ばれる理由です。私はこの質問が大好きで、若手開発者や卒業生によく尋ねます。

25. 1 XOR 1 の結果は何ですか?

答えは0です。なぜなら、XORは、2つのオペランド(ビット単位)が異なる場合は1を返し、同じ場合は0を返すからです。たとえば、0 XOR 0はまだゼロですが、0 XOR 11の結果は

26.

整数の最後の桁を取得するには?

(答え)

モジュロ演算子を使用すると、数値 % 10

は数値の最後の桁を返します。たとえば、

2345 % 105を返し、567 % 107を返します。同様に、除算演算子は数値の最後の桁を削除するために使用できます。たとえば、2345 / 10の結果は234であり、567 / 10の結果はです。 56。これは知っておくべき重要なテクニックであり、回文や逆転などの問題を解決するために使用できます。

27.

テスト駆動開発とは何ですか?

テスト駆動は、機能コードの前にテストコードを記述する一般的な開発アプローチです。テストはプログラムの構造を決定します。テスト駆動の純粋主義者は、アプリケーションのテストを作成する前に、アプリケーション コードを 1 行も書きません。これによりコードの品質が大幅に向上し、スーパースター開発者の品質とみなされることがよくあります。

28.

リスコフ置換原理

(リスコフ置換原理、LSP)

とは何ですか? (答え) リヒター置換原則は、ボブおじさんが SOLID

と呼ぶ 5 つの設計原則の 1 つです。リスコフ置換原則では、すべてのサブクラスが親クラスのプロキシ

(プロキシ)として機能できると規定されています。たとえば、メソッドが入力として親クラス オブジェクトを必要とする場合、子クラス オブジェクトを指定しても正常に動作するはずです。親クラスを置き換えることができないクラスは、リスコフ置換原則に違反します。実は答えるのが難しい質問ですが、うまく答えれば面接官に良い印象を与えることができます。

29.

開閉

(Open Closed)

の設計原理とは何ですか? (答え)オープンクローズ原則は、SOLID

におけるもう1つの重要な原則であり、システムは拡張にはオープンであるが、変更にはクローズであることを規定しています。これは、新しい機能を安定したシステムに追加する場合、テスト済みの既存のコードに触れる必要はなく、新しいクラスを追加するだけで新しい機能を実装できることを意味します。

30.

二分木と二分探索木の違いは何ですか?

二分探索木は順序付き二分木であり、すべてのノード (ルート ノードなど) の左側のサブツリー ノードの値は、そのノードの値以下であり、右側のサブツリー ノードの値となります。ノード値以上です。これは、順序付けされたデータを表すために使用できる重要なデータ構造です。

31.

再帰アルゴリズムの実際的な例を教えてください。

(例)

再帰アルゴリズムは、バイナリツリーやリンクリストに関連するアルゴリズムなど、さまざまな場所に適用できます。再帰アルゴリズムの例としては、文字列の反転やフィボナッチ数列の計算などがあります。他の例には、逆リンク リスト、ツリー トラバーサル、クイック ソートなどがあります。

31.

アルゴリズムの時間計算量はどれくらいですか?

時間計算量は、入力量に対する実行時間の比率を表します。アルゴリズムが一定量の入力を処理するのにかかる時間を示します。これは推定値ですが、入力数が 10 から 1000 万に増加したときにアルゴリズムがどのように動作するかを示す良い指標となります。

33.

リンクリストと配列の重要な違いは何ですか?

(詳細な回答)

リンクされたリストと配列はどちらもプログラミングの世界では重要なデータ構造です。それらの最も明らかな違いは、配列は連続したアドレスに要素を格納するのに対し、リンク リストはメモリ内の任意の場所にデータを格納することです。これにより、メモリは常に分散されるため、リンク リスト自体を拡張するための非常に高い柔軟性が得られます。この状況は常に発生する可能性があります。100 万個の整数を格納する配列を作成することはできませんが、連続していないだけでスペースがあるため、リンク リストを使用して整数を格納することはできます。他のすべての違いはこの事実から生じます。たとえば、配列では添え字がわかっていれば O(1) 時間で要素を取得できますが、リンク リストでは O(n) 時間がかかります。さらなる違いについては、詳細な回答を参照してください。

33. ハッシュテーブルの競合を処理する方法は何ですか?

線形プローブ(線形プローブ)、二次ハッシュ(ダブルハッシュ)、そしてリンク(連鎖)。線形プローブでは、バケットがすでに占有されている場合、関数は空のスロットが見つかるまで次のバケットを線形にチェックします。チェーンでは、複数の要素を同じバケットに保存できます。

34. 正規表現とはどういう意味ですか? (答え)

正規表現は、テキスト データのパターン マッチングの方法です。これは、本の中で特定の単語を検索する場合など、長い文字列内の特定の文字を検索する強力な方法です。すべての主要なプログラミング言語は正規表現をサポートしていますが、Perl正規表現はその機能で有名です。 Javajava.util.regexパッケージは、Perlと同様の正規表現もサポートしています。正規表現を使用すると、メールアドレスが有効かどうか、電話番号が有効かどうか、郵便番号が有効かどうか、さらには社会保障番号(SSN)が有効かどうかを確認することができます。正規表現の最も単純な例の 1 つは、文字列が数値であるかどうかを確認することです。

35. ステートレス(ステートレス)システムとは何ですか?

ステートレスシステムとは、内部状態を維持しないシステムです。このようなシステムでは、いつでも同じ入力に対して同じ出力が得られます。ステートレス システムの作成と最適化は常に簡単であるため、可能であれば常にステートレス システムの作成を優先する必要があります。

36. 従業員テーブルで 2 番目に高い給与を見つけるための SQL クエリを作成します。 (解決策)

これは、SQL の面接における古典的な質問の 1 つですが、依然として興味深いものであり、候補者の知識の深さをテストするために多くの質問をすることができます。相関サブクエリまたは無関係サブクエリを使用して、2 番目に高い給与を見つけることができます。 SQL Server または MySQL を使用している場合、面接官が許可すれば、TOPLIMIT などのキーワードも使用できます。 2 番目に高い給与を見つけるための最短の答えは次のとおりです:

このクエリは、最初に最高の給与を検索し、次にそれをリストから除外してから、最も高い給与を見つけます。明らかに、2 回目のリターンには 2 番目に高い給与が伴います。

37. 相関サブクエリと非相関サブクエリとは何か説明できますか? (回答)

相関サブクエリでは、内部クエリは外部クエリに依存し、外部クエリの行ごとに実行されます。非相関サブクエリは外部クエリに依存せず、独立して実行できます。したがって、前者は遅く、後者は高速です。ちなみに、相関サブクエリには、前の

SQL の質問でも触れた、employees テーブル内で N 番目に高い給与を見つけるなど、いくつかの優れた用途があります。

39.

算術演算子を使用せずに数値が 2 の累乗であるかどうかを判断するにはどうすればよいですか? (解決策)

算術演算子が使用できないという制限を聞いたら、これはビット演算に関する問題だとすぐに思うはずです。この制限がなければ、モジュロ演算子と除算演算子を使用して、数値が 2 のべき乗であるかどうかを簡単にチェックできます。ビット単位の演算子を使用してタスクを達成する巧妙な方法があります。次のコードを使用すると、数値が 2 の累乗であるかどうかを確認できます

1

2

3

public static boolean powerOfTwo(int x) {

return ( x & (x - 1)) == 0;

}

x & (x-1)

は、右端のビットを1に変換する素晴らしいトリックです 0に設定します。私はこれを「効果的なプログラミングの秘密」という本から学びました。

40. UNIX上で実行中のJavaプロセスを見つけるには? (コマンド)

psgrep コマンドを組み合わせて使用​​すると、UNIX マシン上のプロセスを検索できます。 Java プロセスに名前、または一致するために使用できるテキストがあると仮定して、このコマンドを使用します。

ps -ef | grep "myJavaApp"

ps -e

はすべてのプロセス (あなたのプロセスだけでなく、すべてのユーザーのプロセス) をリストします。 ps -f を含むすべての詳細を表示しますPID。さらに調査したい場合、または kill コマンドを使用してプロセスを強制終了したい場合は、PID が必要になります。

41.

UNIX1GBを超えるファイルを見つけるにはどうすればよいですか? (コマンド)

find

コマンドを使用すると、サイズに基づいてファイルを検索するオプションが提供されるため、大きなファイルを簡単に見つけることができます。ファイルシステムがいっぱいで、スペースがないために Java プロセスがクラッシュする場合は、このコマンドを使用します。このコマンドは、1GBを超えるすべてのファイルを一覧表示できます。サイズは簡単に変更できます。たとえば、100MBを超えるすべてのファイルを検索するには、+100Mを使用するだけです。 find . – type f -size +1G -print

42 シェル

スクリプトとは何ですか?

shell

スクリプトは、一部の反復的なタスクを自動化できる手続き要素(

ifforループなど)を含むshellコマンドのセットです。たとえば、shell スクリプトを作成して、ログ ファイルを毎日クリーンアップしたり、履歴記録用のデータをバックアップしたり、その他の家事、バージョン リリース、監視などを行うことができます。 無料で入手

LAMPBand of BrothersオリジナルPHPチュートリアルCD / 詳細 PHP 》エッセンシャル版、詳細は公式サイトカスタマーサービスまでお問い合わせください:http://www.lampbrother.netPHPCMS

二次開発

http://yun.itxdl .cn/online/phpcms /index.php?u=5WeChat開発

http://yun.itxdl.cn/online/weixin/index.php?u=5 モバイルインターネットサーバーサイド開発

http://yun.itxdl.cn/online/server/index.php?u=5Javascript

コース

http:/ /yun.itxdl.cn /online/js/index.php?u=5CTO

トレーニングキャンプ

http://yun.itxdl.cn/online/cto/index.php ?u=5 以上、プログラマーインタビュー: 電話面接の質問と回答トップ 42 (パート 2) を内容も含めて紹介しましたので、PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。