【day04】每天3道java后端面试题:final关键字 | HTTP协议 | 进程和线程

1. Java 中 final 关键字有什么用?

  • 在 Java 中,final 关键字用于表示一个不可变的常量或一个不可变的变量

  • 在 Java 中,final 关键字可以修饰类、方法和变量,作用如下:

    1. final 修饰类,表示该类不能被继承。final 类中的方法默认都是 final 的,不能被子类重写。

    2. final 修饰方法,表示该方法不能被子类重写。

    3. final 修饰变量,表示该变量只能被赋值一次。

    4. final 修饰的变量必须在声明时或构造函数中初始化,且不能再被修改。常用于定义常量。

      另外,使用 final 修饰的变量在编译时就已经确定了其值,因此在运行时访问时比非 final 变量更快。

  • 使用 final 关键字可以带来一些好处,例如:

    1. 安全性:将变量声明为 final 可以防止它被改变,从而提高安全性。

    2. 可读性:将常量声明为 final 可以提高代码的可读性,因为常量的值不会被修改。

    3. 优化:final 变量在编译时被转换成常量,这可以提高程序的性能。

      总之,final 关键字在 Java 中非常有用,可以提高程序的安全性、可读性和性能。

  • 源码中常见的final

    1. 修饰的类:包装类、String类;
      包装类:Java中的包装类用于将原始类型(int,char,float等)转换为相应的对象。8个基本类型中的每一个都有对应的包装器类。包装类讲解文章

    2. 修饰的方法:object 中的 wait(), notify()。方法介绍

    3. 修饰的变量:String 低层的 value 数组, util 中要被固定下来的数据

2. HTTP 是哪一层的协议?简述它的作用?

HTTP 是应用层协议,主要用于在 Web 浏览器和 Web 服务器之间传递数据。它是一种无状态的协议,即服务器不会保存关于客户端的任何信息,每次客户端发送请求,服务器都会返回响应。HTTP 协议通常基于 TCP 协议,使用 TCP 的 80 端口作为默认的传输端口。总之,HTTP 协议的作用是规定了 Web 应用程序中客户端和服务器之间的通信方式和数据传输格式,是支持 Web 应用程序开发的基础协议。

HTTP 协议主要作用包括:

  1. 建立连接:客户端与服务器建立 TCP 连接,然后发送 HTTP 请求,服务器接收请求并处理。

  2. 发送请求:客户端发送HTTP请求到服务器,包括请求方法(GET、POST、PUT等)、请求头(如User-Agent、Accept等)和请求正文(可选)等信息。

  3. 处理请求:服务器接收并解析 HTTP 请求,执行请求操作(如查询数据库等),并将处理结果返回给客户端。

  4. 返回响应:服务器返回HTTP响应,包括响应状态码(如200 OK、404 Not Found等)、响应头(如Content-Type、Cache-Control等)和响应正文(可选)等信息。

    HTTP 的状态码指示了服务器对请求的处理结果。常见的状态码包括 200 OK(请求成功)、301 Moved Permanently(永久重定向)、404 Not Found(未找到资源)和 500 Internal Server Error(服务器内部错误)等。

  5. 关闭连接:客户端接收到响应后,关闭TCP连接。

HTTP 的请求报文主要包括以下几个部分:

  • 请求行:包括请求方法、URL 和 HTTP 协议版本。

  • 请求头:包括一些请求头部信息,例如 User-Agent、Host 等。

  • 空行:表示请求头结束。

  • 请求体:实际请求的数据,例如表单提交的数据等。

HTTP 的响应报文主要包括以下几个部分:

  • 状态行:包括 HTTP 协议版本、状态码和状态消息。

  • 响应头:包括一些响应头部信息,例如 Server、Content-Type、Content-Length 等。

  • 空行:表示响应头结束。

  • 响应体:实际响应的数据,例如网页的 HTML 代码、图片、音频等。

3. 什么是进程和线程?它们有哪些区别和联系?

在操作系统中,进程是指一个正在执行中的程序,而线程是进程的一部分,是一个程序中执行的代码片段。

进程是操作系统资源分配的最小单位,一个进程至少包括一个线程,进程拥有自己的内存空间、文件句柄、环境变量等系统资源。进程间相互独立,互不干扰,每个进程都拥有自己的地址空间。进程通信需要通过进程间通信机制(IPC)来实现。

线程是程序执行的最小单位,一个进程中可以包含多个线程,它们共享进程的内存空间和系统资源。多个线程可以并发执行,从而提高了程序的运行效率,同时也会带来线程安全等问题。线程之间的通信可以通过共享内存、信号量等机制实现。

进程和线程的区别和联系如下:

  • 资源分配:进程拥有自己的内存空间等系统资源,而线程共享进程的资源;

  • 独立性:进程之间相互独立,互不干扰,而线程是进程的一部分,线程之间共享进程的资源;

  • 调度:进程间调度的开销比线程大,线程的调度开销小,可以并发执行;

  • 并发性:多个进程之间相互独立,多个线程可以并发执行;

  • 同步:进程间通信需要通过IPC机制,线程间同步可以通过共享内存、信号量等机制实现。

在实际开发中,多线程应用更加常见,因为线程的开销小,执行效率高,适用于需要并发执行的场景。但需要注意线程安全问题。而多进程应用通常更加稳定,但开销较大,适用于需要独立运行的场景。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuwuuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值