新入生が重慶6.5Kjava開発のポジションを獲得しました。このインタビューの質問を組み合わせることは妥当だと思いますか?

画像の説明を追加してください
画像の説明を追加してください

答えは整理されています

1.ハッシュマップとハッシュテーブルの違い

  • 同じ点:
  1. これらはすべてマップ実装クラスであり、すべてキーと値のペアのコレクションです。
  2. 内部の要素は、追加の順序に関係なく、すべて無秩序です。
  • 差:
  1. HashMapでは、1つのnullキーと複数のnull値を使用できます。

  2. HashMapはスレッドセーフではなく、HashTableはスレッドセーフです。

一般的に、これを要求する人はそこで止まらず、マルチスレッド化、拡張メカニズム、ConcurrentHashMapなどの一連の問題を伴う場合もあります。

2. Ajaxリクエストを手書きする

<script>
	$.ajax({
    
    
		type: "post", //type可以为post也可以为get
		url: "www.baidu.com",
		data: {
    
    
			"username": username
		}, 
		async: false,//ture同步 false异步 一般没人会弄成异步
		dataType: "json", //这里要注意如果后台返回的数据不是json格式,那么就会进入到error:function(data){}中
		success: function(data) {
    
    
		},
		error: function(data) {
    
    
		},
		complete: function(data) {
    
    
			alert("必执行、相当于java抛异常中的finally、一般不常用")
		}
	});
</script>

3.フィボナッチを再帰的に実装し、30番目の数を出力しますか?

フィボナッチシーケンス:1、1、2、3、5、8、13、21、34、...つまり、このシーケンスは3番目のアイテムから始まり、各アイテムは最初の2つのアイテムの合計に等しくなります。

再帰:

public static void main(String[] args) {
    
    
			System.out.println(digui(30));
	}
	public static int digui(int n) {
    
    
		if (n == 1 || n == 2)
			return 1;
		else
			return digui(n - 1) + digui(n - 2);
	}

動的プログラミング:

public class 斐波那契数列 {
    
    
	public static int f(int n) {
    
    
		if(n==0) {
    
    
			return 0;//初始值为0
		}
		if(n==1) {
    
    
			return 1;//定义f(1)为1,否者结果都是0;
		}
		int result=0;
		int r1 = 0;
		int r2 = 1;
		for(int i = 2;i<=n; i++) {
    
    //斐波那契数列求解f(n)
			result = r1+r2;
			r1=r2;
			r2=result;
		}
		return result;//返回结果
	}
	public static void main(String[] args) {
    
    
		System.out.println("请输入一个不超过39的整数:");
		Scanner s=new Scanner(System.in);//从键盘输入
		int n;
		n=s.nextInt();
		double startTime=System.currentTimeMillis();
		System.out.println(f(n));
		double endTime=System.currentTimeMillis();
		System.out.println("执行时间:"+(endTime-startTime)+"ms");//测试时间
	}
}

4.クロスドメインを実現するには?(前部と後部は分かれていますか?)

  1. jsonp
    はスクリプトを使用し、同一生成元のポリシーによる制限を受けません。
    欠点:getメソッドのみであり、XSS攻撃に対して脆弱です
  2. CORS(Cross-Origin Resource Sharing)、クロスドメインリソース共有
    XMLHttpRequestを使用してリクエストを送信する場合、ブラウザが同じ生成元のポリシーに違反していることを検出すると、リクエストヘッダーのオリジンを自動的に追加します。
    バックエンドは、リクエストの受信後に応答を確認しますバックエンドがリクエストを受信して​​レスポンスを確認すると、属性Access-Control-Allow-Originがレスポンスヘッダーに追加されます。
    ブラウザは、レスポンスのAccess-Control-Allow-Origin値が現在のアドレスと同じであるかどうかを判断し、一致は成功しますその後に処理を応答すると、エラーが報告されます。
    欠点:Cookieを無視し、ブラウザのバージョンには特定の要件があります
  3. クロスドメインリクエストのプロキシ。
    フロントエンドがプロキシ経由でサーバーにリクエストを送信し、必要なサーバーリソースをリクエストします。
    欠点:追加のプロキシサーバーが必要です
  4. HTML5 postMessageメソッドを
    使用すると、さまざまなソースのスクリプトで非同期モードの通信を使用して、クロステキスト、マルチウィンドウ、クロスドメインメッセージングを実現できます。
    欠点:ブラウザのバージョン要件、一部のブラウザは、クロスドメインの制限を緩和するように設定する必要があります
  5. サブドメイン間でdocument.domainを変更します
    。同じメインドメイン名の下の異なるサブドメインリソース、document.domainを同じ第1レベルドメイン名に設定します。
    欠点:同じ第1レベルドメイン名、同じプロトコル、同じポート
  6. Html5 websocketプロトコルに基づく
    websocketはHtml5の新しいプロトコルです。このプロトコルに基づいて、ブラウザーはサーバーと全二重で通信できるため、クロスドメインリクエストが可能です。
    欠点:ブラウザーには特定のバージョンが必要で、サーバーはwebsocketプロトコルをサポートする必要があります。
  7. document.xxx + iframe
    は、iframeを介したブラウザの同じ原点でないタグです。コンテンツが読み込まれ、現在のページの属性に転送されます。
    欠点:ページの属性値にはサイズ制限があります

5. postとgetの違い

  1. GETによって送信されたデータはURLに配置されますが、POSTでは配置されません。これが最も明らかな違いです。これは、GETの方が安全ではないことを意味します(POSTも安全ではありません。HTTPはデータコンテンツを取得するためのパケットのクリアテキスト送信であるため、安全にしたい場合は暗号化する必要があります)
  2. GETロールバックはブラウザーに無害です。POSTはリクエストを再度送信します(GETメソッドがロールバックした後、ブラウザーは結果をキャッシュし、POSTは毎回新しいリソースを作成します)
  3. GETによって送信されるデータのサイズは制限されています(ブラウザーにはURLの長さに制限があるため、GET自体には制限がないため)、POSTは
  4. GETはブックマークとして保存できますが、POSTは保存できません。これも感じられます。
  5. GETはキャッシュできますが、POSTはできません
  6. GETはASCII文字のみを許可し、POSTには制限がありません
  7. GETはブラウザの履歴に保存されますが、POSTは保存されません。これも感じられます。

つまり、2つの間に本質的な違いはなく、違いはデータストレージの場所にあります。それぞれに独自の適用可能な環境があるため、ニーズに応じて適切な方法を選択してください。

6.SQLのグループ化と並べ替えクエリ

グループ化:GROUP BYフィールド
ソート:ORDER BYフィールド

7.同期とロックの違い。

  1. ロックはタイムアウトメカニズムを提供します。
    タイムアウトメカニズムを使用すると、ロックを待機するデッドループに陥ることなく、プログラムをより柔軟に制御できます。ロックが特定の時間内に取得されない場合、スレッドは解放され、次のことを続行し、同期が増加するとロック、それは死んで待機するので、この状況ではデッドロックが発生する可能性があります。
  2. ロックされたスレッドは割り込みに応答できます。
    同期されたスレッドはロックの取得に失敗するとブロックされますが、ブロックされた状態のスレッドは割り込みに応答できず(割り込み)、ロックは割り込み応答をサポートします。スレッドを中断します。
  3. ロックは、ロックの非ブロック取得を
    サポートしますロックは、ロックの非ブロック取得をサポートします。この方法でロックを取得すると、ロックの取得が成功したかどうかを返します。ロックの取得に失敗した場合、スレッドはブロックされません。
  4. Lock + Conditionは複数の条件をサポートできます
    。Synchronizedは待機キューを1つだけ持っています。ブロッキングは1つのキューに配置されます。ロックは複数の条件キューを作成できます。異なる条件は異なる条件を制御します。各条件には個別の条件があります。キュー。

8.レイヤー7におけるtcpとftpの位置

  • 最初の層:物理層
  • 2番目のレイヤー:データリンクレイヤー802.2、802.3ATM、HDLC、フレームリレー
  • 第3層:ネットワーク層IP、IPX、APPLETALK、ICMP
  • 第4層:トランスポート層TCP、UDP、SPX
  • 第5層:セッション層RPC、SQL、NFS、X WINDOWS、ASP
  • 第6層:プレゼンテーション層ASCLL、PICT、TIFF、JPEG、MIDI、MPEG
  • 第7層:アプリケーション層HTTP、FTP、SNMPなど

9.トランザクションの酸、MySQLはどのように原子性を実現するか

  • 原子性
  • 整合性(整合性)
  • 隔離
  • 耐久性(耐久性)

トランザクションは正常に送信されるか、すべて失敗してロールバックされます。操作の一部のみを実行することはできません。これはトランザクションのアトミック性です

拡張接続:より太字のスタイルについては、ここをクリックしてください

ブロガーのパブリックアカウントプログラマXiaoyang は、インタビュー関連のツイートのみを投稿します
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44395707/article/details/106526000