西安网站策划,我做的网站不知道网站怎么办啊,wordpress 分页数,wordpress媒体库相册文章目录 前言1.socket的过程2.谈谈你对数据库中索引的理解3.现在普通关系数据库用的数据结构是什么类型的数据结构4.索引的优点和缺点5.session、cookie和cache的区别是什么#xff1f;6.如果有几千个session#xff0c;怎么提高效率#xff1f;7.session是存储在什么地方6.如果有几千个session怎么提高效率7.session是存储在什么地方以什么形式存储8.Java里HashMap的底层实现原理9.HashSet如何检查重复10.和equals的区别11.equals如何判断两个对象相同12.Spring三件套框架 前言
牛客上面提供的百度的2021年Java面试题整理非算法部分、杭州银行2022Java岗面试题。 牛客网址https://www.nowcoder.com/ 1.socket的过程
Socket是网络通信中使用的一种机制它可以实现两个不同进程间的通信。Socket的通信过程 ①服务器端启动绑定一个端口号等待客户端的连接请求 ②客户端启动向服务器发送连接请求并指定服务器的IP地址和端口号 ③服务端收到客户端的连接请求后为该连接创建一个新的Socket对象同时服务器端继续等待其他客户端的连接请求 ④客户端接收到服务器端的响应后为该连接创建一个新的Socket对象然后通过该Socket对象与服务器端进行通信 ⑤服务器端和客户端通过通过各自的Socket对象进行通信直到通信结束 ⑥通信结束后客户端和服务器端分别关闭各自的Socket对象释放网络资源。
3.在通信过程中Socket对象扮演者重要角色它通过网络传输数据完成通信。 4.在Java中可以使用Java Socket API 实现Socket通信。 2.谈谈你对数据库中索引的理解
索引是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中索引允许用户不必翻阅完整个书就能迅速找到所需要的信息。在数据库中索引也允许数据库迅速找到表中的数据而不需要扫描整个数据库。 3.现在普通关系数据库用的数据结构是什么类型的数据结构
普通关系数据库使用的数据结构是关系型数据结构也称为二维表结构。它是由行和列组成的二维表格行表示实体列表示属性。每个实体对应一行数据每个属性对应一列数据。关系型数据结构的数据存储和查询采用SQL语言具有ACID特性即原子性、一致性、隔离性和持久性。 4.索引的优点和缺点
优点 ①创建唯一性索引保证数据库表中每一行数据的唯一性。 ②大大加快数据的检索速度。 ③加速表和表之间的连接特别是在实现数据的参考完整性方面特别有意义。 ④在使用分组和排序子句进行数据检索时同样可以显著减少查询中分组和排序的时间。 ⑤通过使用索引可以在查询中使用优化隐藏器提高系统的性能。缺点 ①创建索引和维护索引耗费时间这种时间随着数据量的增加而增加。 ②索引需要占用物理空间除了数据表占用数据空间外每一个索引还要占一定的物理空间如果建立聚簇索引那么占用的空间会更大。 伞当对表中的数据进行增删改操作时索引也需要动态维护降低了数据的维护速度。 5.session、cookie和cache的区别是什么
在Web应用程序中session、cookie和cache是常用的存储数据的方式他们在功能和用途上有所不同其区别如下
session是服务器端存储数据的一种方式它通过在服务器上存储一个唯一的标识符SessionID来跟踪用户的会话状态。session可以存储任何类型的数据例如用户的登录状态、购物车内容等。session的优点是数据的安全性高不容易被恶意篡改和伪造同时可以保存大量的数据。缺点是需要在服务器上进行存储和管理会占用服务器的资源需要开发人员进行维护。cookie是一种在客户端存储数据的方式它通过在浏览器上存储一个小型的文本文件来保护数据。cookie可以存储一些临时的用户数据如用户的偏好设置、购物车内容等。cookie的优点是存储数据的速度快不需要在服务器上进行存储和管理缺点是数据容易被篡改和伪造同时每个浏览器对于cookie的数量和大小有限制。cache是一种数据缓存的方式它可以将频繁访问的数据存储在内存中以提高访问速度。cache可以存储一些不经常更新的数据例如静态文件、数据库查询结果等。cache的优点是访问速度快可以大大减少对数据库和其他数据源的访问次数缺点是需要开发人员进行维护以避免缓存数据过期和失效。同时缓存数据的大小也需要控制避免占用过多的内存资源。 总的来说session、cookie和cache在功能和用途上有所不同可以根据实际需要选择合适的存储方式。 6.如果有几千个session怎么提高效率
session持久化将session信息存储在持久化存储中如数据库、文件系统或NoSQL存储中这样可以避免将所有的session信息存储在内存中中从而减少内存的使用量。session复制将session信息从一台服务器复制到另一台服务器上这样可以实现负载均衡并将回话信息在多个服务器之间共享。session失效策略设置合理的session失效策略例如根据用户活动时间、最大不活动时间等来决定session的失效时间可以减少无用的session信息。集群使用集群环境来分散请求和负载这样可以使用应用程序在多个服务器上运行从而提高应用程序的性能和可扩展性。 7.session是存储在什么地方以什么形式存储
session是服务器端存储数据的一种方式它通过在服务器上存储一个**唯一的标识符SessionID**来跟踪用户的会话状态。其常用的存储方式有以下两种
基于内存的session存储session对象存储在服务器的内存中可以快速读写但当服务器重启或者负载均衡到其他服务器时session会丢失。基于持久化的session存储session对象存储在外部持久化存储中比如数据库、文件系统等可以保证session数据不丢失但会增加系统的读写负担。同时session的存储形式也可以是键值对的形式即以键值对的方式存储session对象的属性和值。具体来说可以用Java Servlet API提供的HttpSession接口来操作session对象。例如可以通过HttpSession的setAttribute()方法设置session的属性值通过getAttribute()方法获取session的属性值。 8.Java里HashMap的底层实现原理
HashMap的底层结构是一个数组数组中每个元素为桶bucket每个桶实际上是一个链表。
添加当新元素插入到HashMap中时首先根据键的哈希码来计算桶的位置然后将该元素添加到该桶所对应的链表中。查询首先使用键的哈希码来计算出元素所在的通的位置然后遍历该桶所对应的链表查找键所对应的值。由于每个桶可能包含多个元素因此查找的时间复杂度通常为O(1)。哈希冲突如果哈希码相同但键不同则会在同一桶中创建一个新的链表节点。为了减少哈希冲突的数量HashMap在每个桶上设置了一个阈值当链表长度超过阈值时会将链表转换为红黑树以提高查询效率。为了保持HashMap的性能当桶的数量达到一定程度时HashMap会自动扩容。在扩容过程中HashMap会重新计算每个元素在新数组中的位置这个过程是比较耗时的因此需要在实际使用时留足够的空间以减少扩容的频率。 9.HashSet如何检查重复
HashSet通过哈希表实现使用哈希算法将元素的值转换为哈希码并存储在哈希表中。 添加HashSet会先计算该元素的哈希码并查找哈希表中是否已经存在相同的哈希码。如果存在相同的哈希码HashSet会调用该元素的equals()方法进行比较如果equals()方法返回trueHashSet就认为该元素存在于集合中不会将其添加到集合中。如果哈希码没有冲突或者哈希码冲突但equals()方法返回falseHashSet会将元素添加到集合中。 因此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模式的实现。