Skip to main content

知识题

二维数组的存储地址​

Knowledge-二维数组存储地址

wait()、notify()、notifyAll()​

1、wait(), notify(), 和 notifyAll() 方法是 Object 类中定义的 final 方法,因此不能被子类重写。这些方法用于实现线程之间的协调和通信,主要用于实现线程的等待和唤醒机制
2、wait(): 当一个线程调用对象的 wait() 方法时,它将进入等待状态,直到其他线程调用相同对象的 notify() 或 notifyAll() 方法来唤醒它,或者等待的时间到达。
3、notify(): 用于唤醒等待在该对象上的单个线程,如果有多个线程在等待,则只能唤醒其中一个线程,具体唤醒哪个线程取决于线程调度器。
4、notifyAll(): 用于唤醒等待在该对象上的所有线程,让它们有机会去竞争锁,以便继续执行。
5、这些方法通常与 synchronized 关键字一起使用,以实现多线程之间的协调和同步

GET和POST请求​

-- GET和POST浏览器缓存问题
1、通常情况下,GET 请求可以被浏览器主动缓存,而 POST 请求则不会被浏览器主动缓存。
2、GET 请求的响应通常是幂等的,也就是说,同样的请求返回的内容是相同的。因此,浏览器可以安全地将 GET 请求的响应存储在缓存中,以便在以后的请求中重用相同的响应。这可以提高性能并减少网络流量。
3、POST 请求的响应通常不会被缓存,因为 POST 请求的结果可能是非幂等的,它可能会导致状态的改变或者其他副作用。因此,浏览器通常不会缓存 POST 请求的响应,以确保每次请求都能获取到最新的数据或状态。
4、然而,可以通过设置 HTTP 响应头来指示浏览器是否可以缓存请求的响应。例如,可以通过设置 Cache-Control 和 Expires 等头部来控制缓存行为。
-- GET和POST浏览器回退问题
1、GET在浏览器回退不会再次请求,POST会再次提交清求。
2、对于 GET 请求,浏览器会尝试从缓存中加载页面,而不会再次向服务器发送请求。这是因为 GET 请求的响应通常被允许缓存,浏览器会尝试使用缓存来提高性能。
3、对于 POST 请求,浏览器会警告用户数据可能会被重新提交,并询问用户是否确认重新提交。这是因为 POST 请求通常用于向服务器提交数据,重新提交可能会导致不必要的副作用,如重复提交订单或重复创建资源。
4、需要注意的是,虽然浏览器会警告用户重新提交 POST 请求,但并不是所有浏览器都提供相同的行为,具体行为可能会因浏览器的不同而有所不同。
-- GET和POST浏览器请求参数历史记录问题
1、一般情况下,GET 请求的参数会被完整保留在浏览器的历史记录中,而 POST 请求的参数通常不会保存在浏览器的历史记录中。
2、当用户使用浏览器的回退或前进按钮导航浏览历史记录时,GET 请求的 URL 中的参数会被包含在请求中,因此用户可以重新访问具有相同参数的页面。这样可以方便用户在浏览器历史记录中找回之前的请求。
3、POST 请求的参数通常不会被保存在浏览器的历史记录中。这是因为 POST 请求通常用于向服务器提交敏感数据,例如表单提交,将这些参数保存在浏览器历史记录中可能会导致安全风险和隐私问题。因此,浏览器通常不会将 POST 请求的参数保存在历史记录中,以保护用户的数据安全。

静态语句块和静态变量​

1、静态变量和静态初始化块的初始化顺序与它们在代码中的声明顺序有关。
2、静态变量:静态变量按照代码中的声明顺序依次初始化。当类加载时,静态变量会按照声明顺序依次赋予初始值或者被执行初始化代码。
3、静态初始化块:静态初始化块也按照代码中的声明顺序执行。当类加载时,静态初始化块会按照声明顺序依次执行。

volatile​

-- 工作原理
1、可见性(Visibility):当一个线程修改了 volatile 变量的值,新值会立即被其他线程看到。这是因为 volatile 变量会强制被线程从主存中读取,而不是从线程的工作内存中读取,从而确保了所有线程看到的值都是最新的。
2、禁止指令重排序:volatile 变量的读写操作不能和其前后的指令重排序,保证了代码的执行顺序符合预期。

HTTP错误码​

-- 302
1、HTTP状态码302表示临时重定向(Temporary Redirect)。当服务器收到客户端的请求后,会返回302状态码和一个Location头部,告诉客户端资源临时被转移到另一个位置。客户端会根据Location头部的地址重新发起请求。
2、简单来说,302状态码告诉客户端请求的资源暂时性地被转移到另一个位置,客户端需要重新发送请求到新的地址。
3、这种重定向通常用于临时性的资源位置更改,而不是永久性的。如果资源的位置永久性改变,应该使用301状态码。
-- 206
1、HTTP状态码206表示部分内容(Partial Content)。这个状态码是在客户端发送了一个带有Range头部的GET请求,服务器成功处理了这个请求并且响应包含了请求范围内的部分内容。这种情况通常发生在客户端需要下载大文件的一部分时,或者在视频流等媒体文件的分段传输中。
2、当客户端发送一个请求,并在请求头部包含Range字段来指定所需的内容范围时,服务器会返回206状态码,并且在响应头部包含Content-Range字段,指示返回内容的范围。这允许客户端在多次请求中逐步获取整个资源,而不需要一次性下载整个文件。