凡科互动网站登录入口句容网络推广

张小明 2025/12/28 4:10:32
凡科互动网站登录入口,句容网络推广,企业网站推广方案范例,网页设计与制作代码软件本文主要记录在准备面试过程中遇到的一些基本知识点#xff08;持续更新#xff09;一、Java基础知识1、抽象类和接口的区别接口和抽象类中都可以定义变量#xff0c;但是接口中定义的必须是公共的、静态的、Final的#xff0c;抽象类中的变量跟普通类中的没有区别。从设计…本文主要记录在准备面试过程中遇到的一些基本知识点持续更新一、Java基础知识1、抽象类和接口的区别接口和抽象类中都可以定义变量但是接口中定义的必须是公共的、静态的、Final的抽象类中的变量跟普通类中的没有区别。从设计上来说接口是对一系列行为的抽象而抽象类是对事物的抽象。2、什么时候使用抽象类和接口①当希望某些方法具有默认实现时。②希望实现多重继承必须使用接口。由于Java不支持多继承子类不能够继承多个类但可以实现多个接口。因此你就可以使用接口来解决它。③如果基本功能在不断改变那么就需要使用抽象类。如果不断改变基本功能并且使用接口那么就需要改变所有实现了该接口的类。3、常用集合类Java 集合框架主要包括两种类型的容器一种是集合Collection存储一个元素集合另一种是图Map存储键/值对映射。Collection 接口又有 3 种子类型List、Set 和 Queue。①List有序、可重复List里存放的对象是有序的同时也是可以重复的List关注的是索引拥有一系列和索引相关的方法查询速度快。因为往list集合里插入或删除数据时会伴随着后面数据的移动所有插入删除数据速度慢。②Set无序、不能重复Set里存放的对象是无序不能重复的集合中的对象不按特定的方式排序只是简单地把对象加入集合中。③QueueQueue用于模拟队列这种数据结构(先进先出 FIFO)。新元素插入(offer)到队列的尾部访问元素(poll)操作会返回队列头部的元素队列不允许随机访问队列中的元素。④Map键值对、键唯一、值不唯一Map集合中存储的是键值对键不能重复值可以重复。根据键得到值对map集合遍历时先得到键的set集合对set集合进行遍历得到相应的值。4、集合和数组的区别①.数组长度在初始化时指定意味着只能保存定长的数据。而集合可以保存数量不确定的数据。同时可以保存具有映射关系的数据即关联数组键值对 key-value。②数组元素即可以是基本类型的值也可以是对象。集合里只能保存对象实际上只是保存对象的引用变量基本数据类型的变量要转换成对应的包装类才能放入集合类中。5、反射程序在运行状态中可以根据类名动态地加载一个类加载完类之后在堆内存中就生成了一个 Class 类型的对象这个对象就包含了完整的结构信息通过这个对象我们可以看到类的结构。6、static关键字的作用方便在没有创建对象的情况下来进行调用方法/变量。篇幅限制下面就只能给大家展示小册部分内容了。整理了一份核心面试笔记包括了Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题需要全套面试笔记及答案可以在文末获取二、计算机网络1、为什么连接的时候是三次握手关闭的时候却是四次握手答因为当Server端收到Client端的SYN连接请求报文后可以直接发送SYNACK报文。其中ACK报文是用来应答的SYN报文是用来同步的。但是关闭连接时当Server端收到FIN报文时很可能并不会立即关闭SOCKET所以只能先回复一个ACK报文告诉Client端你发的FIN报文我收到了。只有等到我Server端所有的报文都发送完了我才能发送FIN报文因此不能一起发送。故需要四步握手。2、为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态答虽然按道理四个报文都发送完毕我们可以直接进入CLOSE状态了但是我们必须假象网络是不可靠的有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复但该ACK可能丢失。Server如果没有收到ACK将不断重复发送FIN片段。所以Client不能立即关闭它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器等待2MSL的时间。如果在该时间内再次收到FIN那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSLClient都没有再次收到FIN那么Client推断ACK已经被成功接收则结束TCP连接。3、为什么不能用两次握手进行连接答可能会发生死锁。考虑计算机S和C之间的通信假定C给S发送一个连接请求分组S收到了这个分组并发送了确认应答分组。按照两次握手的协定S认为连接已经成功地建立了可以开始发送数据分组。可是C在S的应答分组在传输中被丢失的情况下将不知道S是否已准备好不知道S建立什么样的序列号C甚至怀疑S是否收到自己的连接请求分组。在这种情况下C认为连接还未建立成功将忽略S发来的任何数据分组只等待连接确认应答分组。而S在发出的分组超时后重复发送同样的分组。这样就形成了死锁。4、HTTP请求中GET和POST有什么区别答GET在浏览器回退时是无害的而POST会再次提交请求。GET产生的URL地址可以被Bookmark而POST不可以。GET请求会被浏览器主动cache而POST不会除非手动设置。GET请求只能进行url编码而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的而POST么有。对参数的数据类型GET只接受ASCII字符而POST没有限制。GET比POST更不安全因为参数直接暴露在URL上所以不能用来传递敏感信息。GET参数通过URL传递POST放在Request body中。对于GET方式的请求浏览器会把http header和data一并发送出去服务器响应200返回数据而对于POST浏览器先发送header服务器响应100 continue浏览器再发送data服务器响应200 ok返回数据。5、cookie和session的区别是什么答cookie机制采用的是在客户端保持状态的方案而session机制采用的是在服务器端保持状态的方案。cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器是一种在客户端保持状态的方案。session是在服务器端生产一个session ID并将其通过响应发送到浏览器当浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上服务器从请求中提取出Session ID从而识别出客户端。6、常见HTTP请求方法7、常见HTTP响应码1xx指示信息--表示请求已接收继续处理。2xx成功--表示请求已被成功接收、理解、接受。3xx重定向--要完成请求必须进行更进一步的操作。4xx客户端错误--请求有语法错误或请求无法实现。5xx服务器端错误--服务器未能实现合法的请求三、并发编程1、进程和线程进程process是计算机中的程序关于某数据集合上的一次运行活动是系统进行资源分配和调度的基本单位是操作系统结构的基础。线程thread是操作系统能够进行运算调度的最小单位。一个进程可以由很多个线程组成线程间共享进程的所有资源每个线程有自己的堆栈和局部变量。一条线程指的是进程中一个单一顺序的控制流每条线程并行执行不同的任务。所以线程可以理解为进程中独立运行的子任务。多线程的好处就是可以最大限度地利用CPU的空闲时间来处理其他的任务比如任务1是在等待远程服务器返回数据以便后续处理此时就可以切换到任务2使系统避免了不必要的等待时间从而运行效率大大得到提升。①主线程当Java程序启动时一个线程立刻运行该线程通常叫做程序的主线程。②子线程由主线程直接或间接创建的线程。③守护线程用于服务其他非守护线程的线程典型的守护进程就是垃圾回收线程当进程中没有非守护线程了则守护线程自动销毁。2、生产者-消费者模式生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯而通过阻塞队列来进行通讯所以生产者生产完数据之后不用等待消费者处理直接扔给阻塞队列消费者不找生产者要数据而是直接从阻塞队列里取阻塞队列就相当于一个缓冲区平衡了生产者和消费者的处理能力。3、linux进程间通信的几种方式①管道②信号量③UNIX套接字④信号⑤消息队列⑥共享内存四、数据库1、关系型数据库MySQL数据库①数据库引擎数据库引擎定义了数据库存储数据的数据结构特点主要通过指定的数据库引擎对象来影响数据库操作数据不同方式的效率、锁和事务的支持、数据全文检索的支持、数据集的缓存操作等等特性。比较常见的数据库引擎对象主要有两种一种是常见的InnoDB另一种是很多人经常提到但是很少用到的MyIASM。两种数据库引擎都是通过B树实现了数据库中最重要的数据索引。•InnoDB引擎该存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM引擎写的处理效率会差一些并且会占用更多的磁盘空间以保留数据和索引。•MyIASM引擎不支持事务、也不支持外键优势是访问速度快对事务完整性没有要求或者以selectinsert为主的应用基本上可以用这个引擎来创建表。②两种引擎的选择大尺寸的数据集趋向于选择InnoDB引擎因为它支持事务处理和故障恢复。数据库的大小决定了故障恢复的时间长短InnoDB可以利用事务日志进行数据恢复这会比较快。主键查询在InnoDB引擎下也会相当快不过需要注意的是如果主键太长也会导致性能问题。大批的INSERT语句(在每个INSERT语句中写入多行批量插入)在MyISAM下会快一些但是UPDATE语句在InnoDB下则会更快一些尤其是在并发量大的时候。索引索引是对数据库表中一列或多列的值进行排序的一种结构使用索引可快速访问数据库表中的特定信息。MyIASM和Innodb都使用了B树这种数据结构做为索引。注释更新一个包含索引的表需要比更新一个没有索引的表更多的时间这是由于索引本身也需要更新。因此理想的做法是仅仅在常常被搜索的列以及表上面创建索引。2、非关系型数据库Mongodb它是一个内存数据库数据都是放在内存里面的。对数据的操作大部分都在内存中。但mongodb并不是单纯的内存数据库mongodb的所有数据实际上是存放在硬盘上的所有要操作的数据通过mmap的方式映射到内存某个区域内。然后mongodb就在这块区域里面进行数据修改避免了零碎的硬盘操作。至于mmap上的内容flush到硬盘就是操作系统的事情了所以如果mongodb在内存中修改了数据后mmap数据flush到硬盘之前系统宕机了数据就会丢失。Redis它就是一个不折不扣的内存数据库。Redis通常将全部的数据存储在内存中。当前通过两种方式实现持久化1使用快照一种半持久耐用模式。不时的将数据集以异步方式从内存以RDB格式写入硬盘。21.1版本开始使用更安全的AOF格式替代一种只能追加的日志类型。将数据集修改操作记录起来。Redis能够在后台对只可追加的记录作修改来避免无限增长的日志。3、数据库事务四大特性①原子性Atomicity原子性是指事务包含的所有操作要么全部成功要么全部失败回滚因此事务的操作如果成功就必须要完全应用到数据库如果操作失败则不能对数据库有任何影响。② 一致性Consistency一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说假设用户A和用户B两者的钱加起来一共是5000那么不管A和B之间如何转账转几次账事务结束后两个用户的钱相加起来应该还得是5000这就是事务的一致性。③隔离性Isolation隔离性是当多个用户并发访问数据库时比如操作同一张表时数据库为每一个用户开启的事务不能被其他事务的操作所干扰多个并发事务之间要相互隔离。即要达到这么一种效果对于任意两个并发的事务T1和T2在事务T1看来T2要么在T1开始之前就已经结束要么在T1结束之后才开始这样每个事务都感觉不到有其他事务在并发地执行。④持久性Durability持久性是指一个事务一旦被提交了那么对数据库中的数据的改变就是永久性的即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。4、索引单一索引单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上。复合索引用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。五、数据结构与算法1、树①B树B树和平衡二叉树稍有不同的是B树属于多叉树又名平衡多路查找树查找路径不只两个数据库索引技术里大量使用者B树和B树的数据结构。B树相对于平衡二叉树的不同是每个节点包含的关键字增多了特别是在B树应用到数据库中的时候数据库充分利用了磁盘块的原理磁盘数据存储是采用块的形式存储的每个块的大小为4K每次IO进行数据读取时同一个磁盘块的数据可以一次性读取出来把节点大小限制和充分使用在磁盘块大小范围内把树的节点关键字增多后树的层级比原来的二叉树少了减少数据查找的次数和复杂度。②B树B树是B树的一个升级版相对于B树来说B树更充分的利用了节点的空间让查询速度更加稳定其速度完全接近于二分法查找。B跟B树不同B树的非叶子节点不保存关键字记录的指针只进行数据索引这样使得B树每个非叶子节点所能保存的关键字大大增加。B树叶子节点的关键字从小到大有序排列左边结尾数据都会保存右边节点开始数据的指针。B 树的优点在于由于B树在内部节点上不包含数据信息因此在内存页中能够存放更多的key。 数据存放的更加紧密具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。B树的叶子结点都是相链的因此对整棵树的遍历只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻所以缓存命中性没有B树好。B树的优点在于由于B树的每一个节点都包含key和value因此如果经常访问的元素离根节点较近可能访问速度会更快。2、HashMap实现原理HashMap的主干是一个Entry数组。Entry是HashMap的基本组成单元每一个Entry包含一个key-value键值对。HashMap由数组链表组成的数组是HashMap的主体链表则是主要为了解决哈希冲突而存在的。如果定位到的数组位置不含链表当前entry的next指向null,那么对于查找添加等操作很快仅需一次寻址即可如果定位到的数组包含链表对于添加操作其时间复杂度依然为O(1)因为最新的Entry会插入链表头部仅需要简单改变引用链即可而对于查找操作来讲此时就需要遍历链表然后通过key对象的equals方法逐一比对查找。HashMap的put过程六、JVM1、四种GC算法①引用技术算法给对象中添加一个引用计数器每当有一个地方引用它时计数器值就加1当引用失效时计数器值就减1任何时刻计数器为0的对象就是不可能再被使用的。②根搜索算法由于引用计数算法的缺陷所以JVM一般会采用一种新的算法叫做根搜索算法。它的处理方式就是设立若干种根对象当任何一个根对象到某一个对象均不可达时则认为这个对象是可以被回收的。③标记清除算法标记-清除算法将垃圾回收分为两个阶段标记阶段和清除阶段。一种可行的实现是在标记阶段首先通过根节点标记所有从根节点开始的可达对象。因此未被标记的对象就是未被引用的垃圾对象然后在清除阶段清除所有未被标记的对象。标记标记的过程其实就是遍历所有的GC Roots然后将所有GC Roots可达的对象标记为存活的对象。清除清除的过程将遍历堆中所有的对象将没有标记的对象全部清除掉。④复制算法将原有的内存空间分为两块每次只使用其中一块在垃圾回收时将正在使用的内存中的存活对象复制到未使用的内存块中之后清除正在使用的内存块中的所有对象交换两个内存的角色完成垃圾回收。2、双亲委托机制工作过程如果一个类加载器收到了类加载的请求它首先不会自己去尝试加载这个类而是把这个请求委托给父类加载器去完成每一个层次的类加载器都是如此因此所有的加载请求最终都应该传送到顶层的启动类加载器中只有当父类加载器反馈自己无法完成这个加载请求它的搜索范围中没有找到所需要加载的类时子加载器才会尝试自己去加载。好处能够有效确保一个类的全局唯一性当程序中出现多个限定名相同的类时类加载器在执行加载时始终只会加载其中的某一个类。3、类加载过程类加载器是Java运行时环境Java Runtime Environment的一部分负责动态加载Java类到Java虚拟机的内存空间中通过一个类的全限定名来获取描述此类的二进制字节流。从Java虚拟机的角度来讲只存在两种不同的类加载器一种是启动类加载器Bootstrap ClassLoader这个类加载器使用C语言实现是虚拟机自身的一部分另一种就是所有其他的类加载器这些类加载器都由Java语言实现独立于虚拟机外部并且全都继承自抽象类java.lang.ClassLoader。类加载过程包括加载、验证、准备、解析和初始化五个阶段。加载类加载阶段就是由类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部并存储在运行时内存区的方法区然后将其转换为一个与目标类型对应的java.lang.Class对象实例这个Class对象在日后就会作为方法区中该类的各种数据的访问入口。验证验证类数据信息是否符合JVM规范是否是一个有效的字节码文件验证内容涵盖了类数据信息的格式验证、语义分析、操作验证等。准备为类中的所有静态变量分配内存空间并为其设置一个初始值由于还没有产生对象实例变量不在此操作范围内被final修饰的静态变量会直接赋予原值。解析是将常量池中的符号引用转化为直接引用的过程这个过程的执行时间是不确定的静态绑定是在初始化之前进行解析如果有动态绑定的话它会在初始化后进行解析。初始化将一个类中所有被static关键字标识的代码统一执行一遍如果执行的是静态变量那么就会使用用户指定的值覆盖之前在准备阶段设置的初始值如果执行的是static代码块那么在初始化阶段JVM就会执行static代码块中定义的所有操作。七、操作系统1、mmapmmap将一个文件或者其它对象映射进内存实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后进程就可以采用指针的方式读写操作这一段内存而系统会自动回写脏页面到对应的文件磁盘上即完成了对文件的操作而不必再调用read,write等系统调用函数。这种机制只需要从文件到用户空间再从用户空间到文件两次拷贝相比较在用户空间、内核空间和文件之间四次拷贝数据效率更高。文件被映射到多个页上如果文件的大小不是所有页的大小之和最后一个页不被使用的空间将会清零。篇幅限制下面就只能给大家展示小册部分内容了。整理了一份核心面试笔记包括了Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题需要全套面试笔记及答案可以点击下方名片获取
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发报价说明深圳的网站建设公司的分类是

Git配置与持续学习指南 1. 配置默认编辑器 在使用Git时,我们可以配置默认的编辑器。例如,要将nano编辑器设置为当前仓库的默认编辑器,可按以下步骤操作: 1. 按下 Ctrl - X 退出当前编辑器。 2. 输入以下命令: git config --local core.editor nano这样,下次在该仓…

张小明 2025/12/28 4:09:59 网站建设

wordpress插件去掉广告做网络优化哪家公司比较好

告别盲猜,拒绝中断。在 VS Code 中以战斗机 HUD 般的精准度监控你的 AI 军火库。为什么你需要它?你是否经历过这样的崩溃时刻:代码写到最关键的逻辑,Copilot 突然罢工,提示 “Rate Limit Exceeded”?你不得…

张小明 2025/12/28 4:09:26 网站建设

怎么注册个人的网站新中建设公司招聘网站

点击下方卡片,关注“大模型之心Tech”公众号戳我-> 领取大模型巨卷干货在AI迈向通用智能的赛道上,“跨模态” 早已不是新鲜词——从单独的图像识别、文本生成,到如今GPT-4o、Gemini 2.0 Flash能流畅处理“文生图视频理解语音交互”&#x…

张小明 2025/12/28 4:08:53 网站建设

现在有人还做网站吗网站界面设计需要

【免费下载链接】dataease DataEase: 是一个开源的数据可视化分析工具,支持多种数据源以及丰富的图表类型。适合数据分析师和数据科学家快速创建数据可视化报表。 项目地址: https://gitcode.com/GitHub_Trending/da/dataease "为什么我的数据分析报告总…

张小明 2025/12/28 4:08:20 网站建设

招商网站建设网站被抓取

思维导图新手如何用DesktopNaotu快速上手:3分钟搞定你的第一个脑图 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址: https://gitcod…

张小明 2025/12/28 4:07:46 网站建设

垂直 网站开发模板建站哪个平台好

LSPosed框架实战指南:从零掌握Hook技术与模块开发 【免费下载链接】LSPosed_mod My changes to LSPosed 项目地址: https://gitcode.com/GitHub_Trending/ls/LSPosed_mod LSPosed框架作为现代Android Hook技术的重要代表,为开发者提供了强大的模块…

张小明 2025/12/28 4:06:39 网站建设