专栏首页游戏开发司机快收藏-2021最新阿里精选面试题(网络篇)

快收藏-2021最新阿里精选面试题(网络篇)

1 ICMP 是什么协议, , 处于哪一层?

Internet 控制报文协议,处于网络层(IP 层)

2. 讲一下 NIO 和网络传输.

NIO Reactor 反应器模式,例如汽车是乘客访问的实体 reactor,乘客上车后到售票员处 Acceptor 登记,之后乘客 便可休息睡觉了,到达乘客目的地后,售票员 Aceptor 将其唤醒即可。持久 TCP 长链接每个 client 和 server 之间有存在一 个持久连接,当 CCU(用户并发数量)上升,阻塞 server 无法为每个连接运行 1 个线程,自己开发 1 个二进制协议,将 message 压缩至 3-6 倍,传输双向且消息频率高,假设 server 链接了 2000 个 client,每个 client 平均每分钟传输 1-10 个 message,1 个 messaged 的大小为几百字节/几千字节,而 server 也要向 client 广播其他玩家的当前信息,需要高速处 理消息的能力。Buffer,网络字节存放传输的地方,从 channel 中读写,从 buffer 作为中间存储格式,channel 是网络连 接与 buffer 间数据通道,像之前的 socket 的 stream。

3. Https 工作流程?

a、客户端发送自己支持的加密规则给服务器,代表告诉服务器要进行连接了

b、服务器从中选出一套加密算法和 hash 算法以及自己的身份信息(地址等)以证书的形

式发送给浏览器,证书中包含服务器信息,加密公钥,证书的办法机构

c、客户端收到网站的证书之后要做下面的事情:

c1、验证证书的合法性

c2、如果验证通过证书,浏览器会生成一串随机数作为密钥 K,并用证书中的公钥进行加密

c3、用约定好的 hash 算法计算握手消息,然后用生成的密钥 K 进行加密,然后一起发送给服务器

d、服务器接收到客户端传送来的信息,要求下面的事情:

d1、用私钥解析出密码,用密码解析握手消息,验证 hash 值是否和浏览器发来的一致

d2、使用密钥加密消息,回送

如果计算法 hash 值一致,握手成功

4. 服务限流的方式?

漏桶:水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求。

令牌桶算法:系统会按恒定 1/QPS 时间间隔(如果 QPS=100,则间隔是 10ms)往桶里加入Token,如果桶已经满了就不再加了.新请求来临时,会各自拿走一个 Token,如果没有Token 就拒绝服务。

基于 redis 实现的限流:假设每分钟访问次数不能超过 10 次,在 Redis 中创建一个键,过期 60 秒,对此服务接口的访问就把键值加 1,在 60 秒内增加到 10 的时候,禁止访问服务接口。

计数器,滑动窗口

文章分享自微信公众号:
游戏开发司机

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

原始发表时间:2021-12-29
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

推荐阅读

  • 【玩转 Cloud Studio】有奖调研征文,千元豪礼等你拿

    腾讯云开发者社区联合腾讯云 Cloud Studio 团队发起【玩转 Cloud Studio】有奖调研征文活动,想听听你玩转的独门秘籍,更有机械键盘、鹅厂公仔、CODING 定制公仔等你来拿!

    腾讯云开发者社区
    腾讯云开发者社区
  • 【玩转 Cloud Studio】在线写代码体验

    作为一个程序员,现在配置电脑,怎么也得内存16G,运行一个IDEA的软件老说才能刚好够用,平常还需要启动一些其余的中间件,所以内存大点肯定是最好的,但是IDEA的运行速度还取决于CPU的运行速度,最新的12代英特尔酷睿

    是小张啊喂
    Cloud Studio
  • 【玩转 Cloud Studio】 Cloud Studio的入门教程

    Cloud Studio是腾讯云发布的云端开发者工具,支持开发者利用Web IDE(集成开发环境),实现远程协作开发和应用部署。

    代码的路
    Cloud StudioPythonJavaSQL
  • 腾讯云发布云端开发者工具Cloud Studio 帮助开发者实现一站式开发

    8月15日,腾讯云发布一站式云端开发工具Cloud Studio ,支持开发者利用Web IDE(集成开发环境),实现远程协作开发和应用部署。

    Cloud Studio
  • 分布式服务接口请求顺序性保证

    服务A调用服务B,先插入再删除。俩请求过去了,落在不同机器上,可能插入请求因为某些原因执行慢一些,导致删除请求先执行了,此时因为没数据所以啥效果也没有;结果这个时候插入请求过来了,好,数据插入进去。

    JavaEdge
  • 保姆级教程:写出自己的移动应用和小程序(篇四)

    本系列的上一篇文章我们主要学习了如何在自己的 iOS 或 Android 应用中引入第三方 SDK。随着引入 SDK 文章结束,关于应用开发入门系列的文章也就结束了。今天,我们开始学习小程序的开发入门,看看如何在小程序中写出属于自己的 Hello World。

    火爆的小茶壶
    小程序·云开发解决方案移动开发平台腾讯云开发者社区iOSAndroid
  • 持续集成实战 —— Jenkins自动化测试环境搭建

    在日常的项目测试过程中,搭建与维护测试环境是广大测试同学的一个基础技能,相信也很少会有公司完全不让测试去碰自己的测试环境。那么工作中大量的创建、部署、管理、维护等一系列的重复操作就成为了整个测试项目中一个巨大的工作量。

    Austin_zhai
    JenkinsCCI 持续集成
  • mybatis-plus 应用1:【默认分页插件和自定义分页插件实现】

    mapper.xml的实现方式是一模一样的,使用分页插件的话,不需要在sql中写 limit和offset信息会有插件自动注入

    danielxiao
    Spring BootMyBatisPostgreSQL
  • mybatis-plus 应用2:【常用的多租户方案对比,以及实现多租户功能】

    就用school表举例,每一张数据库表都需要加上tenant_id这一列,记住是每一张,每一张,每一张

    danielxiao
    Spring BootMyBatis
  • mybatis-plus 性能优化:【大数据量mybatis序列化和反序列化慢的问题】

    本人在开发多个项目中,都遇到过同样的问题,有些 数据量(超过20w条)条数多的接口,接口特别慢,列举两个我碰到过的问题。

    danielxiao

扫码关注腾讯云开发者

领取腾讯云代金券