求一个offer呀YYY level
获赞
7
粉丝
1
关注
0
看过 TA
56
湖南大学
2026
Java
IP属地:江苏
暂未填写个人简介
私信
关注
05-25 17:39
湖南大学 Java
一面1、使用消息队列,如何避免重复消费;    生产者配置中启用了幂等性,kafka会为每一条消息分配唯一的序列号(Sequence Number)和生产者ID。Broker会拒绝重复的序号,确保同一分区内的消息不重复。消费者处理了消息会正确提交偏移量。2、mq主从复制,如果主节点挂了之后,会出现什么情况    主节点Leader挂掉之后,会立即触发选举机制,从该分区的其他从节点中选举一个新的Leader来接管,在选举新的Leader的过程中,可能会出现短暂的延迟,导致消费者和生产者无法正确向分区发送和消费消息,但是一般是短暂的时间几百毫秒或者几秒。如果原来的Leader节点只是暂时的故障,很快恢复,它会重新加入分区,成为Follower节点进行数据同步。如果原来的Leader节点无法回复或者挂掉的时间过长,新的Leader节点将继续承担分区的读写操作,而原来的Leader上未复制到新的Leader的数据可能会丢失。3、在java类中可以通过反射来访问一类的私有成员吗?    可以访问,可以通过getDeclaredFields方法获取类中所有声明的字段,包括私有字段,通过设置Field对象的setAccessible(true)方法取消java语言访问检查,从而可以访问并修改私有字段的值。4、开放题4.1有两个文件,一个文件A,大小200MB,文件B,大小10G,内存限制是265MB,求所有在文件A不在B的行。4.2给n个正整数,求最小的k个值,这里面n远大于k5、从输入一个页面到显示页面的过程5.1URL查询IP地址是通过什么协议    DNS协议5.2DNS是属于什么层的协议    DNS 属于应用层协议 :DNS 协议运行在 TCP/IP 协议栈的应用层,它使用 UDP 或 TCP 协议进行通信。UDP 通常用于简单的 DNS 查询,因为其速度快且开销小;而 TCP 则用于更复杂的 DNS 操作,如区域传输等。6、介绍一下操作系统的虚拟地址和物理地址    虚拟地址:是程序运行时使用的地址空间,由操作系统和硬件共同管理。允许程序在逻辑上独立都物理内存进行编址。使得程序编写和移植更加方便。每个进程都有自己的虚拟地址空间,不同进程的虚拟地址空间是相互隔离的,这样可以保证各个进程的安全性和独立性。物理地址:是计算机实际的内存地址,由内存管理单元MMU负责将虚拟地址映射到物理地址。物理地址是唯一的,用于直接访问物理地址中的数据。操作系统通过页表等结构来维持虚拟地址和物理地址之间的转换。7、页中断是什么时候发生的    访问未分配的页面:当进程试图访问一个尚未分配给他的虚拟地址会触发页中断。这可能是因为该页面从未被分配过,或者是因为内存紧张,该页面被操作系统临时调出磁盘交换空间中。权限问题:如果进程试图以不正确的权限访问某个页面,会导致页中断。操作系统会检查页面的访问权限,并在发现委会访问时触发页中断。硬件异常:某些一件故障或者异常情况也可能会导致也终端,例如内存控制器检测到内存错误。8、linux如何表示文件系统的权限    符号表示法:r表示读、w表示写、x表示执行    数字表示:读、写、执行权限分别用数字4,2,1表示9、linux文件系统中,在一个文件中,查找一个关键字上下10行的一个内容,如何查找    可以使用grep命令结合上下文参数-A显示匹配行后n行,-B显示匹配行前n行-C显示匹配行前后各n行。
查看12道真题和解析
0 点赞 评论 收藏
分享
05-24 12:26
湖南大学 Java
1、平常使用什么JDK比较多,jdk新特性目前使用较多的 JDK 版本有 JDK8、JDK11、JDK17 和 JDK21 等。其中,JDK8 是一个重要的长期支持版本,引入了 Lambda 表达式、新日期 API、Optional 类等新特性,为开发带来了诸多便利;JDK11 作为长期支持版本,移除了 Java EE 和 CORBA 模块,引入了 ZGC 垃圾收集器等,性能和稳定性都有一定提升;JDK17 和 JDK21 也逐渐受到关注,它们在性能优化、新 API 和工具支持等方面都有新的进步2、垃圾回收机制3、mysql的事务隔离级别4、redis的数据结构,用过zset嘛Zset 的使用 :在实际应用中,Zset 常用于需要对数据进行排序和范围查询的场景。例如,在一个游戏应用中,可使用 Zset 来存储玩家的分数排名,玩家的分数作为有序集合的分数,玩家的 ID 或名称作为成员,通过 Zset 的操作可快速获取排名靠前的玩家、某个玩家的排名范围内的其他玩家等信息。5、redis如何保证数据和数据库一致性两阶段提交 :在事务提交时分为两个阶段,准备阶段和提交阶段。在准备阶段,Redis 将事务信息写入 AOF 文件或通过其他方式记录事务状态;在提交阶段,根据准备阶段的结果决定是否提交事务,若提交成功则更新 Redis 数据,同时通知数据库进行相应的更新操作,若提交失败则进行回滚,以保证数据的一致性。数据库事务和 Redis 事务配合使用 :在应用中同时开启数据库事务和 Redis 事务,在进行数据更新时,先在数据库事务中进行更新操作,然后再在 Redis 事务中进行相应的更新操作,最后一起提交或回滚事务,以此来保证两者数据的一致性,但这种方式需要在代码中仔细控制事务的提交和回滚逻辑。6、消息队列,mafka与kafka的区别Mafka :在 Kafka 的基础上进行了一系列优化和增强,如增加了多租户支持,可满足美团内部多个业务部门的隔离需求;优化了参数配置,使默认配置更贴近业务场景;增加了 Exactly-Once-Semantic(EOS)默认支持,保证消息的精准一次性语义;提供了更好的监控和运维支持,如增加监控指标、提供运维工具等;增强了安全机制,支持 SASL_SSL 验证和按 topic 授权等。Kafka :具有高吞吐量、低延迟、可扩展性等优点,支持发布 - 订阅模式和消息持久化,可满足大规模数据传输和处理的需求,社区活跃,拥有丰富的生态和插件,可与多种工具和框架集成,如 Storm、Spark 等,用于构建实时数据管道和流式处理应用。
查看6道真题和解析
0 点赞 评论 收藏
分享
05-24 12:16
湖南大学 Java
1、全表查询和走索引查询有什么区别呢?为什么左模糊匹配走不了索引查询呢    全表查询就是依次扫描表中的每一行,检查是否符合查询条件,时间复杂度为 O(N),效率低,可能耗时较长。而走索引查询是根据索引快速定位到符合条件的行,时间复杂度通常优于 O(N),效率高,能快速返回查询结果。左模糊匹配走不了索引查询是因为其模式是 “% 模糊内容”。当使用左模糊查询时,数据库无法利用索引快速定位到匹配的行。因为索引是按顺序存储的,左模糊匹配需要从第一个字符开始匹配,数据库无法确定从哪里开始查找,只能进行全表扫描。而右模糊匹配(模糊内容 %)或中间模糊匹配(% 模糊内容 %)在一定条件下可以走索引查询。2、流式传输和传统http请求有什么区别吗传统 HTTP 请求 :是面向请求 - 响应模式,客户端发送请求,服务器返回一个完整的响应体,通常是将整个资源(如一个网页、一张图片等)一次性加载完成。例如,当在浏览器中输入一个网址访问网页时,浏览器会发送 HTTP 请求,服务器处理后将整个网页的 HTML 内容作为响应返回给浏览器。浏览器在收到全部内容后进行渲染显示。如果网页内容很大,用户可能需要等待较长时间才能看到完整的内容。流式传输 :数据是分块传输的,客户端可以一边接收数据一边处理,而不需要等待整个数据传输完成。以视频播放为例,在流式传输模式下,视频数据被分割成许多小的数据块。客户端在接收到足够多的数据块后就可以开始播放视频,同时后续的数据块还在持续传输中。这样用户可以快速看到视频的开头部分,而不用等待整个视频下载完成。3、https如何保证安全当客户端(如浏览器)与服务器建立 HTTPS 连接时,服务器会将自己的数字证书发送给客户端。客户端会检查证书的合法性,包括证书是否由受信任的 CA 颁发、证书中的域名是否与访问的域名一致、证书是否在有效期内等。例如,如果用户访问一个银行网站,浏览器会检查该网站提供的证书是否是由权威的 CA(如 VeriSign 等)颁发的,以此来确认用户连接的是真正的银行服务器,而不是假冒的服务器。通过结合对称加密和非对称加密,HTTPS 在通信双方之间建立了一个双向加密的通道。在连接建立的初期,使用非对称加密来协商出一个对称加密的密钥,之后使用对称加密来加密传输的数据。这样既能保证密钥分发的安全性,又能高效地加密大量数据传输,从而确保数据在传输过程中不被窃取或篡改。例如,当用户在电商网站上输入信用卡信息并提交订单时,这些敏感信息通过 HTTPS 加密通道传输,即使数据在网络中被截获,攻击者也很难解密获取真实的信息。
查看3道真题和解析
0 点赞 评论 收藏
分享
05-24 12:03
湖南大学 Java
1、项目什么时候会触发失败,人为介入;2、sql如何分页展示    在sql中,可以使用limit和offset子句或者row_number()窗口参数来实现分页展示数据; limit number_of_rows表示每页展示的行数,offset offset_value表示跳过前面的行数。例如,对于第一页,offset是0,以此类推;3、http包含了哪些内容    请求方式(get、post、delete、put)、状态码(1XX表示请求已被服务器接收,继续处理、2XX表示请求已成功被服务器接收、理解、并接受、3XX表示需要客户端采取进一步的操作才能完成请求、4XX表示客户端请求有语法错误或无法完成请求、5XX表示服务器在处理请求的过程中发生了错误)4、TCP的状态    三次握手、四次挥手5、如果在建立连接的时候,ack后,开始发送数据,但是ack数据包丢失,这个情况下服务器如何处理这个数据包    首先关于服务器状态的改变,在正常情况下,服务器收到客户端的ACK报文之后,连接就进入了ESTABLISHED(已建立)状态,但是ACK数据包丢失,服务器在发送SYN-ACK报文之后,会等待客户端ACK的确认,此时服务器的状态会一直保持在SYN-RCVD(同步已接受)状态。    服务器的重传机制,在一定时间内,没有收到客户端的ACK报文,服务器会重新发送SYN-ACK报文。    在等待ACK的过程中,服务器会为这个半连接分配一定资源。6、操作系统的进程调度方式,win使用哪些进程调度方式,linux是使用哪些进程调度方式操作系统的进程调度方式主要有以下几种:先来先服务调度算法(FCFS)原理 :按照进程进入就绪队列的先后顺序进行调度,先到达的进程先得到处理。特点 :简单易懂,但可能导致后到达的短进程等待过长。短进程优先调度算法(SJF)原理 :优先调度估计运行时间短的进程。特点 :能有效减少进程的平均等待时间,但难以准确预估进程的运行时间。时间片轮转调度算法(RR)原理 :将 CPU 时间划分为一个个时间片,按就绪队列顺序分配时间片给进程运行,若时间片用完而进程未完成,则进入队列等待下一轮调度。特点 :适合多用户分时系统,保证了每个进程都能获得一定的 CPU 时间,但时间片大小的选择较关键。优先级调度算法原理 :为每个进程设置优先级,优先级高的进程先调度,优先级相同则按先来先服务调度。特点 :灵活但易导致低优先级进程饥饿。多级反馈队列调度算法原理 :设置多个就绪队列,每个队列对应一个优先级和时间片大小,进程根据运行时间和抢占情况在不同队列间移动,优先级高的队列中的进程先调度,同一队列中的进程采用时间片轮转调度。特点 :兼顾多个方面,是较复杂的调度算法,能有效处理各种类型的进程。Windows 的进程调度方式:多优先级反馈调度算法 :Windows 将进程分为多个优先级,优先级高的进程优先调度。系统会根据进程的行为动态调整优先级,如交互式进程的优先级会提高,CPU 密集型进程的优先级会降低。实时进程调度 :对于实时进程,Windows 使用先来先服务和轮转算法,确保实时任务及时得到处理。Linux 的进程调度方式:完全公平调度器(CFS) :基于红黑树数据结构管理进程,通过计算进程的虚拟运行时间来确定调度顺序,优先调度虚拟运行时间少的进程,兼顾进程的公平性和吞吐量。实时进程调度 :包括先来先服务(SCHED_FIFO)和轮转(SCHED_RR)两种策略,确保实时进程及时得到 CPU 资源。过时的 O(1)调度算法 :早期 Linux 使用,基于就绪队列和过期队列,优先调度优先级高的进程。pv操作PV 操作是操作系统中进程同步与互斥的一种重要机制,主要用于处理进程之间的资源竞争和同步问题。PV 操作通过信号量(semaphore)来实现,它包含两种操作:P 操作和 V 操作。PV 操作的定义P 操作(wait 操作) :用于测试信号量的值。若信号量的值大于等于 1,则信号量减 1,进程继续执行;若信号量的值小于 0,则进程进入等待队列等待。P 操作的格式如下:V 操作(signal 操作) :用于将信号量的值加 1。若信号量的值大于等于 0,则直接加 1;若信号量的值小于 0,表示有进程在等待该信号量,此时唤醒一个等待的进程,并将信号量的值加 1。V 操作的格式如下:
查看7道真题和解析
0 点赞 评论 收藏
分享
05-19 23:59
湖南大学 Java
1、慢SQL的具体内容;2、应用DB是如何确保事务的持久性;    写前日志机制:再事务对数据库进行修改之前,数据库系统回先将事务的操作信息记录到日志文件中。这些日志信息包括事务的开始,每个操作的细节(如修改了哪些数据、修改前后的值等)以及事务的结束等内容。日志文件通常被写入磁盘等持久化存储设备上。这样可以保证系统出现故障时,可以更具日志来恢复事务的执行状态;    在mysql中,事务的持久性主要通过1、利用InnoDB的存储引擎的日志机制,当事务对数据进行修改时,InnoDB存储引擎会先将这些修改记录记录到redolog中。redo log属于物理日志,它记录的是数据页的物理修改情况。例如,当更新一行数据时,redo log会记录该数据页中具体字节的修改内容。binlog时记录了所有数据库的修改操作,包括数据的增删改查。binlog是逻辑日志,记录的是sql语句或者行的变化。例如,执行一条“UPDATE table SET column = value WHERE condition”语句,binlog会记录这条语句的执行细节。2、通过事务提交时的磁盘写入操作:当事务提交时,mysql会将事务涉及的数据页从内存中的缓冲池刷新到磁盘。缓冲池是InnoDB用于缓存数据页和索引页的内存区域,数据的修改首先是在内存中进行的。写入操作不是完全同步的,而是结合了redo log机制,因为redo log已经保证了事务的持久性,数据页的最终写入磁盘可以在检查点过程中进行。3、事务的隔离级别4、自适应哈希索引流的机制    自适应哈希索引是一种用于优化数据库性能的机制,它可以根据数据库的负载和查询模式动态地创建和维护哈希索引,以下是具体介绍:工作原理    数据页监控 :InnoDB 存储引擎会监控对表中数据页的访问情况。当发现某些数据页被频繁访问时,就会考虑为这些页创建哈希索引。    哈希索引创建 :如果一个数据页被访问的次数超过了设定的阈值,并且内存中还有足够的空间来存储哈希索引结构,InnoDB 会自动在后台为该数据页上的某个索引创建一个哈希索引。    哈希索引维护 :随着数据的插入、删除和更新操作,哈希索引会自动进行维护,以保证其有效性和准确性。当数据页的访问频率降低,或者内存空间不足时,InnoDB 也会自动删除不再需要的哈希索引。5、网络协议http、https协议的区别6、timewait的作用7、TCP如何进行拥塞控制8、操作系统的内存管理机制    虚拟内存(虚拟内存是一种内存管理技术,使得程序可以使用比实际物理内存更大的地址空间。它通过将程序的地址空间分割成多个页面或者段,然后将这些页面或者段部分的存储在内存中,而将其他部分存储在磁盘外部存储器上。当需要访问一个不在内存中的页面时,由操作系统负责将其调入内存):分页式存储、段页式存储    地址映射:静态重定位(绝对地址映射)、动态重定位(相对地址映射)    内存保护:分区保护:在分区分配系统中,为每个分区设置保护机制来限制进程的访问范围;页表保护:在虚拟内存系统中,通过页表来实现内存保护。每个进程都有自己的页表,页表中除了包含虚页到物理块的映射关系外,还包含访问权限位。9、软链接和硬链接的区别软链接软链接是一个独立的文件,它包含了一个指向目标文件或目录的路径。从本质上来说,软链接就像是一个快捷方式,它有自己的 inode(文件系统用于存储文件元数据的结构)。例如,如果有一个文件 file1,创建一个软链接 symlink1 指向它,symlink1 有自己的 inode,其内容是指向 file1 的路径。软链接可以跨文件系统,也就是说,软链接可以位于与目标文件不同的文件系统上。例如,目标文件在 /dev/sda1 分区,软链接可以在 /dev/sda2 分区。硬链接硬链接是直接指向目标文件 inode 的链接。多个硬链接共享同一个 inode,它们是同一个文件的不同名称。例如,对于文件 file1,创建硬链接 hardlink1 后,hardlink1 和 file1 都指向同一个 inode,操作系统将它们视为同一个文件的两个入口。硬链接不能跨文件系统。因为硬链接依赖于目标文件的 inode,而 inode 号在不同的文件系统中是独立的,所以硬链接必须位于与目标文件相同的文件系统中。
查看9道真题和解析
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务