Javaベストプラクティス

3996 ワード

集合、文字列、IO、マルチスレッド、エラーと例外処理、設計モードなど、Javaの各部分のベストプラクティスが含まれています.
76)Javaでは、マルチスレッドプログラムを作成するときにどのようなベストプラクティスに従いますか?(答え)
これは私がJavaコンカレントプログラムを書くときに従ういくつかのベストプラクティスです:a)スレッドに名前を付けて、デバッグを助けることができます.b)メソッド全体を同期するのではなく、同期の範囲を最小化し、キー部分のみを同期する.c)可能であれば、synchronizedではなくvolatileを使用することに偏っている.d)wait()とnotify()を用いてBlockingQueue,CountDownLatchおよびSemeaphoreのようなスレッド間通信を実現するのではなく、より高いレベルの同時ツールを使用する.e)集合を同期するのではなく、同時集合を優先的に使用する.同時コレクションは、拡張性を向上させます.
77)JavaでCollectionsを使用するためのベストプラクティスをいくつか述べる(答え)
JavaでCollectioncクラスを使用する上でのベストプラクティスです.a)適切なセットクラスを使用します.たとえば、同期リストが必要ない場合は、VectorではなくArrayListを使用します.b)集合を同期するのではなく、同時集合を優先的に使用する.同時コレクションは、拡張性を向上させます.c)リストを使用してArrayListを格納し、Mapを使用してHashMapを格納するなど、インタフェース代表およびアクセスセットを使用する.d)反復器を用いて集合を循環する.e)集合を使用する場合は汎用型を使用する.
78)Javaでスレッドを使用するための少なくとも5つのベストプラクティスを説明します.(答え)
この問題は前の問題と似ていて、上の答えを使うことができます.スレッドについては、a)スレッドにb)と名前を付けてスレッドとタスクを分離し、スレッドプールエフェクタを使用してRunnableまたはCallableを実行する必要があります.c)スレッドプールの使用
79)5つのIOのベストプラクティスを話す(答え)
IOはJavaアプリケーションのパフォーマンスにとって非常に重要です.理想的には、アプリケーションのキーパスでIO操作を避けるべきではありません.以下に、Java IOのベストプラクティスを示します.a)バイトや文字を単独で読み込むのではなく、バッファ付きIOクラスを使用します.b)NIOおよびNIO 2 cを使用してfinallyブロック内でストリームを閉じるか、try-with-resource(Java 7)文を使用する.d)メモリマッピングファイルを用いてより高速なIOを取得する.
80)従うべきJDBCベストプラクティスを5つリストアップ(回答)
多くのベストプラクティスがあり、あなたの好みに応じて挙げることができます.以下に、より一般的な原則を示します.a)大量の操作を使用してデータbを挿入および更新する)PreparedStatementを使用してSQL異常を回避し、パフォーマンスを向上させる.c)データベース接続プールd)を用いて結果セットをカラム名で取得し、カラムの下付き文字で取得しない.
81)Javaでのメソッドの再ロードのベストプラクティスをいくつか説明しますか?(答え)
自動梱包の混乱を回避するために、以下に従う方法で再ロードできるいくつかのベストプラクティスがあります.a)一つの方法はintパラメータを受信し、もう一つの方法はIntegerパラメータを受信する.b)リロードパラメータの数が一致しないで、パラメータの順序が異なる方法だけです.c)リロードされたメソッドパラメータの個数が5個以上の場合、可変パラメータを採用する.
Date、TimeおよびCalendarの面接問題
82)マルチスレッド環境でSimpleDateFormatはスレッドが安全ですか?(答え)
いいえ、残念ながら、SimpleDateFormatを含むDateFormatのすべての実装はスレッドセキュリティではありません.そのため、SimpleDateFormatをThreadLocalに制限するなど、外部スレッドセキュリティ環境で使用しない限り、マルチラインプログラムで使用するべきではありません.そうしないと、日付を解析したりフォーマットしたりすると、不正な結果が得られる可能性があります.そこで、日付、時間処理のすべての実践からjoda-timeライブラリを強くお勧めします.
83)Javaで日付をフォーマットする方法ddMMyyyyyyの形式にフォーマットしますか?(答え)
Javaでは、SimpleDateFormatクラスまたはjoda-timeライブラリを使用して日付をフォーマットできます.DateFormatクラスでは、多くの流行のフォーマットを使用して日付をフォーマットできます.答えのサンプルコードを参照してください.コードには、dd-M-yyyyやddMMyyyyなどの日付を異なるフォーマットにフォーマットする方法が示されています.
84)Javaでは、どのようにしてフォーマットされた日付にタイムゾーンを表示しますか?
patternにz yyyyy-MM-dd HH:mm:ss.SSS Zを加える
85)Javaでjava.util.Dateとjava.sql.Dateの違いは何ですか?
JAva.sql.DateはSQL文のために使用され、日付のみが含まれて時間部分がなく、getTimeメソッドがミリ秒数を返すので、自然に直接構築できます.JAva.util.Dateはjava.sql.Dateの親で、前者は時間を表すよく使われるクラスで、私たちは通常フォーマットしたり、現在の時間を得たりして彼を使っています.後者は後でデータベースを読み書きするときに使います.PreparedStamentのsetDate()の第2パラメータとResultSetのgetDate()メソッドの第2パラメータはjava.sql.Dateです.
86)Javaでは、2つの日付の差をどのように計算しますか?
 
public static int dateDiff(Date d1, Date d2) throws Exception {
long n1 = d1.getTime();
long n2 = d2.getTime();
long diff = Math.abs(n1 - n2);

diff /= 3600 * 1000 * 24;
return diff;
}

87)Javaで、文字列YYYYYMMDDを日付に変換する方法
SimpleDateFormatのparseメソッド
ユニットテストJUnit面接問題
89)静的方法のテスト方法(答え)
PowerMockライブラリを使用して静的メソッドをテストできます.
90)JUnitはどのようにして方法の異常をテストしますか?(答え)
91)Javaプログラムをテストするためにどのユニットテストライブラリを使用したことがありますか.(答え)
92)@Beforeと@BeforeClassの違いは何ですか?(答え)
プログラミングとコードに関する面接問題
93)文字列に数字のみが含まれていることをどのようにチェックしますか?(ソリューション)
94)JavaではどのようにしてLRUキャッシュを書き込みますか?(答え)
95)Javaプログラムを書いてbyteをlongに変換しますか?(答え)
95)StringBufferを使用しないで、どのように文字列を反転しますか?(ソリューション)
97)Javaでは,どのようにして1つのファイルに単語が出現する最高頻度を取得するか.(ソリューション)
98)指定された2つの文字列が逆シーケンスであることをどのようにチェックしますか?(ソリューション)
99)Javaでは、文字列のすべての配列をどのように印刷しますか?(ソリューション)
100)Javaで、配列内の重複要素を印刷するにはどうすればいいですか?(ソリューション)
101)Javaで文字列を整数に変換する方法(ソリューション)
102)一時変数を使用しない場合、2つの整数変数の値をどのように交換しますか?(ソリューション)
一時変数を使わずに2つの値を交換しますか?ビット演算における異和によって実現した. //テストコードはC言語コード
先行知識:
1.整数は自分で自分と異なって、結果は0です //異和の法則は,同じ0,異なる1であるため,ここではバイナリビットと呼ぶことに注意する.
2.任意の整数が0と異なる場合、結果はそれ自体です.//1異か0は1,0異か0,0を得るので,1か1,0か0かは変化しなかった.
共有:
最近5年間183件のJava面接問題リストと答え〔最も完全な〕