7.10 面试题理解

今天看了一些基础的面试题

输入一个网址跳转到页面的过程,协议

跳转到一个网址页面的过程通常涉及以下几个主要的步骤,其中包括网络协议的使用:

解析网址:

当用户在浏览器中输入一个网址时,首先需要将该网址进行解析,以确定目标服务器的地址和路径。
解析过程涉及域名解析(将域名转换为 IP 地址)和路径解析。
建立网络连接:

通过解析得到的IP地址,客户端向目标服务器发起网络连接请求。
建立网络连接的过程中,使用的协议通常是TCP/IP协议。
发起HTTP请求:

一旦建立了网络连接,客户端会向服务器发送HTTP请求。
HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在客户端和服务器之间传输超文本文档。
服务器处理请求:

服务器接收到客户端发送的HTTP请求后,会根据请求的内容和方式进行相应的处理。
服务器可能需要处理请求参数、执行业务逻辑、读取数据库等操作。
服务器生成响应:

服务器根据请求的处理结果生成HTTP响应。
响应包括状态码、响应头和响应体等信息。
响应传输:

服务器将生成的HTTP响应发送回客户端。
在传输过程中,使用的仍然是TCP/IP协议。
客户端接收响应:

客户端接收到服务器发送的HTTP响应。
客户端解析响应,提取其中的数据和元信息。
渲染页面:

客户端浏览器根据收到的响应数据进行页面的渲染。
渲染包括解析HTML、执行JavaScript、加载并显示页面资源等过程。
在上述流程中,网络协议起到了重要的作用。常用的网络协议包括TCP、IP、HTTP等,它们协同工作,确保了网址跳转过程的顺利进行。

Object类⾥有哪些⽅法?

Java中的所有类都直接或间接地继承自java.lang.Object类,因此Object类是所有类的根类。Object类提供了一些常用的方法,以下是Object类中的一些主要方法:

toString(): 返回对象的字符串表示。默认情况下,返回对象的类名和哈希码的十六进制表示。

equals(Object obj): 比较对象与指定对象是否相等。默认情况下,使用引用相等性进行比较,即两个对象的引用是否指向同一个内存地址。

hashCode(): 返回对象的哈希码。默认情况下,返回对象的内存地址的哈希码。

getClass(): 返回对象的运行时类。返回的是一个Class类型的实例。

notify(): 唤醒在此对象监视器上等待的单个线程。

notifyAll(): 唤醒在此对象监视器上等待的所有线程。

wait(): 导致当前线程等待,直到另一个线程调用该对象的notify()或notifyAll()方法,或者指定的时间过去。

finalize(): 在垃圾回收器执行对象回收之前调用,用于执行一些清理操作。

需要注意的是,Object类中的这些方法都是被protected修饰的,因此可以在继承Object类的子类中访问和重写这些方法。并且,Object类还定义了一些@Override注解,以便子类在需要的时候进行重写。

此外,除了上述列出的方法,Object类还包含了其他一些方法,例如clone()、finalize()、getClass()等,可以根据具体的需求查阅Java官方文档来获取更详细的信息
equals()和hashCode()是Java中用于比较对象相等性和生成哈希码的两个方法。它们在重写对象的时候常常需要一并重写。下面我简要介绍一下这两个方法的作用、重写时机、原因和方法。

equals()方法:

作用:用于比较两个对象是否相等。
默认行为:使用引用相等性,即只有当两个对象引用指向同一内存地址时才被认为是相等的。
重写时机:当我们希望根据对象的内容而不是引用地址来判断两个对象是否相等时,需要重写equals()方法。
重写原因:在业务逻辑中,我们可能更关心对象的属性是否相等,而不仅仅是引用地址。
重写方法:一般重写equals()方法需要满足以下原则:
自反性:x.equals(x) 应该返回 true。
对称性:x.equals(y) 和 y.equals(x) 结果应该一致。
传递性:如果 x.equals(y) 返回 true, y.equals(z) 也应返回 true,那么 x.equals(z) 应返回 true。
一致性:多次调用 x.equals(y) 结果始终一致。
非空性:x.equals(null) 应该返回 false。
hashCode()方法:

作用:生成对象的哈希码(整数),用于在散列数据结构中快速查找对象。
默认行为:默认情况下,hashCode() 返回的是对象的内存地址对应的哈希码。
重写时机:当我们重写了equals()方法时,通常也需要重写hashCode()方法,以保持一致性。
重写原因:作为对象在散列数据结构中的索引,hashCode()方法的结果应该与对象的相等性判断一致。
重写方法:一般重写hashCode()方法需要满足以下原则:
如果 x.equals(y) 返回 true,则 x.hashCode() 和 y.hashCode() 应该返回相同的值,保证一致性。
在计算哈希码时,可以使用对象的属性值,但需要保证相等的对象具有相同的哈希码。
在重写equals()和hashCode()方法时,可以使用IDE提供的工具来自动生成方法的重写代码,确保满足上述规范。

需要注意的是,重写equals()方法的同时,也应该重写对象的hashCode()方法,以避免在使用散列数据结构(如HashMap)时发生问题。同时,为了保持一致性,重写equals()方法时应该使用对象的属性进行比较,而不是使用==操作符进行引用的比较。

controller注解有哪些

在Spring框架中,用于标识控制器类的注解有以下几个:

@Controller:

@Controller用于标识一个类是Spring MVC的控制器,它处理用户的请求并返回响应。
它通常与@RequestMapping一起使用,用于处理Web请求并将请求映射到具体的处理方法。
@RestController:

@RestController是@Controller和@ResponseBody的组合注解。
它用于标识一个类是Spring MVC的控制器,并且所有的处理方法都会默认返回响应体,而不是视图。
@RestController常用于构建RESTful风格的Web服务。
除了上述的控制器注解,还有一些用于处理请求映射的注解:

@RequestMapping:

@RequestMapping用于映射请求到处理方法。
它可以应用于类级别和方法级别,用于定义类或方法可以处理的URL路径和请求方法。
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping 等:

这些注解是@RequestMapping的缩写形式,用于标识具体的请求方法类型。
@GetMapping映射HTTP GET请求,@PostMapping映射HTTP POST请求,@PutMapping映射HTTP PUT请求,@DeleteMapping映射HTTP DELETE请求。
除了以上常用的注解之外,还有其他一些标识控制器方法的注解,例如:

@PathVariable:用于获取URL路径中的变量值。
@RequestBody:用于将请求体的内容绑定到方法的参数上。
@RequestHeader:用于获取请求头的值。
@RequestParam:用于获取请求参数的值。
这些注解可以根据具体的业务需求和处理逻辑进行灵活使用,以实现不同类型的请求处理和数据绑定

你可能感兴趣的:(面试)