当前位置: 首页 > news >正文

腾讯JAVA后端秋招面试总结

腾讯秋招的面经,岗位是 java 后端开发。

说一下BIO、NIO和AIO

答:
  • BIO是阻塞IO。在上一个线程的任务执行完之前,该线程必须阻塞等待上一个线程执行完毕。

  • NIO是非阻塞IO。一旦是响应事件发生了,该线程就会将对应的响应事件交给对应的事件处理器进行处理。

  • AIO是异步IO。主线程接收到请求后,可以分发给其他线程进行异步处理,主线程继续接收其他请求。

补充:

BIO(Blocking IO)、NIO(Non-Blocking IO)和AIO(Asynchronous IO)是Java中常用的IO模式。它们之间的主要区别在于IO的处理方式和效率。

BIO是同步阻塞IO,在进行IO操作时,必须等待IO操作完成后才能进行下一步操作,这时线程会被阻塞。BIO适用于连接数比较小且固定的架构,由于线程阻塞等待IO操作,所以并发处理能力不强。

NIO是同步非阻塞IO,可以支持多个连接同时进行读写操作,因此可以用较少的线程来处理大量的连接。NIO通过Selector来监听多个Channel的状态,当Channel中有数据可读或可写时,Selector会通知程序进行读写操作。NIO适用于连接数多且连接时间较短的场景。

AIO是异步非阻塞IO,与NIO不同的是,AIO不需要用户线程等待IO操作完成,而是由操作系统来完成IO操作,操作系统完成IO操作后会通知用户线程处理。AIO适用于连接数较多且连接时间较长的场景,如高性能网络服务器等。

你说一下NIO是如何实现同步非阻塞的?主线程是只有一个嘛?

<
http://www.lryc.cn/news/156613.html

相关文章:

  • 随着iPhone 15降临,是时候扔掉所有的Lightning充电器了
  • huggingface 使用入门笔记
  • ASP.NET Core 中的 Razor Pages
  • C语言入门 Day_14 for循环
  • 深入解析 Socks5 代理与网络安全
  • Vue + Element UI 前端篇(十二):用户管理模块
  • C# 设计保存文件
  • Leetcode 1486.数组异或操作
  • 【Java】Java核心API概述
  • 微信小程序检查版本更新
  • Linux查看是虚拟机还是物理机
  • 【数据结构】二叉搜索树——二叉搜索树的概念和介绍、二叉搜索树的简单实现、二叉搜索树的增删查改
  • 通过linux定时任务删除es日志索引
  • 【跟小嘉学 Rust 编程】二十二、常用 API
  • 【ES6】Class中this指向
  • Python 编程竟然如此幽默!揭秘程序员们的搞笑日常,快来看看吧!
  • Linux c++开发-03-使用CMake组织工程
  • 【C++】函数重载 ④ ( 函数指针定义的三种方式 | 直接定义函数指针 | 通过 函数类型 定义 函数指针 | 通过 函数指针类型 定义 函数指针 )
  • 异常-java
  • 软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法
  • 深入Go语言:进阶指南
  • FOXBORO FBM232 P0926GW 自动化控制模块
  • 【C# Programming】编程入门:方法和参数
  • 【报错】 Cannot create property ‘showColumn‘ on number ‘-1‘
  • C++容器string的运用和注意
  • 用对工具,你的全渠道电子商务业务就成功了一半
  • TDengine学习(1):采集量(Metric),标签(label),数据采集点,表,超级表,子表、库
  • 【洛谷 P1029】[NOIP2001 普及组] 最大公约数和最小公倍数问题 题解(辗转相除法)
  • Golang 中的 errors 包详解:返回自定义 error 类型
  • C#开发的OpenRA游戏之信标按钮