- 博客(306)
- 收藏
- 关注
原创 面经整理——AI
模型上下文协议(Model Context Protocol)旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。将 LLM 与资源之间的通信划分为三个主要部分:客户端、服务器和资源。客户端负责发送请求给 MCP 服务器,服务器则将这些请求转发给相应的资源。这种分层的设计使得 MCP 协议能够更好地控制访问权限。
2025-12-09 21:59:44
730
原创 面经整理——Go
模块化设计:将复杂系统拆分为多个独立进程(如 Web 服务器的 “主进程 + 工作进程” 架构);资源共享:多个进程共享文件、数据库连接、硬件设备(如打印机);负载均衡:将任务分发到多个进程并行处理(如分布式计算);故障隔离:单个进程崩溃不影响整个系统(如微服务架构)。cap是append后的大小。
2025-12-08 18:37:53
866
原创 面经整理——算法
采用分治的思想,对于一组数据,选择一个基准元素(哨兵),通常选择第一个或最后一个元素,通过第一轮扫描,比base小的元素都在base左边,比base大的元素都在base右边,再有同样的方法递归排序这两部分,直到序列中所有数据均有序为止。如,选取下标为0的元素作为哨兵,r=num.size()-1, 首先移动r找到比哨兵小的元素,将r当前指向的元素放到l所在位置。然后移动l找到大于等于哨兵的位置,替换r所在的位置。依次交替,知道l与r相遇,将相遇位置赋予哨兵的值。
2025-12-08 17:54:32
176
原创 面经整理——计算机网络
数字签名:用来让客户端验证服务器身份。服务器用自己的私钥利用摘要(最好是不可逆转的,因为每个人都可以利用公钥获得摘要,所以最好无法通过摘要推断出原始数据)生成数字签名,客户端用公钥进行解密验证服务器身份。数字证书:为了防止公钥不被篡改,在通信建立之初,由证书持有者(如服务器、客户端)主动向对方发送。提取 CA 的公钥:若当前证书是 “服务器终端证书”,其颁发者是 “中间 CA”,需先找到中间 CA 的证书(由服务器一起传递的证书链中获取);若当前证书是 “中间 CA 证书”,其颁发者是 “根 CA
2025-12-08 17:54:09
1112
原创 Java集合相关面试题
BlockingQueue (阻塞队列)是一个接口,继承自 Queue。BlockingQueue阻塞的原因是其支持当队列没有元素时一直阻塞,直到有元素;还支持如果队列已满,一直等到队列可以放入新元素时再放入。取模操作可以变为&操作分布较为均匀方便扩容。
2025-11-04 16:10:48
808
原创 Java基础面试题
Java核心概念摘要: Java通过JVM实现跨平台,将源码编译为字节码后由JVM翻译执行。JDK包含开发工具(如编译器),JRE提供运行时环境,JVM负责执行。数据类型转换包括自动、强制和字符串转换,BigDecimal用于精确计算而double可能丢失精度。自动装箱/拆箱方便基本类型与包装类转换,Integer缓存优化了-128至127的对象复用。 面向对象特性中,多态通过重载、重写、接口实现提高扩展性;抽象类定义通用结构但不可实例化;接口规范行为契约,支持多重继承。这些特性构成了Java强大的面向对象
2025-09-01 16:47:22
825
原创 java基础面试题
JVM java虚拟机我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM。
2025-08-06 10:29:51
995
原创 6.19 redis面试场景题
QPS(每秒查询率)集中在特定的Key、带宽使用率集中在特定的Key、CPU使用时间占比集中在特定的Key。在查询商品库存时加排他锁分布式锁利用分布式锁+分段缓存利用redis的incr、decr的原子性 + 异步队列。
2025-06-19 11:18:54
1208
原创 6.17 Redis面试题 数据结构 线程模型 事务
在 Redis 6.0 版本之后,也采用了多个 I/O 线程来处理网络请求,这是因为随着网络硬件的性能提升,Redis 的性能瓶颈有时会出现在网络 I/O 的处理上。到 Redis 6.0 之后,就将网络IO的处理改成多线程的方式了,因为随着网络硬件的性能提升,Redis 的性能瓶颈有时会出现在网络 I/O 的处理上。虽然压缩列表紧凑型的内存布局能节省内存开销,但是如果保存的元素数量增加了,或是元素变大了,会导致内存重新分配,最糟糕的是会有**「连锁更新」**的问题。
2025-06-17 11:34:43
1116
原创 6.16 操作系统面试题 中断 网络io
CPU停下当前的工作任务,去处理其他事情,处理完后回来继续执行刚才的任务。中断事件来自于CPU外部的被称为外部中断,来自于CPU内部的则为内部中断。内部中断来自于处理器内部,其中,常被用于系统调用;而异常则是引起的。异常也和不可屏蔽中断一样不受eflags寄存器的IF位影响,区别在于不可屏蔽中断发生的事件会导致处理器无法运行(如断电、电源故障等),而异常则是影响系统正常运行的中断(如除0、越界访问等)。
2025-06-16 16:05:32
701
原创 6.15 操作系统面试题 锁 内存管理
操作系统设计了虚拟内存,每个进程都有自己的独立的虚拟内存,我们所写的程序不会直接与物理内打交道。分页是把整个虚拟和物理内存空间切成一段段固定尺寸的大小。虚拟地址与物理地址之间通过页表来映射。页表是存储在内存里的,内存管理单元 (MMU)就做将虚拟内存地址转换成物理地址的工作。访问的虚拟地址在页表中查不到时,系统会产生一个缺页异常,进入系统内核空间分配物理内存、更新进程页表,最后再返回用户空间,恢复进程的运行。分页不会有外部碎片,但会有内部碎片页号+偏移量。
2025-06-15 15:56:22
640
原创 6.12 操作系统面试题 进程管理
主要区别在于权限和可执行的操作内核态:CPU可以执行所有的指令和访问所有的硬件资源。内存管理、进程管理、设备驱动程序管理、系统调用等。用户态:CPU只能执行部分指令集,无法直接访问硬件资源。安全性:避免恶意程序对系统资源进行破坏稳定性:用户态程序出问题不会影响系统隔离性:使得操作系统内核与用户程序之间有了明确的边界,有利于系统的模块化和维护。
2025-06-12 10:47:06
994
原创 6.11 MySQL面试题 日志 性能 架构
binlog 是追加写,写满一个文件,就创建一个新的文件继续写,不会覆盖以前的日志,保存的是全量的日志,用于备份恢复、主从复制;binlog 有 3 种格式类型,分别是 STATEMENT(默认格式)、ROW、 MIXED。
2025-06-11 12:10:24
1037
原创 6.10 Mysql 事务 锁 面试题
是通过行级锁来实现的,序列化隔离级别下,普通的 select 查询是会对记录加 S 型的 next-key 锁,其他事务就没没办法对这些已经加锁的记录进行增删改操作了,从而避免了脏读、不可重复读和幻读现象。尽量在开启事务之后,马上执行 select …执行 update 的时候,会加行级别锁,保证了一个事务更新一条记录的时候,不会被其他事务干扰。执行 update 的时候,会加行级别锁,保证了一个事务更新一条记录的时候,不会被其他事务干扰。是原子性,主要通过锁+undolog 日志保证原子性的。
2025-06-10 17:28:19
637
原创 java 面向对象编程
访问构造器语法:this(参数列表);注意只能在构造器中使用(即只能在构造器中访问另外一个构造器,必须放在第一条语句)引用数据类型:引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参。构造时需验证数据有效性的话可以在构造器中使用setXX方法。super代表父类的引用,用于访问父类的属性、方法、构造器。extend 子类自动拥有父类定义的属性和方法。方法的多态PloyMethod.java。基本数据类型:值拷贝、形参不影响实参。重写和重载就体现多态。
2025-06-10 16:53:51
353
原创 微服务商城-订单微服务
mr 包提供了一个在 Go 语言中执行 MapReduce 操作的框架。它支持并发执行映射和归约函数,并且可以自定义设置。创建订单时首先检查用户、商品、收货地址是否存在(并行)利用dtm创建订单 保证订单和商品库存的数据一致性。修改订单状态为已关闭。
2025-06-10 09:53:08
400
原创 6.9 Mysql面试题 索引相关
页目录就是由多个槽组成的,槽相当于分组记录的索引。我们通过槽查找记录时,可以使用二分法快速定位要查询的记录在哪个槽(哪个记录分组),定位到槽后,再遍历槽内的所有记录,找到对应的记录。建立联合索引时,要把区分度大的字段排在前面,这样区分度大的字段越有可能被更多的 SQL 使用到。使用前缀索引是为了减小索引字段大小,可以增加一个索引页中存储的索引值,有效提高索引的查询速度。在一些大字符串的字段作为索引时,使用前缀索引可以帮助我们减小索引项的大小。(a, b, c) a是全局有序的,bc是全局无序局部有序的。
2025-06-09 17:43:41
1229
原创 微服务商城-商品微服务
我们使用Sorted Set来存储,member为商品的id,即我们只在Sorted Set中存储缓存索引,查出缓存索引后,因为我们自动生成了以主键id索引为key的缓存,所以查出索引列表后我们再查询行记录缓存即可获取商品的详情,Sorted Set的score为商品的创建时间。果是在单体架构的业务当中,是不需要用到分布式事务的.单体架构中,涉及到需要保证多个事务同时成功的场景,只需要创建一个全局的事务对象 如:tx := db.Begin(),然后统一用这一个tx去管理接下来的业务逻辑即可。
2025-06-09 10:42:11
1303
原创 6.8 MySql面试题 基础、存储引擎
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码在1NF基础上消除非主属性对主码的部分函数依赖)第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。字符, ascii一个字符占一个字节,utf-8一个字符占四个字节。错误:(订单号,产品号) 订单时间 只依赖于订单号。
2025-06-08 11:30:13
916
原创 6.5 计算机网络面试题
序列号:解决网络包乱序问题确认应答号:解决丢包问题控制位:ACK确认应答 RST强制断开连接 SYN建立连接 FIN断开连接。
2025-06-05 11:15:59
482
原创 微服务商城-用户微服务
将输入的password md5加密后与库中的数据进行比对。根据username查询用户表中的信息。通过uid查询列表 分页 返回总条数。软删除 更新 isdelete。
2025-06-04 21:02:33
247
原创 6.4 计算机网络面试题
及时失效令牌,使用黑名单等C/S 架构是指客户端和服务器端之间的通信模式,客户端通常是一个安装在用户计算机上的应用程序,而服务器则提供数据和服务。B/S 架构是指通过浏览器访问服务器的模式,用户通过浏览器与服务器交互,而不需要安装特定的客户端软件。C/S 架构:适合需要高性能、复杂交互和大量数据处理的场景,但维护和更新成本较高。B/S 架构:适合需要广泛访问、易于维护的应用,用户体验良好,更新简单。
2025-06-04 10:06:33
717
原创 6.3 计算机网络面试题
Socket 使用 TCP: 当使用流式 Socket 时,实际上是通过 TCP 协议进行数据传输。Socket 提供了一个简单的接口,使得开发者可以方便地使用 TCP 协议进行网络通信。Socket 是一种网络通信的抽象,提供了一种用于在网络上进行数据交换的接口。它是应用程序与网络协议之间的中介。在 Go 语言中,利用接口和直接为结构体编写函数之间有几个重要区别。DNS的全称是Domain Name System(域名系统)通过"Content-Length"头字段来进行。
2025-06-03 16:28:52
974
原创 百度golang研发一面面经
观察者模式是一种强大且灵活的设计模式,适用于需要实现对象间动态交互的场景。通过定义清晰的接口和方法,观察者模式能够有效地管理对象之间的关系,提高代码的可维护性和可扩展性。
2025-06-02 11:07:22
925
原创 字节golang后端二面
是一个强大的工具,适用于需要线程隔离的数据存储场景。合理使用可以提高性能和简化代码,但也需要注意内存管理和线程安全问题。
2025-06-01 12:36:40
1348
原创 5.28 后端面经
参考:https://blog.csdn.net/weixin_45565886/article/details/136098371客户端 → 服务器:发起请求,支持哪些加密算法?服务器 → 客户端:返回证书和选定的算法。客户端验证证书 → 生成随机密钥用公钥加密 → 发送给服务器。服务器用私钥解密 → 双方生成对称密钥。后续通信全部使用对称密钥加密。机密性(对称加密数据)身份认证(数字证书验证)完整性(散列算法防篡改)这使得 HTTPS 成为保护隐私(如密码、支付信息)的核心技术。
2025-05-28 13:56:56
923
原创 贝壳后端golang面经
gRPC是Google开源软件,gRPC是基于HTTP2.0协议,而HTTP2.0是基于二进制的HTTP协议升级版本,底层使用Netty框架支持。微服务化,跨平台的服务之间远程调用;protobuf – 跨平台多语言使用协议缓冲区(Protocol Buffers)
2025-05-27 19:42:02
1433
2
原创 5.26 面经整理 360共有云 golang
参考:https://www.cnblogs.com/goloving/p/13590955.htmlselect for update是一种常用的加锁机制,它可以在查询数据的同时对所选的数据行进行锁定,避免其他事务对这些数据行进行修改。比如涉及到金钱、库存等。一般这些操作都是很长一串并且是开启事务的。如果库存刚开始读的时候是1,而立马另一个进程进行了update将库存更新为0了,而事务还没有结束,会将错的数据一直执行下去,就会有问题。所以需要for upate 进行数据加锁防止高并发时候数据出错。
2025-05-26 19:52:26
1273
原创 5.22 面经整理
代码段:代码段是用来存放可执行文件的操作指令,可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,所以只准许读取操作,它是不可写的。数据段:存放程序静态分配的变量和全局变量。BSS段:包含了程序中未初始化的全局变量,在内存中 bss 段全部置零。堆 heap:当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
2025-05-22 14:46:04
289
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅