1. Java で一般的に使用される例外処理メカニズム
Java で一般的に使用される例外処理メカニズムには次のものがあります。
1) try-catch-finally ステートメント: 例外をキャッチして処理するために使用されます。例外をスローする可能性のあるコードを try ブロックに配置し、catch ブロックで例外を処理します。例外が発生したかどうかに関係なく、finally ブロック内のコードが実行されます。
try {
// 可能抛出异常的代码
} catch (ExceptionType1 e) {
// 处理ExceptionType1类型的异常
} catch (ExceptionType2 e) {
// 处理ExceptionType2类型的异常
} finally {
// 无论是否发生异常,都会执行的代码
}
2) throw キーワード: 手動で例外をスローするために使用されます。プログラムが特定の状況に遭遇した場合、throw キーワードを使用して例外オブジェクトをスローできます。
if (条件) {
throw new Exception("异常信息");
}
3) throws キーワード: メソッドによってスローされる例外のタイプを宣言するために使用されます。メソッドが例外をスローする可能性があるが例外を処理しない場合は、メソッド シグネチャの後に throws キーワードを使用して例外の型を宣言し、呼び出し元に例外を処理させることができます。
public void methodName() throws ExceptionType1, ExceptionType2 {
// 可能抛出异常的代码
}
3) カスタム例外クラス: Exception または RuntimeException から継承したカスタム例外クラスを作成して、プログラム内の特定のエラーまたは例外を表すことができます。
class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
2. 例外の 2 つのサブクラス
Java の例外クラスはすべて java.lang.Throwable のサブクラスです。これは、Error と Exception の 2 つのサブクラスを派生します。エラーは、プログラムが処理できない例外を示し、通常はスローまたはキャッチすべきではありません。例外は、チェックされた例外とチェックされていない例外を含む、プログラムが処理できる例外を表します。チェック例外とは、IOException、SQLException など、コンパイラーが処理する必要がある例外を指します。チェックされていない例外とは、NullPointerException、ArrayIndexOutOfBoundsException など、コンパイラーが処理する必要のない例外を指します。
3. プロジェクトのログはどのレベルに分かれていますか?
プロジェクトでは、ログは TRACE、DEBUG、INFO、WARN、ERROR の 5 つのレベルに分かれています。このうち、TRACE レベルのロギング レコードは最も詳細な情報を記録し、DEBUG レベルのロギング レコードは最も詳細なデバッグ情報を記録し、INFO レベルのロギング レコードは一般的な実行情報を、WARN レベルのロギング レコードは警告情報を、そして ERROR レベルのロギング レコードはエラー メッセージを記録します。
4.イコールと==の違い
Java では、== とquals() の違いは次のとおりです。
- == は 2 つのオブジェクトの値が等しいかどうかを比較し、equals() は 2 つのオブジェクト参照が指す内容が等しいかどうかを比較します。
- == は 2 つのオブジェクトの参照アドレスを比較し、equals() は 2 つのオブジェクトの内容を比較します。
- クラスがequals()メソッドをオーバーライドしない場合、equals()メソッドを呼び出すことは、その親クラスのequals()メソッドを呼び出すことと同じです。クラスがequals()メソッドをオーバーライドする場合は、特定の状況に基づいて2つのオブジェクトを比較するためにequals()メソッドを使用する必要があるかどうかを判断する必要があります。
5. Java の IO ストリームについて簡単に説明する
Java IO ストリームはストリーミング データ入出力モデルであり、入出力データを効率的に処理する方法を提供します。Java IO ストリームは、バイト ストリームと文字ストリームの 2 種類に分類されます。バイトストリームはバイトを最小単位として読み書きされますが、文字ストリームは文字を最小単位として読み書きされます。Java IO ストリームには、InputStream、OutputStream、Reader、Writer などの多くのクラスが含まれており、各クラスには特定の目的があります。たとえば、FileInputStream と FileOutputStream はファイルの読み取りと書き込みに使用されますが、BufferedReader と BufferedWriter はデータをバッファリングして読み取りと書き込みの効率を向上させることができます。
6. json ファイルを処理するためのシナリオの質問が与えられる
7.Javaにはどのようなコレクションクラスがありますか?
Java のコレクション クラスは、Java データ構造の実装です。Java のコレクション クラスは、java.util パッケージの重要な部分であり、要素をさまざまな方法でグループ化できるようにし、これらの要素を操作しやすくするためのさまざまなメソッドを定義します。Java コレクション クラスは、いくつかの基本クラスと頻繁に使用される基本クラスを Java でカプセル化および拡張し、クラスの形式で提供します。コレクション クラスは、複数のオブジェクトを格納できるクラスです。オブジェクトを格納します。コレクション クラスが異なれば、異なる機能と特性があり、さまざまな場合に適しており、いくつかの実際的な問題を解決するために使用されます。
一般的に使用されるコレクション クラスには、List、Set、Map などが含まれます。このうち、List は順序付きで反復可能なコレクション、Set は順序なしで反復不可能なコレクション、Map はキーと値のペアの形式のコレクションです。
8. どれがスレッドセーフでどれがアンセーフなのか (前の質問からの続き)
Java のコレクション クラスは、スレッドセーフと非セーフに分類されます。スレッド セーフとは、マルチスレッド環境において、コレクション クラスがデータ損失やデータ エラーなどの問題なく期待どおりに動作することを意味します。安全でないコレクション クラスは、マルチスレッド環境でデータ損失やデータ エラーなどの問題を引き起こす可能性があります。
一般的に使用されるスレッドセーフなコレクション クラスには、Vector、HashTable、Properties などが含まれますが、一般的に使用されるスレッドセーフなコレクション クラスには、ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap などが含まれます。
9. スレッド プールの機能は何ですか?
スレッド プールは、データベース接続プール、HTTP 接続プールなどと同様のプーリング テクノロジです。プーリングの考え方は主に、リソースの取得と終了のそれぞれの消費を削減し、リソースの使用率を向上させることです。例えば、水を汲むのが不便な辺鄙な地域では、人々は時々水を汲んでプールに貯め、使用するときに直接汲むことができます。スレッド プールも同様で、スレッドの作成と破棄のたびに多くのシステム リソースが消費されるため、スレッドを一元的に管理するためにこのようなプールを構築します。使うときはプールから取り出し、使わないときは元に戻すだけで、壊す必要がなく、とても便利ではないでしょうか。
スレッド プールの主な機能は次のとおりです。
- スレッドの作成が多すぎることによって引き起こされるメモリ オーバーフローの問題を回避します。
- リソースの消費を削減します。
- スレッドを再利用し、スレッドとタスクを簡単に管理し、スレッドの作成とタスクの実行を分離します。
- 同時に実行するスレッドの数を制御して、過剰なシステム リソースの使用や、スレッドが多すぎることによるクラッシュを回避します。
10.Javaのガベージコレクション機構 gc
11.MySQL シナリオの質問: 学生テーブル内の学生の総数を確認し、学生テーブル内の Zhang という名前の学生を確認し、最も高いスコアを持つ学生を確認します。
1) 学生テーブル内の学生の総数を確認します。
SELECT COUNT(*) FROM 学生表;
2) 姓が Zhang の学生リストを確認します。
SELECT * FROM 学生表 WHERE 姓名 LIKE '张%';
3) 最高得点の生徒を確認します。
SELECT * FROM 学生表 WHERE 成绩 = (SELECT MAX(成绩) FROM 学生表);
12.Linux でよく使用されるコマンド (ここでは vim について言及しました)
Vim 是一个强大的文本编辑器,它在终端中运行,并且有着丰富的功能和快捷键。以下是一些 Vim 的常见命令:
1. **打开文件和保存文件**:
- 打开文件:`vim 文件名`
- 保存文件:在普通模式下,输入 `:w` 并按 Enter 键
- 保存并退出:在普通模式下,输入 `:wq` 并按 Enter 键
- 不保存并退出:在普通模式下,输入 `:q!` 并按 Enter 键
2. **普通模式(Normal Mode)**:
- 进入普通模式:按下 `Esc` 键
- 移动光标:使用方向键或以下快捷键:
- `h`:左移
- `j`:下移
- `k`:上移
- `l`:右移
- 删除字符:
- `x`:删除光标下的字符
- 复制和粘贴:
- `yy`:复制当前行
- `p`:粘贴
- 撤销和重做:
- `u`:撤销
- `Ctrl + r`:重做
3. **插入模式(Insert Mode)**:
- 进入插入模式:
- `i`:在光标前插入
- `a`:在光标后插入
- `I`:在当前行的开头插入
- `A`:在当前行的末尾插入
- 退出插入模式:按下 `Esc` 键
4. **可视模式(Visual Mode)**:
- 进入可视模式:
- `v`:按字符选中文本
- `V`:按行选中文本
- 复制选中文本:按 `y`
- 剪切选中文本:按 `x` 或 `d`
- 粘贴:在普通模式下按 `p`
5. **搜索和替换**:
- 搜索:在普通模式下,输入 `/`,然后输入要搜索的文本,按 Enter 键。可以使用 `n` 和 `N` 来浏览搜索结果。
- 替换:在普通模式下,输入 `:%s/要替换的文本/替换成的文本/g` 来替换全文中的匹配项。
6. **跳转和撤销**:
- 跳转到行号:在普通模式下,输入 `:`,然后输入行号,按 Enter 键。
- 撤销:在普通模式下,输入 `u`。
7. **保存和退出**:
- 保存文件:在普通模式下,输入 `:w` 并按 Enter 键。
- 保存并退出:在普通模式下,输入 `:wq` 并按 Enter 键。
- 不保存并退出:在普通模式下,输入 `:q!` 并按 Enter 键。
13. vim を使用してファイル内のすべての test を dev に置き換える方法
:%s/test/dev/g
14. 最新に変更された 10 個のファイルを表示する方法 (表示するには ls を使用します)
ls -lt | head -n 10
这个命令的作用是:
ls -lt:列出当前目录下的文件和子目录,按照修改时间从新到旧的顺序排序。
-l:以长格式显示文件信息,包括文件权限、所有者、大小、修改时间等。
-t:按照修改时间排序。
head -n 10:从排序后的文件列表中取前 10 行,即显示最新修改的十个文件。
这样,你就可以看到最新修改的十个文件的列表,它们将按照修改时间从新到旧的顺序显示在终端中。如果你想查看不同数量的文件,只需更改 head 命令中的数字即可。
例如,如果你想查看最新修改的五个文件,可以使用 head -n 5。
15. 現在のディレクトリが占有しているディスク容量を確認するにはどうすればよいですか?
du -sh .
这个命令的作用是:
du:表示计算磁盘使用情况。
-s:表示汇总结果,只显示目录的总大小而不显示子目录的大小。
-h:以人类可读的格式显示文件大小,以 K、M、G 等单位表示。
.:表示当前目录。
16. 現在のプロセスが占有しているメモリの量を確認する方法
ps aux
如果你要查看特定进程的内存占用情况,你可以使用 grep 命令来筛选出相关信息。假设你知道要查找的进程名称,
例如 myprocess,则可以使用如下命令:
ps aux | grep myprocess
17. top をご存知ですか? top を使用すると、メモリがどれだけ占有されているかを確認できます。
默认情况下,top 会显示所有运行的进程,按照 CPU 使用率排序。你可以按 Shift+M 来按照内存使用率排序,
以便查看占用内存最多的进程在列表的顶部。
top 会实时更新进程列表和资源使用情况。你可以在列表中看到每个进程的 PID(进程标识符)、内存使用量(RES 列)
、内存使用率(%MEM 列)等信息。
若要退出 top,可以按下 q 键。
18. ポート番号がわかったら、pid をどのように確認しますか?
netstat -tuln | grep 端口号
sudo lsof -i :端口号
19.awk コマンド grep コマンド
20. ログ ファイルがある場合、ログ ファイルにエラー情報が含まれているかどうかを確認する方法。
grep "error" 文件名
21.メモリリークとは何ですか?
サーバー メモリ リークは、サーバー アプリケーションが実行中にメモリを解放せずに割り当て続けると発生します。その結果、サーバーのメモリ使用量が徐々に増加し、最終的には使用可能なメモリが枯渇して、サーバーのパフォーマンスの低下やクラッシュが発生する可能性があります。メモリ リークは一般的なソフトウェアの問題であり、通常は慎重な診断と修復が必要です。
22.サーバーについて何を知っていますか?
「サーバー」とは一般に、クライアントの要求を満たすためにサービス、リソース、またはデータを他のコンピュータまたはデバイスに提供するコンピュータ ネットワーク内のハードウェアまたはソフトウェアを指します。サーバーはネットワーク内で重要な役割を果たし、データの保存と管理、ネットワーク サービスの提供、Web サイトのホスティング、アプリケーションのサポートなど、さまざまな目的に使用されます。
サーバーに関する一般的な概念をいくつか示します。
-
ハードウェア サーバー: これは、サーバー ソフトウェアを実行し、さまざまなサービスを提供するために使用される物理サーバー (通常は専用コンピューター) を指します。ハードウェア サーバーには、ラック サーバー、タワー サーバー、ブレード サーバーなど、さまざまな形式があります。
-
仮想サーバー: 仮想サーバーは、仮想化テクノロジーによって物理サーバー上に作成される仮想インスタンスです。1 台の物理サーバーで複数の仮想サーバーをホストでき、各仮想サーバーは独立したオペレーティング システムとアプリケーションを実行できます。
-
サーバー ソフトウェア: サーバー ソフトウェアは、ネットワーク サービス、データベース サービス、ファイル共有などのさまざまなサービスを提供するためにサーバー ハードウェアにインストールされるアプリケーションです。一般的なサーバー オペレーティング システムには、Linux、Windows Server などが含まれます。
-
Web サーバー: Web サーバーは、Web サイトをホストし、Web コンテンツをクライアント ブラウザーに提供するために使用される特別なタイプのサーバーです。一般的な Web サーバーには、Apache、Nginx、IIS などが含まれます。
-
データベース サーバー: データベース サーバーは、データベースの保存と管理に使用されるサーバーであり、クライアント アプリケーションがデータベース内のデータにアクセスして操作できるようにします。一般的なデータベース サーバーには、MySQL、PostgreSQL、Oracle などが含まれます。
-
アプリケーション サーバー: アプリケーション サーバーは、アプリケーションのホストと実行に使用されるサーバーであり、通常はビジネス ロジックとアプリケーションのバックエンド処理をサポートします。Tomcat、WebLogic などの Java アプリケーション サーバーや、Node.js などのアプリケーション サーバーが一般的な例です。
-
ファイル サーバー: ファイル サーバーは、ファイルの保存と共有に使用されるサーバーであり、複数のユーザーがサーバーに保存されているファイルとリソースにアクセスして共有できるようにします。
-
クラウド サーバー: クラウド サーバーは、クラウド コンピューティング プラットフォーム上で実行される仮想サーバー インスタンスであり、通常はクラウド サービス プロバイダーによってホストおよび管理されます。ユーザーは必要に応じてクラウド サーバーを作成、構成、拡張できます。
サーバーは企業およびインターネット アプリケーションで重要な役割を果たし、ユーザーが情報にアクセスして共有できるようにする信頼性の高いリソースとサービスを提供します。物理サーバーでも仮想サーバーでも、さまざまなニーズと規模に基づいて適切なサーバー アーキテクチャと構成が選択されます。
23. サーバーに mysql サービスをデプロイする方法
24. SSH コマンドは何のためにありますか?
SSH (Secure Shell) は、コンピュータ システムに安全にリモート アクセスして管理するために使用されるネットワーク プロトコルおよび暗号化テクノロジです。SSH の主な用途には次のような側面が含まれます。
-
リモート ログイン: SSH を使用すると、ユーザーはローカル コンピュータからリモート コンピュータ システムに安全にログインできます。これは通信を暗号化することで実現され、ユーザー名やパスワードなどの機密データが送信中に保護されます。SSH リモート ログインは、リモート サーバー、ネットワーク デバイス、クラウド コンピューティング インスタンスの管理に一般的に使用されます。
-
ファイル転送: SSH を使用すると、ファイルのアップロードやダウンロードなど、ファイルを安全に転送できます。一般的な使用例は、
scp
(Secure Copy Protocol) コマンドを使用することです。これは SSH に基づいており、ローカル コンピューターとリモート サーバーの間でファイルをコピーするために使用されます。たとえば、ファイルをローカル サーバーからリモート サーバーにコピーします。
-
scp 文件名 用户名@远程服务器IP:目标路径
リモートサーバーからローカルにファイルをコピーする
-
scp 用户名@远程服务器IP:远程文件路径 本地目标路径
-
リモート コマンド実行: SSH を使用すると、ユーザーはリモート システムに直接ログインせずに、リモート コンピュータ上でコマンドを実行できます。これは、自動化タスクやバッチ処理タスクに役立ちます。コマンドを使用して
ssh
、リモート システム上でコマンドを実行します。次に例を示します。 -
ssh 用户名@远程服务器IP "远程命令"
-
ポート転送: SSH はポート転送をサポートしており、ユーザーは安全な通信トンネルでトラフィックを送信できます。これは、機密性の高いサービスを保護したり、制限されたリソースにアクセスしたりする場合に役立ちます。SSH は、ローカル ポート フォワーディングとリモート ポート フォワーディングを実行できます。
-
暗号化通信: SSH は暗号化テクノロジーを使用して、通信の機密性と完全性を保護します。これにより、ハッカーがデータ通信を盗聴したり改ざんしたりすることが困難になります。SSH は通常、認証に公開キーと秘密キーのペアを使用して、許可されたユーザーのみがシステムにアクセスできるようにします。
つまり、SSH は、リモート ログイン、ファイル転送、リモート コマンド実行などのタスクに使用される安全なリモート管理プロトコルであり、ネットワークとシステムの管理、特に機密データとシステム セキュリティの保護において重要な役割を果たします。
25. プロジェクトを git にアップロードする方法と競合を解決する方法について話す
プロジェクトを Git にアップロードして競合を解決するには、通常、次の手順が必要です。この例では、ローカル コンピューター上に Git リポジトリを作成し、それをリモート リポジトリにプッシュする必要があり、プッシュ時に競合が発生する可能性があると想定しています。
プロジェクトを Git にアップロードする手順 (リモート リポジトリにプッシュする):
-
リポジトリの初期化: プロジェクトが Git リポジトリとして初期化されていない場合は、次のコマンドを実行してください。
git init
2. ファイルの追加: プロジェクト内のファイルを Git ウェアハウスのステージング領域に追加します。
git add .
これにより、すべての変更がステージング領域に追加されます。これは、特定のファイルのみを追加する場合に使用できます git add 文件名
。
3. 変更を送信: ステージング領域の変更をローカル ウェアハウスに送信し、コミット メッセージを追加します。
git commit -m "提交消息"
4. リモート ウェアハウスに接続します。ローカル ウェアハウスをリモート ウェアハウスに関連付け、リモート ウェアハウスのアドレスを追加します。
git remote add origin 远程仓库地址
例えば:
git remote add origin https://github.com/你的用户名/你的仓库.g
それ
5. リモート ウェアハウスへのプッシュ: 変更をローカル ウェアハウスからリモート ウェアハウスにプッシュします。
git push -u origin 主分支名称
例えば:
git push -u origin main
これにより、プロジェクトがリモート リポジトリにアップロードされます。-u
今後のプッシュおよびプルのためにローカル master ブランチをリモート master ブランチに関連付けるオプション。
競合を解決する手順:
プロジェクトをプッシュするときに競合が発生した場合、通常、リモート リポジトリ内の変更がローカルの変更と競合することが原因です。競合を解決する手順は次のとおりです。
-
最新の変更をプルする: 競合を解決する前に、まずリモート リポジトリから最新の変更をプルします。
-
git pull origin 主分支名称
例えば
-
git pull origin main
これにより、リモート リポジトリからの変更がローカルにマージされます。
-
競合を解決する: 競合を含むファイルを開くと、通常、競合している部分が次のようなタグで囲まれていることがわかります。
<<<<<<< HEAD
本地更改
=======
远程更改
>>>>>>> 远程/分支名称ファイルを手動で編集して、必要な変更を維持し、必要のない部分を削除する必要があります。競合を解決した後、ファイルを保存します。
-
解決済みとしてマークする: 競合が解決されたら、次のコマンドを使用してファイルを解決済みとしてマークします。
-
git add 文件名
-
変更をコミット: 競合解決後に変更をコミット
-
git commit -m "解决冲突"
-
変更をプッシュ: 競合解決後の変更をリモート ウェアハウスにプッシュします。
-
git push origin 主分支名称
例えば:
-
git push origin main
26. プロジェクトをさらに深く掘り下げる
最後に:以下の完全なソフトウェア テスト ビデオ チュートリアルが編集され、アップロードされています。必要な友人は自分で入手できます[100% 無料保証]
ソフトウェアテスト面接文書
私たちは高給の仕事を見つけるために勉強しなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料からのものであり、バイトの上司の中には権威ある回答をしている人もいます。 set 面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。