Javaに関する10の嘘
Java プログラミング言語
java は、クロスプラットフォームのアプリケーション ソフトウェアを作成できるオブジェクト指向プログラミング言語です。これは、1995 年 5 月に Sun Microsystems によって開始された Java プログラミング言語および Java プラットフォームです (つまり、JavaEE (j2ee)、一般名)。 JavaME(j2me)、JavaSE(j2se))。
以下の質問は比較的高度な質問とみなされ、面接官を遠ざける可能性があるため、面接ではめったに聞かれません。しかし、時間を見つけて自分で練習することはできます。
1. System.exit(0) は、finally ブロックの実行をスキップします
System.setSecurityManager(new SecurityManager() { @Override public void checkExit(int status) { throw new ThreadDeath(); } }); try { System.exit(0); } finally { System.out.println("In the finally block"); }
なぜこのコードは、finally ブロックで出力されるのでしょうか?スタック トレースが出力されないのはなぜですか?
2. String str = "Hello"; ここで、str は文字列オブジェクトです。C++ とは異なり、Java の変数は基本型または参照です。変数をオブジェクトにすることはできません。これは次のような表現を意味します:
String str = "Hello"; String text = "Bye"; str == text; // 比较两个引用,而不是内容 str = text; // 把text的引用赋值给str
ほとんどの場合、大きな違いはありませんが、このように書くと混乱を引き起こす可能性があります。
final StringBuilder sb = new StringBuidler(); sb.append("Hello"); // 这个引用是final类型的,而不是这个实例。 method(sb); // 可以通过方法来修改这个实例,不过这个变量是无法修改的
3. Java のメモリ リークは、C++ プログラマーが理解しているものと同じです
Wikipedia のメモリ リークの定義は、「コンピュータ サイエンスでは、プログラムがメモリ割り当てを正しく管理しない場合、メモリ リークが発生します。オブジェクトでは、指向プログラミングでは、コードからメモリ内のオブジェクトにアクセスできない場合、これはメモリ リークです。「しかし、Java では、オブジェクトは常に到達可能であり、強参照のないオブジェクトはクリアされます。 Java におけるメモリ リークという用語は、メモリ内に存在すべきではないオブジェクトが存在することを意味します。通常は、使用されなくなったがコレクションにまだ格納されているリソースが含まれます。
4. マルチスレッドプログラミングは難しい
経験がないと、マルチスレッドプログラミングは確かに難しいです。実行のために大量のコードを多数のスレッドに投入するだけでは、問題を解決する方法はなく、混乱するだけです。 しかし、オンデマンドでスレッドを割り当て、スレッド間の対話を制御し、チームのメンバーが理解できるいくつかの単純なパターンを使用できれば、問題ははるかに単純になります。もちろん、もう 1 つの課題は、チームの全員に自分のルールに従わせなければならないことです :-)
5. 異なる操作間のパフォーマンスの違いについて心配する必要はありません
最近、相関関係に関係する問題について聞きました。整数の加算、メモリアクセス、モジュロ、およびコンソールへの出力。これらの各操作は前の操作よりも一桁遅いですが、この男は、最も高速な操作である加算を最適化し、それをより高価な操作に置き換えたかっただけです。 本当にパフォーマンスを最適化したい場合は、ボトルネックがハードウェアにある場合、たとえば、ハード ディスクから大量のファイルを読み取ってソフトウェア コードを変更する必要がある場合は、これらの高価な操作を安価な操作に置き換えたほうがよいでしょう。問題はまったくないので、役に立ちません。
6. 乱数はランダムです
特定の乱数のセットは、特定の数字のパターンのようなものです。この問題については、この記事ですでに説明しました。多くの人は、乱数発生器によって生成される数値が実際には非ランダムであるとは信じていません。
7. 浮動小数点数はランダムなエラーを生成するため、できるだけ避ける必要があります。
同じ演算の場合、浮動小数点数は毎回同じエラーを生成します。間違いは予測可能であり、したがって制御可能です。自分が何をしようとしているのかを理解し、結果の四捨五入などの単純なルールに従えば、BigDecimal よりも浮動小数点数のほうが間違いを犯すことはなくなり、さらに読みやすく、より堅牢になります。 100 倍以上高速になります (同時に生成されるガベージ オブジェクトの数も少なくなります)。
8. タイムゾーンは永遠です
この誤解の理由は、時間の変化とともにタイムゾーンも変化するためです。これは、新しい元号のヨーロッパ/ロンドンが 00:00 ではなく 1970/1/1 01:00 であることを意味します。なぜですか?ロンドンでは 1968 年から 1971 年まで夏時間を採用していたためです。
過去数年で、多くのタイムゾーンも変更されました。モスクワは以前は東 3 地区 (GMT+3) でしたが、現在は東 4 地区 (GMT+4) です (2011 年 3 月 27 日から)。 2010年当時を見ると東4区ではなく東3区になっていることが分かります。
あなたにとって驚くべきことは他にもあります:
1721 年のスウェーデンの 2 月は 30 日でした。
1751年のイギリスの初日は3月25日で、フランスより11日遅れでした。
米国がグレゴリオ暦を採用した後、数百年前に遡り、最初に記録された日付を 2 つのカレンダーで表すことができるようになりました (通常は、より正確にするために 2 つの日付が同時に提供されます)。たとえば、ジョージ ワシントンの誕生日は 1731 年 2 月 11 日から 1732 年 2 月 22 日に変更されました。
9. スレッド内で不揮発性変数を読み取ると、最終的にはその更新された値を読み取ることができます。
この質問は数日前に StackOverflow に 2 回表示されました。一般に、JIT コンパイラはコードを最適化するときに、このスレッドによって変更されていない不揮発性フィールドをインライン化します。このコードがコンパイルされると (-XX:+PrintCompilation を通じて確認できます)、別のスレッドでこのフィールドに加えた変更はおそらく表示されなくなります。ランダムな同期ブロックまたは print ステートメントを追加すると、この最適化の実行が遅れたり、JIT コンパイラーが混乱してこの最適化が実行されなくなる可能性があります。
10. Java の面接の質問はすべて正しいです
Java の面接の質問には、古い (10 年以上更新されておらず、現在の Java バージョンと一致していない) か、誤解を招く可能性のある質問がたくさんあります。間違っても。残念ながら、これらの回答はチェックされずに回覧されます。
ここでの回答の方が査読されているため、Stackoverflow の回答を参照します。一般に、rose india のようなウェブサイトは使用しないでください。上記の回答の質は驚くほど悪いです。さらに深く掘り下げたい場合は、上記の記事にスペルミス (クラス名や専門用語) や間違った記述がどれだけあるかを確認してください。これらの問題の理由の 1 つは、これらのエラーを修正する効果的なフィードバック メカニズムがないことです。
上記は Java に関する 10 の嘘の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。
