面试题整理1

文章目录

  • 前言
  • 1.socket的过程
  • 2.谈谈你对数据库中索引的理解
  • 3.现在普通关系数据库用的数据结构是什么类型的数据结构
  • 4.索引的优点和缺点
  • 5.session、cookie和cache的区别是什么?
  • 6.如果有几千个session,怎么提高效率?
  • 7.session是存储在什么地方,以什么形式存储?
  • 8.Java里,HashMap的底层实现原理
  • 9.HashSet如何检查重复
  • 10.==和equals的区别
  • 11.equals如何判断两个对象相同
  • 12.Spring三件套框架


前言

牛客上面提供的百度的2021年Java面试题整理(非算法部分)、杭州银行2022Java岗面试题。
牛客网址:https://www.nowcoder.com/


1.socket的过程

  1. Socket是网络通信中使用的一种机制,它可以实现两个不同进程间的通信。
  2. Socket的通信过程:
    服务器端启动,绑定一个端口号,等待客户端的连接请求;
    客户端启动,向服务器发送连接请求,并指定服务器的IP地址和端口号;
    服务端收到客户端的连接请求后,为该连接创建一个新的Socket对象,同时服务器端继续等待其他客户端的连接请求;
    客户端接收到服务器端的响应后,为该连接创建一个新的Socket对象,然后通过该Socket对象,与服务器端进行通信;
    ⑤服务器端和客户端通过通过各自的Socket对象进行通信,直到通信结束;
    通信结束后,客户端和服务器端分别关闭各自的Socket对象,释放网络资源。

3.在通信过程中,Socket对象扮演者重要角色,它通过网络传输数据完成通信。
4.在Java中,可以使用Java Socket API 实现Socket通信。


2.谈谈你对数据库中索引的理解

索引是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速找到所需要的信息。在数据库中,索引也允许数据库迅速找到表中的数据,而不需要扫描整个数据库。


3.现在普通关系数据库用的数据结构是什么类型的数据结构

普通关系数据库使用的数据结构是关系型数据结构,也称为二维表结构。它是由行和列组成的二维表格,行表示实体,列表示属性。每个实体对应一行数据,每个属性对应一列数据。关系型数据结构的数据存储和查询采用SQL语言,具有ACID特性,即原子性、一致性、隔离性和持久性。


4.索引的优点和缺点

  1. 优点:
    ①创建唯一性索引,保证数据库表中每一行数据的唯一性
    ②大大加快数据的检索速度
    ③加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
    ④在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
    ⑤通过使用索引,可以在查询中使用优化隐藏器,提高系统的性能。
  2. 缺点:
    ①创建索引和维护索引耗费时间,这种时间随着数据量的增加而增加。
    ②索引需要占用物理空间,除了数据表占用数据空间外,每一个索引还要占一定的物理空间,如果建立聚簇索引那么占用的空间会更大。
    伞当对表中的数据进行增删改操作时,索引也需要动态维护,降低了数据的维护速度。

5.session、cookie和cache的区别是什么?

在Web应用程序中,session、cookie和cache是常用的存储数据的方式,他们在功能和用途上有所不同,其区别如下:

  1. session是服务器端存储数据的一种方式,它通过在服务器上存储一个唯一的标识符(SessionID)来跟踪用户的会话状态。session可以存储任何类型的数据,例如用户的登录状态、购物车内容等。session的优点是数据的安全性高,不容易被恶意篡改和伪造,同时可以保存大量的数据。缺点是需要在服务器上进行存储和管理,会占用服务器的资源,需要开发人员进行维护。
  2. cookie是一种在客户端存储数据的方式,它通过在浏览器上存储一个小型的文本文件来保护数据。cookie可以存储一些临时的用户数据,如用户的偏好设置、购物车内容等。cookie的优点是存储数据的速度快,不需要在服务器上进行存储和管理,缺点是数据容易被篡改和伪造,同时,每个浏览器对于cookie的数量和大小有限制。
  3. cache是一种数据缓存的方式,它可以将频繁访问的数据存储在内存中,以提高访问速度。cache可以存储一些不经常更新的数据,例如静态文件、数据库查询结果等。cache的优点是访问速度快,可以大大减少对数据库和其他数据源的访问次数,缺点是需要开发人员进行维护,以避免缓存数据过期和失效。同时,缓存数据的大小也需要控制,避免占用过多的内存资源。
    总的来说,session、cookie和cache在功能和用途上有所不同,可以根据实际需要选择合适的存储方式。

6.如果有几千个session,怎么提高效率?

  1. session持久化:将session信息存储在持久化存储中,如数据库、文件系统或NoSQL存储中,这样可以避免将所有的session信息存储在内存中中,从而减少内存的使用量。
  2. session复制:将session信息从一台服务器复制到另一台服务器上,这样可以实现负载均衡,并将回话信息在多个服务器之间共享。
  3. session失效策略:设置合理的session失效策略,例如根据用户活动时间、最大不活动时间等来决定session的失效时间,可以减少无用的session信息。
  4. 集群:使用集群环境来分散请求和负载,这样可以使用应用程序在多个服务器上运行,从而提高应用程序的性能和可扩展性。

7.session是存储在什么地方,以什么形式存储?

session是服务器端存储数据的一种方式,它通过在服务器上存储一个**唯一的标识符(SessionID)**来跟踪用户的会话状态。其常用的存储方式有以下两种:

  1. 基于内存的session存储:session对象存储在服务器的内存中,可以快速读写,但当服务器重启或者负载均衡到其他服务器时,session会丢失。
  2. 基于持久化的session存储:session对象存储在外部持久化存储中,比如数据库、文件系统等,可以保证session数据不丢失,但会增加系统的读写负担。
  3. 同时,session的存储形式也可以是键值对的形式,即以键值对的方式存储session对象的属性和值。具体来说,可以用Java Servlet API提供的HttpSession接口来操作session对象。例如可以通过HttpSession的setAttribute()方法设置session的属性值,通过getAttribute()方法获取session的属性值。

8.Java里,HashMap的底层实现原理

HashMap的底层结构是一个数组,数组中每个元素为桶(bucket),每个桶实际上是一个链表。

  1. 添加:当新元素插入到HashMap中时,首先根据键的哈希码来计算桶的位置,然后将该元素添加到该桶所对应的链表中。
  2. 查询:首先使用键的哈希码来计算出元素所在的通的位置,然后遍历该桶所对应的链表,查找键所对应的值。由于每个桶可能包含多个元素,因此查找的时间复杂度通常为O(1)。
  3. 哈希冲突:如果哈希码相同但键不同,则会在同一桶中创建一个新的链表节点。
  4. 为了减少哈希冲突的数量,HashMap在每个桶上设置了一个阈值,当链表长度超过阈值时,会将链表转换为红黑树,以提高查询效率。
  5. 为了保持HashMap的性能,当桶的数量达到一定程度时,HashMap会自动扩容。在扩容过程中,HashMap会重新计算每个元素在新数组中的位置,这个过程是比较耗时的,因此需要在实际使用时留足够的空间以减少扩容的频率。

9.HashSet如何检查重复

HashSet通过哈希表实现,使用哈希算法将元素的值转换为哈希码并存储在哈希表中
添加:HashSet会先计算该元素的哈希码,并查找哈希表中是否已经存在相同的哈希码。如果存在相同的哈希码,HashSet会调用该元素的equals()方法进行比较,如果equals()方法返回true,HashSet就认为该元素存在于集合中,不会将其添加到集合中。如果哈希码没有冲突,或者哈希码冲突但equals()方法返回false,HashSet会将元素添加到集合中。
因此,HashSet检查重复式通过哈希码和equals()方法实现的。


10.==和equals的区别

==运算符比较的是两个对象的引用是否相等,即它们是否指向内存中的同一对象。
equals()方法比较的是两个对象的内容是否相等,即它们是都具有相同的属性值。


11.equals如何判断两个对象相同

在Java中,对象的equals方法用于判断两个对象是否相等。默认情况下,equals方法只是比较两个对象的内存地址是否相同,即比较引用是否相同,如果要判断对象的内容是否相同,则需要重写equals()方法


12.Spring三件套框架

Spring三件套指的是Spring框架的三个核心模块,分别是Spring Core、Spring AOP和Spring MVC。
Spring Core:提供了IoC(Inverse of Control)容器,用于对象之间的解耦,通过容器自动将对象间的依赖注入。同时,Spring Core还提供了对AspectJ的集成,以及对基于注解的Spring Bean的支持。
Spring AOP: 提供了基于AOP(Aspect Oriented Prigramming)的编程方式,能够在不修改源码的情况下,通过代理机制对对象进行增强,比如添加事务、日志、安全检查等。
Spring MVC: 是Spring框架的Web模块,提供了MVC(Model-View-Controller)模式的支持,用于处理Web请求和响应。Spring MVC通过DispatcherServlet、HandlerMapping、Controller和ViewResolver等组件构成了完整的MVC模式的实现。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

港口人车防撞定位方案

大家好,我是北京华星智控公司小智,今天给大家介绍港口人员定位防撞安全管控方案。 首先说明项目建设背景、目的和面临的挑战,背景介绍: 港口作为货物运输和交换的重要节点,人员和机械设备频繁活动,存在碰撞…

pytorch -- 常见的transform包方法

1. 基础 PIL Image -> Image.open tensor -> ToTensor() [Convert a PIL Image or ndarray to tensor] ndarray -> cv2.imread 2. 常见方法 (1)ToTensor 将PIL/numpy ndarry转化为tensor from PIL import Image from torch.utils.tensorboard import SummaryWrite…

8.7 OpenGL纹理和采样器:压缩纹理图像

压缩纹理图像 Compressed Texture Images 纹理图像也可以使用已存储在已知压缩图像格式中的图像数据来指定或修改,这些格式包括附录D中定义的格式以及由扩展定义的任何额外格式。 void glCompressedTexImage1D( enum target, int level, enum internalformat, siz…

安装虚拟机出现的一些问题

1、在重新打开软件之后出现闪退 解决:[WSL] 解决nsenter: cannot open /proc/320/ns/time: No such file or directory 问题 小白向-CSDN博客2、重新启动xrdp服务命令 解决: sudo systemctl restart xrdp3、将端口从3389改为3390,因为此前…

统信UOS系统窗口特效设置

原文链接:统信UOS系统设置窗口特效 在今天的技术分享中,我们将探讨如何在统信UOS系统上充分利用窗口特效来美化和提升用户界面的交互体验。统信UOS作为一款注重视觉体验和用户友好性的操作系统,提供了丰富的窗口特效设置,让用户可…

利用Java SPI机制实现可插拔的应用插件

自己搭建了个小博客,本文与这篇文章同步: 利用Java SPI机制实现可插拔的应用插件 什么是spi Java SPI(Service Provider Interface)机制是 Java 提供的一种用于实现组件化、可插拔式架构的机制。通过 SPI,Java 应用…

js之防抖与节流

定义:多次触发事件后,事件处理函数只执行一次,并且在触发操作结束时执行,一般用于scroll事件 原理:对处理函数进行延时操作,若设定的延时到来之前再次触发事件,则清除上一次的延时操作定时器&am…

从零开始学HCIA之广域网技术03

1、LCP中包含的报文类型 (1)Configure-Request(配置请求),链路层协商过程中发送的第一个报文,该报文表明点对点双方开始进行链路层参数的协商。 (2) Configure-Ack(配置…

详解 CSS 的背景属性

详解 CSS 的背景属性 背景颜色 语法: background-color: [指定颜色]; 注:默认是 transparent (透明) 的,可以通过设置颜色的方式修改 示例代码: 运行效果: 背景图片 语法:background-image: url(...); url 可以是绝对路径 也可…

oracle 设置权限 禁止删除用户

在Oracle中,可以通过修改系统角色来控制用户的操作权限。要禁止删除用户,需要将DROP USER这个特定的系统权限从相应的角色中移除。 下面是一种常见的方法,使用SQL语句进行操作: -- 创建新的角色,并为其分配所有必要的…

小苯的IDE括号问题(CD) -----牛客小白月赛87(双链表)

C题&#xff1a;C-小苯的IDE括号问题&#xff08;easy&#xff09;_牛客小白月赛87 (nowcoder.com) D题&#xff1a; D-小苯的IDE括号问题&#xff08;hard&#xff09;_牛客小白月赛87 (nowcoder.com) C题代码&#xff1a; #include<bits/stdc.h>using namespace std…

模型 OIIC(目标、障碍、洞察、挑战)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。沟通方案工具。 1 OIIC(目标、障碍、洞察、挑战)模型的应用 1.1 OIIC 驱动的汽车配件渠道优化 一家知名的汽车配件制造商&#xff0c;旗下品牌拥有众多产品&#xff0c;其销售渠道广泛&#xff0c;不仅在…

【涨薪技术】掌握加密签名接口测试实战!

接口加密是指在网络传输过程中&#xff0c;将数据进行加密&#xff0c;以保护数据的安全性。接口加密可以采用多种加密算法&#xff0c;如AES、DES、RSA等。测试接口加密的目的是验证接口加密算法的正确性和安全性。 1加密与加密算法 加密&#xff08;Encrypt&#xff09;是将…

平衡,才是世界生生不息的真谛

凤凰涅槃&#xff0c;浴火重生。这句话是很有哲理的&#xff0c;可以运用到命运中。而对于命运&#xff0c;以中为最好&#xff0c;即是平衡。然而&#xff0c;每一个人&#xff0c;都是要经历命运的锤炼&#xff0c;无论怎样锤炼&#xff0c;都要保持一颗善良的心&#xff0c;…

day06-进程线程通信

1. 尝试处理普通信号 #include "test.h"#define MAXSIZE 128void handler(int signo) {if (SIGINT signo){printf("用户按下了 ctrl c 键\n");} }int main(int argc, char const *argv[]) {if (signal(SIGINT, SIG_IGN) SIG_ERR){perror("signal …

2024.02.23作业

1. 尝试处理普通信号 #include "test.h"#define MAXSIZE 128void handler(int signo) {if (SIGINT signo){printf("用户按下了 ctrl c 键\n");} }int main(int argc, char const *argv[]) {if (signal(SIGINT, SIG_IGN) SIG_ERR){perror("signal …

记录 | docker内执行apt update报错GPG error

1. 执行 sudo apt-get update 命令时遇到这个错误&#xff0c;是服务器没有这个公钥的意思 rootadmin:~# sudo apt-get update Get:1 https://download.docker.com/linux/ubuntu focal InRelease [36.2 kB] Err:1 https://download.docker.com/linux/ubuntu focal InRelease T…

Kaggle Intermediate ML Part Three——Pipeline

Step 1: Define Preprocessing Steps Understanding the Data: Data source: Where is the data coming from? What format is it in (e.g., CSV, JSON)? What does it represent?Data characteristics: What variables are present? What are their types (numerical, c…

【C++刷题】优选算法——双指针

移动零 void moveZeroes(vector<int>& nums) {size_t front 0;size_t back 0;while(back < nums.size() && nums[back] ! 0){back;}front back;while(back < nums.size()){if(0 nums[back]){back;}else{swap(nums[front], nums[back]); }} }…

Sora Text to Video 转换过程和技术要素的技术原理详细描述

转换过程&#xff1a; 初始化阶段&#xff1a;Sora 的转换过程从一个随机噪声图像开始。这个噪声图像是通过随机数生成器产生的&#xff0c;它代表了视频数据的初始状态&#xff0c;其中包含了大量的随机性和不确定性。 神经网络处理&#xff1a;这个噪声图像随后被送入一个预…