首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛姥姥
华东师范大学 Java
发布于上海
关注
已关注
取消关注
@代码界的小白:
远程服务调用(RPC)高频面试题!(有RPC项目必看!)
之前给大家推荐过手写RPC的项目,项目资源来自慕课。 除此之外,比如Guide哥、牛客的声哥等,也都出过对应的教程。 几年前香饽饽的项目,如今变得烂大街。 周日小白在帮大家修改简历的时候,发现很多简历上都有RPC。 那么大家对于RPC真正了解多少呢? 是否去阅读过经典RPC框架的源码呢? 那么面试又会有哪些比较高频的问题呢? 今天小白就给大家盘点一些高频关于远程服务调用的面试题。 1.微服务之间如何进行通信? 参考答案: 单体项目时:一次服务调用发生在同一台机器上的同一个进程内部,也就是说调用发生在本机内部,因此也被叫作本地方法调用。 微服务项目时:服务提供者和服务消费者运行在两台不同物理机上的不同进程内,它们之间的调用相比于本地方法调用,可称之为远程方法调用,简称 RPC 2.RPC了解多少?都有哪些? 参考答案:RPC全称称: Remote Procedure Calls 远程服务调用,是进行服务之间相互调用的。 受限语言的开源 RPC 框架 Dubbo:阿里2011年开源,仅支持 Java 语言。(官方文档:https://dubbo.apache.org/zh/docs/) Motan:微博2016 年开源,仅支持 Java 语言。(Github地址:https://github.com/weibocom/motan) Tars:腾讯2017 年开源,仅支持 C++ 语言。(官方文档:https://tarscloud.github.io/TarsDocs/installation/source.html) Spring Cloud Feigh:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言(Github:https://github.com/OpenFeign/feign)【后面又出现了SpringCloud Alibaba, Spring-Cloud-Alibaba 项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的 Spring 框架模式和抽象,为使用阿里巴巴产品的 Java 开发者带来 Spring-Boot 和 Spring-Cloud 的好处。 】 跨语言平台的开源 RPC 框架主要有以下几种。 GRPC:Google 2015 年开源,支持多种语言。(官方文档:https://grpc.io/docs/) Thrift:最初Facebook 开发的内部框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一,支持多种语言。 3.RPC包含哪些部分? 参考答案:一个RPC框架要包含 客户端和服务端建立网络连接模块( server模块、client模块 ) 服务端处理请求模块 协议模块 序列化和反序列模块。 4.设计一个RPC会考虑哪些问题? 参考答案:设计一个RPC框架,可以从PRC包含的几个模块去考虑,对每一个模块分别进行设计。 客户端和服务端如何建立网络连接? 服务端如何处理请求? 数据传输采用什么协议? 数据该如何序列化和反序列化? 5.服务端如何处理请求?有哪些方式? 参考答案:服务端接收到客户端的请求后,常见的处理方式有三种,分别是BIO、NIO和AIO。 同步阻塞方式(BIO):客户端发一次请求,服务端生成一个对应线程去处理。当客户端同时发起的请求很多时,服务端需要创建多个线程去处理每一个请求,当达到了系统最大的线程数时,新来的请求就无法处理了。 同步非阻塞方式 (NIO):客户端发一次请求,服务端并不是每次都创建一个新线程来处理,而是通过 I/O 多路复用技术进行处理。就是把多个 I/O 的阻塞复用到同一个 select 的阻塞上,从而使系统在单线程的情况下可以同时处理多个客户端请求。这种方式的优势是开销小,不用为每个请求创建一个线程,可以节省系统开销。 异步非阻塞方式(AIO):客户端发起一个 I/O 操作然后立即返回,等 I/O 操作真正完成以后,客户端会得到 I/O 操作完成的通知,此时客户端只需要对数据进行处理就好了,不需要进行实际的 I/O 读写操作,因为真正的 I/O 读取或者写入操作已经由内核完成了。这种方式的优势是客户端无需等待,不存在阻塞等待问题。 使用场景BIO 适用于连接数比较小的业务场景,这样的话不至于系统中没有可用线程去处理请求。这种方式写的程序也比较简单直观,易于理解。 NIO 适用于连接数比较多并且请求消耗比较轻的业务场景,比如聊天服务器。这种方式相比 BIO,相对来说编程比较复杂。 AIO 适用于连接数比较多而且请求消耗比较重的业务场景,比如涉及 I/O 操作的相册服务器。这种方式相比另外两种,编程难度最大,程序也不易于理解。 【来自网络】 6.序列化与反序列的方式有哪些? 参考答案: 常用的序列化方式分为两类 文本类如 XML/JSON 等 二进制类如 PB/Thrift 等 7.有哪些序列化协议? 8.为什么要进行序列化和反序列化? 参考答案:为什么需要序列化和反序列化,有下面几点原因。 解决内存中数据结构到字节序列的映射过程中,如何保留各个结构和字段间的关系而生的技术 。 解决异构系统的数据传输,比如大小端、远端的持久存储; 压缩数据,加快网络传输。【 网络传输耗时一方面取决于网络带宽大小,另一方面取决于数据传输量。想加快网络传输,要么提高带宽,要么减小数据传输量,而对数据进行编码的主要目的就是减小数据传输量。比如一部高清电影原始大小为 30GB,如果经过特殊编码格式处理,可以减小到 3GB,同样是 100MB/s 的网速,下载时间可以从 300s 减小到 30s。 】 总结 在分布式微服务系统中,服务之间的调用需要通过RPC远程调用的方式。 远程调用的过程中会涉及到建立网络链接(http、socket)、进行网络通信(开放协议、私有协议)、进行数据传输(序列化和反序列化)。 通信框架解决客户端和服务端如何建立连接、管理连接以及服务端如何处理请求的问题。 通信协议解决客户端和服务端采用哪种数据传输协议的问题。 序列化和反序列化解决客户端和服务端采用哪种数据编解码的问题。 在实际的开发中,选择RPC框架也是一个技术活,很多大公司都会根据开源的框架进行自研。 如果对开源的RPC框架有一定的研究,对面试一定是一个加分项! 之前推荐的RPC项目,其实还可以进行进一步的优化,可以参考开源框架进行改进! 公众号:代码界的小白,会更新互联网消息、动态、高频八股、实战项目等。 本文正在参与【内行知多少】 征文活动,一起来聊聊内行人才懂的那些事吧,高额牛币和百元京东卡等你来领~
点赞 40
评论 3
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
05-05 20:51
三江学院 C++
AI Agent面经 2(持续更新)
Q1:prefix Decoder 和 causal Decoder 和 EncoderDecoder 区别是什么?答案:prefix Decoder 和 causal Decoder 和 Encoder-Decoder 区别在于 attention mask不同:Encoder-Decoder:在输入上采用双向注意力,对问题的编码理解更充分。适用任务:在偏理解的 NLP 任务上效果好。缺点:在长文本生成任务上效果差,训练效率低。causal Decoder:自回归语言模型,预训练和下游应用是完全一致的,严格遵守只有后面的token才能看到前面的token的规则。适用任务:文本生成任务效果好。...
查看3道真题和解析
点赞
评论
收藏
分享
05-07 18:50
中国矿业大学(北京) Web前端
27届大厂前端暑期实习面试计算机网络高频考点总结与面试范式分析
研究背景与样本说明本文基于腾讯(支付、企微、腾讯音乐、QQ 浏览器、腾讯新闻等)、字节跳动(TikTok、用户增长、交广等)、百度、美团、京东、Shopee、虾皮、携程等多家互联网公司前端实习面试样本进行归纳分析,重点聚焦计算机网络相关考点。样本特征如下: 覆盖一面、二面及深度追问场景 包含项目驱动型提问 + 八股知识型提问 明显体现当前趋势:从“记忆型八股”转向“原理 + 场景 + 取舍”你往下看就知道考的高不高频率了就是说核心结论:计网考察的三层模型当前大厂前端计网考察,已形成稳定的三层结构:1. 基础认知层(必答正确) HTTP 各版本差异 TCP / UDP 基础 HTTPS 原...
我的求职进度条
点赞
评论
收藏
分享
03-22 10:43
哈尔滨工业大学(威海) 嵌入式软件开发
为啥混了段实习还是这么难找实习啊
本来觉得混了段实习应该比找第一段的时候好点 怎么感觉还是没有面试哇
牛客32965343...:
是哈尔滨工业大学威海校区的祈翔同学吗😆
点赞
评论
收藏
分享
03-20 12:29
门头沟学院 算法工程师
这也要踩测试一脚
985柜员:
开发还敢还叫,全部让自测就老实了
点赞
评论
收藏
分享
05-06 11:53
杭州电子科技大学 算法工程师
华为暑期未面直接挂
起因是研一不知天高地厚,投了华为日常实习-软件开发,想着虽然没啥准备但人生第一场面试高低体验一下,结果也是理所当然喜提一面挂。后面发奋沉淀一年想要再战暑期实习(AI方向),结果投了后直接被卡在投递成功环节一个月,根本推进不到简历筛选环节,问HR说之前的面试成绩会保留,所以实习是推进不了了,只能看秋招还有没有机会了。当初到底是谁告诉我华为面评占比不重的
我的求职进度条
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
27 届前端 er 第一段实习故事
2.3W
2
...
30天的回望与总结
1.9W
3
...
招了一年实习生,撑过三个月的一只手数得清
9870
4
...
春招没进大厂,我的人生会完蛋吗
9194
5
...
字节一面
5369
6
...
破防了,腾讯技术实习月薪涨了近50%…
4550
7
...
恒生春招
3728
8
...
暑期结束了............(帮选offer)
3398
9
...
小米top2简历全挂(但我同学已oc)
2695
10
...
0基础速通阿里暑期
2679
创作者周榜
更多
正在热议
更多
#
你的实习产出是真实的还是包装的?
#
88439次浏览
638人参与
#
什么专业适合考公
#
69413次浏览
345人参与
#
在爱玛,骑向未来
#
44226次浏览
434人参与
#
机械人,说说你的烦心事
#
148452次浏览
1162人参与
#
毕业季,给职场新人一些建议
#
221050次浏览
2600人参与
#
工作压力大,你会干什么?
#
82247次浏览
707人参与
#
选offer应该考虑哪些因素
#
172399次浏览
1057人参与
#
工作后,你落下了哪些病根
#
42293次浏览
294人参与
#
机械人,秋招第一次笔试的企业是哪家?
#
103394次浏览
707人参与
#
巨人网络工作体验
#
76569次浏览
507人参与
#
如何缓解入职前的焦虑
#
290710次浏览
1505人参与
#
携程笔试
#
174114次浏览
916人参与
#
我的第一份实习怎么找的
#
288501次浏览
2108人参与
#
重来一次,我还会选择这个专业吗
#
466532次浏览
3983人参与
#
你被哪些公司挂了?
#
197891次浏览
1076人参与
#
职场新人体验
#
192663次浏览
1241人参与
#
实习生的蛐蛐区
#
957355次浏览
4839人参与
#
实习生工资多少才算正常?
#
76005次浏览
526人参与
#
应届生,你找到工作了吗
#
173996次浏览
900人参与
#
找工作中的小确幸
#
92792次浏览
472人参与
#
你上一次加班是什么时候?
#
157395次浏览
823人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务