すべての優れたJava / Java EE開発者が答えられるべき質問は?[閉まっている]


138

私はすべての優れた.Net開発者が答えることができるはずの質問を通過し、この質問の内容とアプローチに非常に感銘を受けたので、同じ精神で、Java / Java EE開発者にこの質問をします。

優れたJava / Java EEプログラマが答えることができるとしたら、どのような質問だと思いますか?

この質問はユーザー固有ではなく、プログラミングコミュニティ全体に役立つことを目的としているため、コミュニティWikiとしてマークを付けています。

素晴らしい反応を楽しみにしています。

編集:コメントで提案されているように、質問にも答えてください。そうすれば、人々は言語に関して新しいことも学ぶことができます。


3
なぜこの質問は.Net質問に対して同様の回答を得ることができないのですか?
レイチェル

5
Good Lord :)、1年前に.Netの質問があり、これは1日たったので、回答を比較しています。
2010年

1
質問を編集して、「自分の質問に答えてください」という文を追加して、人々が何か(新しい)を学べるようにしてみませんか。
r3zn1k 2010年

9
「Enterprise Editionの現在の省略形は何
ですか

17
アルバートアインシュタインの逸話..アインシュタインの同僚の1人が彼に彼の電話番号を尋ねました。アインシュタインは電話帳に手を伸ばして調べた。「自分の番号を覚えていませんか?」男は驚いた。「いいえ」とアインシュタインは答えた。「なぜ本から簡単に手に入れることができるものを記憶しなければならないのですか?」私はみんなに連絡していますか;)?ええ、私は知っています、アインシュタインは面接官に直面していませんでした...
SB。

回答:


83

hashCode()とequals()の関係は何ですか?これらの方法の意味は何ですか?それらを実装するための要件は何ですか?


はい、実際に問題が発生するとは限らない場合でも、すべての開発者は少なくとも問題を認識している必要があります。
sleske 2010

3
equals()およびhashCode()in java @ technofundo.com/tech/java/equalhash.html
pramodc84

70

セット、マップ、リストの違いは何ですか?

電話インタビューでこれを知らない人がどれほどいるのか、私は今でも驚いています。


8
当然ですが、ネット上のドキュメント(「javaコレクションフレームワーク」)を見るのに20秒かかります。そのため、多くの価値のある人々がメモリ内に保持することに煩わされることはありません。
Manur

127
いいえ、申し訳ありませんが、これは購入しないでください。すべての開発者が知っておくべき基本的な知識です。
Jon

15
ソフトウェアでの仕事を考えている人も、それだけでなく、さまざまな種類のリスト(ArrayList / LinkedList)の違いも理解する必要があると言います。必ずしも最良の実装またはO(n)表記ではありませんが、何を使用するのが適切かについての理解。
Gonzo牧師

11
+1 @ジョン:私は通常、「詳細を覚える必要はない」という考え方を取り入れていますが、これらの基本的なインターフェースの基本的な概念の違いさえ知らなければ、あなたは間違いなく優れたJava開発者ではありません。
Joachim Sauer

13
@Joachim:「Java」という単語をステートメントから削除できます。セット、マップ、リストは、基本的なアルゴリズムの概念です。
CPerkins 2010年

44

インターフェースは複数のインターフェースを拡張できますか?

ほとんどの人は「いいえ」と答えます。なぜなら、Javaには多重継承がないことを知っているからです。ただし、インターフェースは複数のインターフェースを拡張できます(ただし、クラスは複数のクラスを拡張できません)。これはダイヤモンドの問題にはなりません。

答えは「いいえ」の場合、インタビュアーは、「なぜ尋ねるべきではないでしょう、それが禁止さ?」。それからあなたはそれについて考え始めます、そしてあなたはそれに問題がないことを理解するべきです。

面接で(自分で)何かを学び、クラス、オブジェクト、継承、ポリモーフィズムなどについて推論できることを面接担当者に示しました。実際に答えを知っているが、そうではない候補者よりもはるかに優れています。理由を理解する


昨日、C ++講師をダイヤモンドの継承問題と混同しましたが、彼女はそれについてまったく知りませんでした:)
Esko

2
私は一度この質問をされ、私は「いいえ」と答えました。ストレスだったと思います。決して使用しないものに対する答えを常に知ることは困難です。
IAdapter 2010年

1
本文でもう少し詳しく説明します。「いいえ」と答えても大丈夫です。この質問の良い点は、OOの概念と候補者がどのように推論するかについてのディスカッションをトリガーする良い方法であることです。面接担当者が「はい」と聞きたかっただけの場合、それは事実上無意味です。インターフェースの多重継承は、確かに、心臓に知られることはそれほど一般的ではありません。
ewernli、2010年

3
この質問のよりトリッキーなバージョンは、「Javaは多重継承をサポートしていますか?」です。答えはインターフェースの「一種」である
nsfyn55

23

メソッド呼び出しでのfinalキーワードの使用。たとえば、以下のコードのメソッドテストで、メソッドパラメータに最終修飾子を使用してもコンパイルエラーが発生しないのはなぜですか。

class Name {
    private String name;

    public Name (String s) {
        this.name = s;
    }

    public void setName(String s) {
        this.name = s;
    }
}

private void test (final Name n) {
    n.setName("test");
}


この質問の答えを知りたいです。とても面白いですね。
Rachel

@Rachel:理由は、finalキーワードがクラスNamenameフィールドではなくオブジェクトに適用されたためですName
ryanprayogo

20
まあ、パラメーターnはfinalとして宣言されていますtest。つまり、メソッド本体で再割り当てすることはできません。メソッドtestはパラメーターの再割り当てを試みないため、エラーは発生しません。パラメーターのプロパティを設定するだけです... n = new Name("test");コンパイルエラーが発生します...
rjohnston

7
@rjohnstonのコメントへの追加:メソッドパラメータのfinalの使用は、クラスインスタンスの不変性を保証しません。不変性が必要な場合は、クラス(この場合はName)を設計する必要があります(たとえば、現在の場合は、setterを指定しないでください)
sateesh

貴重な情報を共有してくれてありがとう。私はこれについてあなたの意見を本当に感謝しています。
Rachel

19

確かに文字列の比較です。との差

String helloWorld = "Hello World";
helloWorld == "Hello World";
"Hello World" .equals(helloWorld);


14
new String( "Hello World")のようなことをする必要があると確信しています。intern()が持つ効果と同様に、プールから文字列定数を取得しないので、両方のステートメントが真になりますか?
Steven Schlansker、2010年


17

トリックの質問:Javaではどのような種類のパラメーターが参照によって渡されますか?

「プリミティブは値で渡され、オブジェクトは参照で渡される」というマントラをいまだに多くの人々がオウムしているのは驚くべきことです。


4
正解はいつも面接で出すのかな。面接したところ、インタビュアーも同じことをオウムした。
MAK、2010年

2
Javaに関するこの質問への回答において、Cを第一言語として学んだ人々とC ++を第一言語として学んだ人々の違いに気づきました。おそらく、Cユーザーはポインタを値に渡すことは「参照渡し」であると教えられているためでしょう。
Uri

23
「参照によって渡される結果は何か?」と尋ねた場合、「間違った」答えは技術的に正しくなる可能性が高いので、それは愚かな質問です。。オブジェクトを渡す方法は1つしかないため、これは参照渡しの定義の問題であり、Javaの世界ではあまり価値がありません。参照によってパス渡すために任意の定義を使用するよりも、実際に何が起こるかを理解することが重要です。
x4u 2010年

3
この質問は、多くの場合誤って使用される「値渡し」/「参照渡し」の正確な定義に依存しているため、少なくとも問題があります。優れた開発者は定義を知っておくべきだと私は同意しますが、結果を理解することがより重要です。Javaの実際の動作を理解している場合、概念の正しい名前を知っていることはあまり意味がありません。変更することがないため、実際にそれを議論することはないからです。
sleske 2010

3
えーと、オブジェクト Javaで参照渡しされます。オブジェクトを値で渡すことはできません。特に、オブジェクトがスタックに存在することはありません。参照は確かに値で渡されます。
ショーンオーウェン

17

あなたは「良い」、「開発者」と言いました。ここにも私の2セントがあります。

  • 「チェック例外」とはどういう意味ですか?
  • 予期しない状態を処理するためのアサーションまたは例外:
  • なぜStringクラスがfinalなのですか?(またはそうではありませんか?;))
  • Objectクラスのwait、notify、notifyAllメソッドは何ですか?
  • なぜThreadクラスはfinalではないのですか?なぜこれまでにThreadを拡張するのですか?
  • なぜ2つのDateクラスがあるのですか。1つはjava.utilパッケージにあり、もう1つはjava.sqlにありますか?
  • 最終的にブロックで例外がスローされるとどうなりますか?残りは最終的に実行されましたか?
  • ガベージコレクターは問題ありませんが、Javaアプリケーションではメモリリークはまったく発生しませんか?そうでない場合、どのようにですか?

J2EEの場合:

  • サーブレットにインスタンス/静的変数があると良いですか?何故なの?では、「状態」はどこに保存しますか?
  • 上記の質問を続けます:(ウェブ)アプリケーションの「状態」は何ですか?どこにありますか?
  • 「JSP」でDB接続の作成/クローズを開始するとどうなりますか?
  • JSP例外を処理する方法は何ですか?トライキャッチ?うーん…他に何かありますか?

私はもっ​​とたくさんのことを考えることができますが、今のところこれで十分です:)


8
答えはいいだろう、私はそれらのいくつかへの答えを知りません。
MAK

チェック例外は、プログラムが発生した場合に処理する計画を持っている必要がある例外です。チェック例外をスローするものの周りにtry / catchブロックがない場合、プログラムはコンパイルされません。wait、notify、notifyAllはスレッドの同期用で、Javaではすべてのオブジェクトを同期できます。概念的にクラスが独自のスレッドを必要とする場合、つまり、何らかの管理を行う必要があり、別のワーカースレッドで実行できるタスクを表していない場合は、(Runnableの実装ではなく)スレッドを拡張します。
ZoFreX 2010年

例外がfinallyブロックでスローされた場合、残りのブロックは実行されません。「純粋な」Javaプログラムでは、正規のメモリリークは存在しません。ただし、データ構造に不要になったオブジェクトへの参照が含まれている場合は、メモリを使用する必要があります。ネイティブライブラリを使用する場合、それらのリソースを管理する必要がある場合があります。たとえば、SWTでは、特定のアセットで.dispose()を呼び出して、それらがリークしないようにすることが重要です。
ZoFreX 2010年

2
開発で対処する「これは絶対に発生してはならない」エラーにはアサーションを使用します。実行時に実際に発生する可能性のあるエラーには例外を使用します。プログラムはそれらを何らかの方法で処理する必要があります。
MatrixFrog

16

String、StringBuffer、StringBuilderの違いは何ですか?


5
文字列-文字列を表す不変のクラス。StringBuffer-文字列の構築に使用するためにすべての操作(またはその大部分)で同期する古いバージョンのJavaで導入されたビルダーパターン。StringBuilder-Java 5(JDK 1.5)で導入されたクラスで、StringBuffer APIを共有して、すべての操作(またはその大部分)で同期しない Stringを構築するために使用します。文字列の構築はシングルスレッドで行われる傾向があるため、StringBuilderは、それをサポートするJavaランタイム/ JDKでこの目的に適しています。
MetroidFan2002 2011年

13

「デプロイメント記述子とは何ですか?」

候補者が思わず身震いする場合は、3.0以前のEJBでの作業経験があります。


「思わず身震いする+激しく発汗する+この質問を2回以上繰り返した後に死に至らしめる」ようにします。注釈全体を追加/サポートしたのは、その「唯一の」理由です。:)
Elister

12

多くの質問とインタビューがhttp://www.techinterviews.com/interview-questions/javaで利用可能ですであり、私はそれらの選択をコピー/貼り付けすることに本当に価値があるとは思いません。

いいえ、あなたが重要だと思うもの独自に編集するのはあなた次第です。個人的には、私は常に2つのステップで進みます。最初にいくつかの質問をして、経験とスキルの基本的な考えを得てから、問題解決の状況を調べます。既知の質問に答えることができれば、あなたが良いまたは悪い未知の問題を解決できると確信していません。ですから、私は人々に与えられた問題を解決し、彼らにいくつかの要件を与え、そしてコードを書くように依頼することを好みます(紙ではありません)。私は彼らに私に戻って、彼らがどのようにしたか、彼らのコーディングスタイル、彼らが提案されたAPIをどのように使用したかなどをチェックする時間を与えます。

そうは言っても、私のお気に入りの質問は「Javaの何が好きではないのか」です。(これの精神で)。これは本当に素晴らしい質問です。候補者がJavaをどれだけ使用し、そのAPIを調査したか、そして(OPが書いたように)Javaがそれについて単に信仰を持っているかどうかについて即座にフィードバックを提供します。

更新: CPerkinsによって提案されたように、上記で提案された質問に対するより適切な表現は、「Javaで何を変更してほしいですか?」です。そして確かに、私はこの方法を好みます。


「Javaの何が好きではないのですか?」という質問は好きではありません。「最後の会社を辞めた理由」のように聞こえるので、私はうそをつきます。さらに、彼らが考えるかもしれません-「Javaが嫌いなら、私たちはあなたに仕事を提供しません」。
IAdapter 2010年

@ 01それはあなたの権利ですが、私はあなたに同意しません、そしてあなたはその質問の要点を逃したと思います。
Pascal Thivent、2010年

1
私は通常、これが「気に入らない」ではなく、「Javaで何を変更してほしいですか」という表現をよく見ました。
CPerkins 2010年

@CPerkinsそれは実際にはより良い言い回しであり、「気に入らない」よりも優れており、「参考文献」の「憎悪」よりもはるかに優れています。ありがとう。
Pascal Thivent、2010年

11

System.out.printlnの「System」、「out」、「println」とは何ですか?HashMapで「put」を呼び出すとどうなりますか?


答えは何ですか?私はasnwerを知っているのだろうか:)
palAlaa

10
  1. Javaで使用されるさまざまなアクセス修飾子について説明します。私はこれ、特にデフォルトのアクセスに多くの人々が苦労してきました。
  2. Java言語またはプラットフォームについて1つのことを変更できるとしたら、それは何でしょうか?良い開発者はここで答えを持っていますが、開発に本当に興味がない人はおそらく気にしないでしょう。
  3. CVがEJB2.1を使用しているようなことを言っている場合は、EJB3について尋ねて、EJB3が知っていることを確認します。最高の開発者は、新しいバージョンを使用しなくても、最新の開発に追いつきます。

3
変更できることが1つしかない場合は、言語に演算子のオーバーロードを追加します。おそらく、オーバーロード可能な演算子の制限されたセットのみを使用します(つまり、オーバーロードなしのnewor ^または>><<および>>>)。別のことを変更できるとしたら、それは真の参照渡しのセマンティクスを追加することです。3番目のことは、unsigned整数型を追加することです。
Chinmay Kanchi、2010

1
デリゲートとクロージャ、そしておそらくラムダ式ですが、それは本当に必要ではありません。拡張メソッドも同様に壮大です。適切に使用すれば、実際にコードをクリーンアップできます。
Joel

10
  • イコールをオーバーライドするときの一般的な契約は何ですか?
  • より良いオプションはリストまたは配列を好みますか?
  • 一般的に受け入れられている命名規則は何ですか?
  • シリアライゼーションはどのように機能しますか?
  • Comparableの実装方法は?
  • JDBCの準備済みステートメントを使用する利点は何ですか?
  • Java EEとは何ですか?
  • コンテナとは何であり、どのようなサービスを提供しますか?

9

Javaの「経験」を備えた卒業生を採用している場合、NullPointerExceptionがスローされるコードを書くなどの簡単な質問は、最近Javaを使用した候補者を識別でき、ユニット/コースを終了したときに止まることはありませんでした。


16
「throw new NullPointerException()」は正しい答えですか?
–ThorbjørnRavn Andersen 2010

1
まあ、それはインタビュアー次第です。変数をテストし、有用なメッセージでNPEをスローする例を示していれば、私は満足しています。彼らが合法的にNPEをスローするようなコードを思い付くことができなかったので、彼らがその答えを使用したと思ったら、私は心配するでしょう。
David

9

何が印刷されますか?

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

回答:CoolReturn + 1

もう少し難しい:

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder=null;  /* ;) */
    }
}

回答:CoolReturn


最初のコードは、returnステートメントがtryブロックで利用可能であっても、最終的には常に実行されることを示していますが、2番目のコードはありませんでしたか?ステートメントビルダー= nullの場合に何が起こったか 起こる??
palAlaa 2010年

3
@Alaa、それはほとんど一時的な値がビルダーに設定されているようで、ビルダーはfinallyブロックでnullに設定されており、一時的な値が返されます。
2011年

1
@VextoR、はいAlaaは素晴らしい説明をしてくれました。そのコードは、インタビュ
イー

4
returnステートメントは、StringBuilderオブジェクトへの参照を返します。最終的に参照を変更しても、実際に返される参照には何も影響しません。ただし、最初の例のように、オブジェクトの内容を変更すると、返される内容に影響します。
Derek Litz

8

抽象クラスとインターフェースの違いは何ですか?それぞれをいつ使用しますか?

多くのJava開発者はこれを知らないので、大学のコンピュータサイエンスコースのほとんどの人に尋ねましたが、大多数はそれに答えることができませんでした。


唯一の違いは、抽象クラスが非抽象メソッドを含むことができることです。
TBH 2010

1
確かに、Javaの本を読んだとしたら、それが答えとなるでしょう。次に、メンバー変数も含めることができることを追加することもできます。
ZoFreX 2010

1
インターフェイスを使用すると、ポリモフィズムである非常に強力な技術が提供されます。これは、インターフェイスを実装しているクラスからオーバーライドされたメソッドを無表情に呼び出すことができるため、各子クラスのタイプを知る必要はありません。
palAlaa 2010年

@TBH-Javaが現在使用している単一継承モデルでは、1つの機能セットに対して1つの抽象クラスしか拡張できないことを忘れないでください。継承制限。
MetroidFan2002、2011年

8

次のような簡単な質問

  • JREおよびJDKとは何ですか?
  • なぜJavaは相互運用性を主張するのですか?

これらは非常に基本的なものですが、多くの開発者は答えを知りません。コード関連のクエリの前にこれらを尋ねることをお勧めします。


JDK / JRE部分については知らない。たとえば、Macではそのような区別はありません。したがって、MacのJava開発者として、それについて知る必要はまったくありません。
Fabian Steeg、2010年

これは良い質問だと思います。もしそれがMacで真面目なJava開発をもっとうまくやろうと誤解している人々をさらけ出すのに役立つかどうか。真剣に、あなたがJava開発者であると主張しているが、どのダウンロードリンクがjava.sun.comをクリックするべきかわからない場合は、問題があります。
マークB

Java開発者であることは、彼/彼女が使っているプラ​​ットフォームについてまったく心配する必要はありません。javaツールを理解することは、基本的な要件のように思われます。少なくとも私はそう考えています。私が働いているOSについて。
Ravisha、2010年

@mbairdそれはかなり意地悪なコメントとして出てきます。私はMacで開発していて、JRE / JDKが何であるかを知っていますが、実際の開発では、それは本当に重要ですか?特にコマンドラインで過去のものを使用するIDEでは、Java開発者は何よりも言語の使用方法を知る必要があります。
Alexis King

6

J2EE / JEEに関する上位5つの質問

私が直面したJ2EE / JEEミドルウェアの質問のリストは非常に長いですが、ここで私が尋ねられた上位5つは、良い議論につながりました。

  1. MDBが処理できない例外に遭遇するとどうなりますか?
    この質問は通常、有害メッセージ、エラーキューなどに関するさまざまな興味深い議論につながります。
  2. JMSトピックと、さまざまなJVM上のいくつかのコンシューマーを想定して、耐久性のあるコンシューマーがある場合とない場合のさまざまなシナリオに関する質問。
    この質問では通常、永続サブスクライバーをいつ使用するか、いつキューを使用するかなどについて説明できます。
  3. Hibernate / JPA POJOコンテンツにアクセスすると例外が発生する状況でスタックした場合、どのように解決しますか?
    これは、遅延読み込み、再水和などに関する素晴らしい議論につながります。それは、JPAとエンティティBeanの比較と対比にもつながります。準備して、概念を明確にしておくと便利です。
  4. 単純なWebサービスをどのように提供できますか?
    シンプルなWebサーバーベースのソリューションから洗練されたSOAP / RESTソリューションまで、およびその間のソリューションであれば、どれでも十分なはずです。また、インタビュアーに基づいて、WSDLファースト、ドキュメントスタイル、SOAP仲介など、いくつかの設計アイデアなどのトピックに関する非常に興味深いディスカッションにつながる場合があります。JAXよりもJAX-WSの改善の一覧表示などの質問につながる可能性があります-RPC、またはSOAP1.1 over SOAP1.1の回答は、通常、私が覚えている量に基づいています。
  5. JEE 5リソースインジェクション
    この質問は、Service Locatorパターンからjavax.naming.Context質問まで、さまざまな方法で出されます。

厄介な問題を見つけましたが、何度も直面しているもう1つのトリッキーな質問は、 依存ライブラリをアーカイブにパッケージ化する方法です。
または、バンドルされたアーカイブ内のさまざまなクラスの可視性。
議論が異なるアプリケーションサーバーのクラスローダー階層、リソースアーカイブなどにつながらない場合は、辞任して次に進むことをお勧めします。

トップ5のコアJava質問:

  1. java.util.collectionsに関する質問
    これはすべての質問の母です。あなたが効果的にできるようになると土地この領域で面接をし、あなたが用意されている場合は、インタビューの残りの部分は、通常はここにとどまります。知っているのを確認してくださいSetListMap、との重要性Object.equals()Object.hashCode()、これらのインタフェースのすべての実装インチ
  2. リファクタリングの質問
    これらは、インタビュアーが心を開いている場合に適しています。インタビュアーがすでに特定の解決策を考えていて、あなたの解決策が彼/彼女と一致しない場合、あなたはかなり運命にあります。「他の解決策も可能だと思います。」という回答に同意するのが最善です。
  3. JDK5でのマルチスレッドに関する質問。以前のJDKバージョン比較するとjava.util.concurrentパッケージクラスで準備するのが最善であることがわかりました。ダグ・リーの本にはほとんどの答えがあります。
  4. JDK1.6 / JDK1.7の新機能...?
    これは多くのインタビュアーにとって確かな質問です。私がこれを嫌うのと同じくらい、準備するのが最善です。少なくとも、私が作業したいくつかのことを思い出し、議論を他の方向に導き、大部分かつ効果的に問題を回避して解決します。
  5. Java APIのパターン時々、Java API
    のGoFパターンを指摘するように言われました。これに備えておくとよいでしょう。



5

なぜtoString()メソッドをオーバーライドするのですか?


4

より純粋なJavaの質問:

sleepとwaitはどう違いますか?待機がどのように機能しているかを実際に理解している人は多くありません。

どのようにInterruptedExceptionsを処理する必要がありますか?


4

これは私がインタビューで直面した質問です。

Javaのmainメソッドがpublic static void main(String [] args)として呼び出されるのはなぜですか?

回答:

1. main()は、プログラムの実行が開始するたびにJVMによって呼び出されるため、パブリックとして宣言する必要があります。JVMはプログラムパッケージに属していません

パッケージの外部でmainにアクセスするには、それをpublicとして宣言する必要があります。public以外として宣言すると、ランタイムエラー表示されますが、コンパイル時エラーは表示されません。

2. main()は静的として宣言する必要があります。メソッドが静的として宣言されている場合、ClassName.methodName()を使用してクラスの外部でそのメソッドを呼び出すことができるためです

class Sample
{
     static void fun()
     {
           System.out.println("Hello");       
     }
}

class Test
{
      public static void main(String[] args)
      {
                Sample.fun();
      }
}

JVMは最初にTestクラスをロードし、コマンドライン引数を確認して、メインメソッドをTest.main();として呼び出します。

3. JVMはmain()からの値を予期していないため、main()はvoid main()として宣言する必要があります。したがって、それはvoidとして宣言する必要があります。

他の戻り値の型が指定されている場合、それはRunTimeError、つまりNoSuchMethodFoundErrorです。

4. JVMはコマンドライン引数を渡すことによってmainメソッドを呼び出すため、main()は配列として文字列引数を持っている必要があります。これらは文字列配列オブジェクトに格納されるため、引数としてmain()に渡されます。


あなたがpublic static void main(String... args)とても気になるなら、あなたは使うことができます:-)それは同じ署名を持っています[]
corsiKa

3

J2SEとJ2EE(またはJSEとJEE)の違いは何ですか?

開発者は、エンタープライズエディションが基本的にベンダーによって実装できるインターフェイス定義(つまり、仕様)であることを指摘できるはずです。標準版はそれ自体の実装ですが


4
結局のところ、マーケティング用語をまっすぐに保つ能力は本当に重要ですか?
ローレンスゴンサルベス2010年

@Laurence-それはとんでもないことです。経験豊富な開発者の多くが理解していないことに驚かれる2つのものには実際の違いがあります
oxbow_lakes

私の要点は、誰かが優れたコーダーである場合、J2SEとJ2EEの違いを知っていれば、私はあまり気にしないはずです。
ローレンスゴンサルベス2010年

私は質問を「JEE + JSE開発者が知っておくべきこと」であると読みました。その場合、2つのテクノロジーの違いを理解することが重要だと思います。
oxbow_lakes 2010年

4
@ThorbjørnRavn Andersen「エンタープライズ版は基本的にインターフェースの定義であるのに対し、標準版はそれ自体が実装であるのに対し」、優れたものを含むほとんどのJavaコーダーは上記の違いを強く認識しているとは思えません。ほとんどの優れたJavaプログラマにとって、重要な違いは、どのAPIが利用できるかです。例:サーブレットはEEの一部などです。いずれにしても、優れた言語Xプログラマーよりも優れたプログラマーを見つけることが重要であると思うのと同様に、優れたJSE / JEEプログラマーよりも優れたJavaプログラマーを見つけることが重要だと思います。
ローレンスゴンサルベス2010

3

volatileコンパイラによるコードの最適化にどのように影響しますか?


3
そのエントリにも正しい答えが含まれている必要があります。
–ThorbjørnRavn Andersen 2010

完全な答えは覚えていません。詳しくは、こちらのyoutube.com/…をご覧ください。一言で言えば、メソッドがある時点で揮発性変数を使用すると仮定します。その後、コンパイラはその時点以降、このメソッドのコードを最適化しません。
ローマ

2

セッションBeanとは何か、ステートレスセッションBeanとステートフルセッションBeanの違いについて説明します。


2

2つの整数を受け入れ、2つの数値の最大値を選択した場所のファイルに出力するプログラムを作成します。次に、各ステートメントの機能について説明します。

インポートステートメントの重要性から、異常終了まで、かなり深くドリルダウンすることができます。


2

コア:1.チェックされている例外とチェックされていない例外は何ですか?2.コードに新しい例外を追加するときに、どのタイプ(チェック済み/チェックなし)を使用するのですか?

サーブレット:1. response.sendRedirect()とrequest.forward()の違いは何ですか?


これらの質問に答えてもらえますか?「チェックされた例外とチェックされていない例外」について知るのは初めてです!
palAlaa 2010年

シンプルなGoogle検索では答えにあなたを導くことができます。google.co.in/...
YOK

1

どのようにthreads機能しますか?なにsynchronizedsynchronizedクラスに2つのメソッドがある場合、2つのスレッドで同時に実行できます。多くの人がイエスと答えるのを聞いてあなたは驚かれることでしょう。次に、すべてのスレッド関連の質問、たとえば、デッドロック飢餓など。


2
それは答えが「はい」
だから

@フォルテガ-それはどうですか?各メソッドはオブジェクトをロックします。1の場合はthreadこの方法を実行している、他のは、threadロックを取得することはできません。
fastcodejava 2010

1
同じタイプの2つのオブジェクトがある場合、最初のオブジェクトで最初のメソッドを呼び出し、2番目のオブジェクトで2番目のメソッドを同時に呼び出すことができます。もちろん、メソッドが静的でない限り。
フォルテガ

2
ロックがどのように行われるかを正しく理解していない場合、それは実際には簡単なことではありません。また、それは簡単なことではないかもしれませんが、私の答えが間違っていたという意味ではありません:-)
Fortega

1
答えは、仕事でスレッドを使用しなかったプログラマーを混乱させる可能性がありますが、それは良いことだと思います:)
palAlaa

1

多くのJavaプログラマが知らないことの1つは、文字列は不変であるため、StringBuilderまたはStringBufferを使用することです。

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}

そして、整数、ロングなどの数値
アーサーロナルド

パフォーマンスに関しては、不変文字列の連結とStringBuilderの使用に違いはありません。現代のJavaコンパイラは連結を最適化するためです: java.sun.com/docs/books/jls/third_edition/html/... それは、より読みやすいですどんな方法で使用することをお勧めします。
ブレントウィルソン

1
@BrentWilsonあなたがリンクしたものはあなたが思っていることをしません。それは変わりますs += "a" + "b" + "c"Stringbuilder.append(...)のシナリオ。しかし、それはループを最適化しませんfor。この回答のコードは、合計201個のString、100個のStringBuilder、および(実装によっては)char[]これらのStringBuilder内に300個の異なるsを作成し、推定で425k個以上の文字を作成します。StringBuilderを完全に使用するように変更すると、これは1文字列、1文字列ビルダー、および13〜15内部char[]sに削減されます。
corsiKa 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.