java技术面问题?

你了解数仓吗?

数仓(Data Warehouse)是一个企业或组织中用于集成、管理和存储各种数据的系统。它通常由多个数据源(如数据库、文件等)提供数据,并将数据转换为统一的格式,以便进行分析和决策支持。数仓一般包括以下几个方面:

  1. 数据抽取(Extraction):从各种数据源中提取数据,包括结构化数据(如数据库中的表格数据)和非结构化数据(如文本、图片等)。

  2. 数据清洗(Cleansing):对提取的数据进行清洗和处理,包括去重、删除无效数据、纠正数据错误等。

  3. 数据转换(Transform):将清洗后的数据转换为通用的格式,使其能够被数仓系统识别和处理。

  4. 数据加载(Loading):将转换后的数据加载到数仓中,包括全量加载和增量加载等方式。

  5. 数据存储(Storage):将加载后的数据存储在数仓中,通常采用关系型数据库或者列式数据库等方式进行存储。

  6. 数据查询与分析(Query and Analysis):为用户提供各种查询和分析工具,包括报表、数据挖掘、OLAP等技术,帮助用户从海量数据中获取有价值的信息和知识。

 谈谈加密算法

非对称加密又称为公钥密码,该技术是针对私钥密码体制(对称加密算法)的缺陷被提出来的,非对称加密会产生两把密钥,分别为公钥(Public Key)和私钥(Private Key),其中一把密钥用于加密,另一把密钥用于解密。非对称加密的特征是算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就高了很多。

对称加密又称但密钥加密,整个加密过程中只使用一个密钥。所谓对称其实就是使用一把密钥加密,使用同一把密钥解密。对称加密由于加解和解密使用的是同一个密钥算法,故而在加解密的过程中速度比较快,适合于数据量比较大的加解密。

对称加密的主要有优点就是算法公开、计算量小、加密速度快、加密效率高;但是它也存在强大的缺点,缺点就是密钥协商过程中,一旦密钥泄露,别人可以获取到密钥,这样也能对密文进行解密。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一密钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

网络篇

IOS七层网络模型是什么?

应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

应用层:应用层是由网络应用程序使用的,离用户最近的一层。应用层通过各种协议(FTP——文件传输协议;HTTP/S——网上冲浪协议;SMTP——邮件传输协议;Telnet——与虚拟端之间的通信协议),为网络应用提供服务(网络应用是指使用会互联网的计算机应用),执行用户活动。

表示层:表示层从应用层接受数据,这些数据是以字符和数字的形式出现的(如:Chinese、666),表示层将这些字符和数据,转换成机器能够理解的二进制格式(1001 0110),表示层的这个功能称为“翻译”功能,即把人类的语言翻译成机器能理解的语言。在传输数据之前,表示层减少了用来表示原始数据的比特数,也就是将原始数据进行了压缩,数据压缩减少了数据原始数据所需的空间,随着文件大小的减少,它就可以在很短的时间内到达目的地,数据压缩对实时视频和音频传输有很大的帮助,以保持完整性的数据传输前的数据加密。

会话层:会话层用于建立和管理连接、启用、发送和连接数据,就像你为聚会雇用助手一样,会话层也有自己的助手,也就是各种API或应用程序接口,还有NetBIOS,即网络基本输入输出系统,它允许不同计算机上的应用程序相互通信。

传输层:在会话层之下时传输层。传输层通过分段(Segmentation)、流量控制(Flow Control)和差错控制(Error Control)来控制通信的可靠性。

网络层:传输层将数据传递到网络层,网络层用于将接收到的数据段从一台计算机传输到不同网络中的另一台计算机,网络层的数据单元称为数据包(Packets),网络层的功能是进行逻辑寻址(Logical Addressing)、路由(Rout)和路径确定(Path Determination)。

数据链路层:数据链路层从网络层接收数据包,数据包包含了发送方和接受方的IP地址。有两种寻址方式:逻辑寻址和物理寻址。逻辑寻址在网络层已经完成,即在数据段(Segment)中添加了发送方和接收方的IP地址,以形成IP数据包。而物理寻址就是在数据链路层中完成的,其方法就是在IP数据包中添加发送方计算机和接收方计算机的物理地址:MAC,从而形成一个数据帧。MAC地址是由计算机制造商嵌入到计算机的,也是唯一的,我们的手机也有一个唯一的MAC地址

物理层:到现在为止,应用的“行为动作”已经通过传输层进行了分割,变成网络层的数据包和数据链路层的数据“帧”,现在是一种二进制序列了,最后在物理层将这些二进制序列转换成信号并在本地介质(铜缆、光纤、无线信号等)上传输,并在目标计算机应用层上显示数据。

Tcp三次握手是什么原理,以及标识码的作用?

源端口和目的端口
  • 各占2个字节,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。有时一个IP地址和一个端口号也称为socket(插口)。
序号(seq)
  • 占4个字节,是本报文段所发送的数据项目组第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。例如,一报文段的序号为300,而且数据共100字节,
  • 则下一个报文段的序号就是400;序号是32bit的无符号数,序号到达2^32-1后从0开始。
确认序号(ack)
  • 占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;确认序号应该是上次已成功收到数据字节序号+1。
  • 只有ACK标志为1时,确认序号才有效。
数据偏移
  • 占4比特,表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。数据偏移以32位为长度单位,
  • 也就是4个字节,因此TCP首部的最大长度是60个字节。即偏移最大为15个长度单位=1532位=154字节。
保留
  • 6比特,供以后应用,现在置为0。
  • 6个标志位比特
1、URG:当URG=1时,注解此报文应尽快传送,而不要按本来的列队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,
使接管方可以知道紧急数据共有多长。
2、ACK:只有当ACK=1时,确认序号字段才有效;
3、PSH:当PSH=1时,接收方应该尽快将本报文段立即传送给其应用层。
4、RST:当RST=1时,表示出现连接错误,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接;
5、SYN:SYN=1,ACK=0时表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段;
6、FIN:发端完成发送任务。
窗口
  • TCP通过滑动窗口的概念来进行流量控制。设想在发送端发送数据的速度很快而接收端接收速度却很慢的情况下,为了保证数据不丢失,显然需要进行流量控制, 协调好
  • 通信双方的工作节奏。所谓滑动窗口,可以理解成接收端所能提供的缓冲区大小。TCP利用一个滑动的窗口来告诉发送端对它所发送的数据能提供多大的缓 冲区。窗口大小为
  • 字节数起始于确认序号字段指明的值(这个值是接收端正期望接收的字节)。窗口大小是一个16bit字段,因而窗口大小最大为65535字节。
检验和
  • 检验和覆盖了整个TCP报文段:TCP首部和数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。
紧急指针
  • 只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

HTTP1、HTTP2、HTTP3的区别是什么?

  1. 底层协议:

    • HTTP/1基于传输控制协议TCP。
    • HTTP/2基于TCP,但引入了二进制分帧和多路复用。
    • HTTP/3使用QUIC协议,这是一个基于用户数据报协议(UDP)的传输协议。
  2. 多路复用:

    • HTTP/1每次只能处理一个请求,需要等待响应结束后才能发送下一个请求。
    • HTTP/2引入了多路复用,允许在单个连接上并行发送多个请求和响应。
    • HTTP/3继承了HTTP/2的多路复用概念,但基于QUIC协议实现。
  3. 头部压缩:

    • HTTP/1和HTTP/2的头部使用文本格式,HTTP/2引入了头部压缩(HPACK算法)来减少数据传输的大小。
    • HTTP/3继续使用类似HTTP/2的头部压缩机制。
  4. 连接管理:

    • HTTP/1每个请求需要建立独立的连接,增加了延迟。
    • HTTP/2和HTTP/3支持连接复用,减少了连接数量,提高了效率。
  5. 传输协议:

    • HTTP/1和HTTP/2基于TCP协议。
    • HTTP/3使用QUIC协议,具有更好的连接建立和传输数据的性能,以及更好的容错机制。

Spring篇

SpringBean的生命周期是什么?

  1. 实例化:当启动Spring应用时,IOC容器就会为在配置文件中声明的每个<bean>创建一个实例。
  2. 属性赋值:实例化后,Spring就通过反射机制给Bean的属性赋值。
  3. 调用初始化方法:如果Bean配置了初始化方法,Spring就会调用它。初始化方法是在Bean创建并赋值之后调用,可以在这个方法里面写一些业务处理代码或者做一些初始化的工作。
  4. Bean运行期:此时,Bean已经准备好被程序使用了,它已经被初始化并赋值完成。
  5. 应用程序关闭:当关闭IOC容器时,Spring会处理配置了销毁方法的Bean。
  6. 调用销毁方法:如果Bean配置了销毁方法,Spring会在所有Bean都已经使用完毕,且IOC容器关闭之前调用它,可以在销毁方法里面做一些资源释放的工作,比如关闭连接、清理缓存等。

Bean的作用域是哪几种?

  1. singleton:单例作用域
  2. prototype:原型作用域(多例作用域)
  3. request:请求作用域
  4. session:回话作用域
  5. application:全局作用域
  6. websocket:HTTP WebSocket 作用域
where与on的区别

1、on 是关联条件,而where 是查询条件

2.1、on是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2.2、where条件是在临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的都全部去掉。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值