JAVA面试

2023-10-29

JAVA网络通信篇

一、TCP和UDP有什么区别?TCP为什么是三次握手,而不是两次?

TCP Transfer Control Protocol 是一种面向连接、可靠的、传输层通信协议。

        特点:好比是打电话:面向连接的,点对点的通信,高可靠的,效率比较低,占用的系统资源比较多。

UDP User Datagram Protocol 是一种无连接的,不可靠的,传输层通信协议。

        特点:好比是广播:不需要连接,发生放不管接受放有没有准备好,直接发消息,可以进行广播发送的;传输不可靠,有可能丢失消息,效率比较高;协议就会比较简单,占用的系统资源比较少。

TCP 建立连接三次握手,断开连接四次挥手。

如果是两次握手,可能会造成连接资源浪费的情况。

二、JAVA有哪几种IO模型?有什么区别?

BIO 同步阻塞IO 。可靠性差,吞吐量低,适用于连接比较少且比较固定的场景。JDK1.4之前的唯一的选择。编程模型简单

NIO同步非阻塞IO 可靠性比较高,吞吐量也比较高,适用于连接比较多并且连接比较短(轻操作),例如聊天室 JDK1.4开始支持,编程模型最复杂(Netty框架解决复杂问题)。

 

AIO 异步非阻塞IO 可靠性是最好的,吞吐量也是非常高。适用于连接比较多,并且连接比较长(重操作)。例如相册服务器。JDK1.7版本才支持的,编程模型比较简单,需要操作系统来支持

 

同步、异步 和 阻塞、非阻塞。

在一个网络请求中,客户端会发一个请求到服务端。

1.客户端发生了请求后,就一直等待服务端响应。客户端:阻塞。请求:同步

2.客户端发送了请求后,就去干别的事情了。时不时的过来检查服务端是否给出了响应。客户端:非阻塞。请求:同步。

3.换成异步请求。客户端发了请求后,就坐在椅子上,等着服务端返回响应。客户端:阻塞。请求:异步。

4.异步请求,客户端发了请求后,就去干别的事情了。等到服务端给出响应后,再来处理业务逻辑。客户端:非阻塞。请求:异步。

三、JAVA NIO的几个核心组件是什么?分别有什么作用?

Channel Buffer Selector

 Channel类型于流,每一个Channel对应一个Buffer缓冲区。Channel会注册到Selector。

Selector会根据Channel上发生的读写事件,将请求交由给某个空闲的线程处理。Selector对应一个或者多个线程。

Buffer和Channel都是可读可写的。

四、select,poll,epoll有什么区别?

它们是NIO多路复用的三种实现机制,是由Linux操作系统提供的。

用户空间和内核空间:操作系统为了保护系统安全,将内核划分为两个部分,一个是用户空间,一个是内核空间。用户空间不能直接访问底层的硬件设备,必须通过内核空间。

文件描述符 File Descriptor(FD):是一个抽象的概念,形式上是一个整数,实际上是一个索引值。指向内核中为每一个进程维护进程所打开的文件的记录表。当程序打开一个文件或者创建一个文件时,内核就会向进程返回一个FD。Unix,Linux

        Select机制:会维护一个FD的结合 fd_set。将fd_set从用户空间复制到内核空间,激活socket。x64 2048 fd_set是一个数组结构

        Poll机制:和Select机制是差不多的,把fd_set结构进行了优化,FD集合的大小就突破了操作系统的限制。Poll fd结构来代替fd_set,通过链表实现的。

        EPoll:Event Poll.Epoll中不再扫描所有的FD,只讲用户关心的FD的事件存放到内核的事件表中。这样,可以减少用户空间与内核空间之前需要拷贝的数据。

简单总结:

操作方式 底层实现 最大连接数 IO效率
Select   遍历 数组 受限于内核 一般
Poll 遍历 链表 无上线 一般
EPoll 事件回调 红黑树 无上线

Java的NIO当中是哪几种机制?

        可以查看DefaultSelectorProvider源码。在Windows下,WindowsSelectorProvider。而在Linux下,根据Linux的内核版本,2.6版本以上,就是EPollSelectorProvider,否则就是默认的PollSelectorProvider。

        Select 1984年出现,Poll 1997年出现

五、描述一下HTTP 和 HTTPS的区别?

概念,运行机制,区别

HTTP:是互联网上应用最为广泛的一种网络通信协议,基于TCP,可以使浏览器工作更为高效,减少网络传输。

HTTPS:是HTTP的加强版,可以认为是HTTP+SSL(Secure Socket Layer)。在HTTP的基础上增加了一系列的安全机制。一方面保证数据传输安全,另一方面对访问者增加了校验机制。是目前现行架构下,最为安全的解决方案、

主要区别:

        1.HTTP的连接是简单无状态的,HTTPS的数据传输是经过证书加密的,安全性更高。

        2.HTTP是免费的,而HTTPS需要申请证书,而证书通常是需要收费的,而且费用一般不低。

        3.他们的传输协议不通过,所以他们使用的端口也不一样的。HTTP默认是80端口,而HTTP默认是443端口。

HTTPS的缺点:

        1.HTTPS的握手协议比较费时,所以会影响服务的响应速度以及吞吐量。

        2.HTTPS也并不是完全安全的。他的证书体系其实并不是完全安全的。并且HTTPS在面对DDOS这样的攻击时,几乎起不到任何作用。

        3.证书需要花钱,并且功能越强大的证书费用越高 。   

JVM调优篇

学习地址:

https://www.bilibili.com/video/BV1WL411V78n/?p=14&spm_id_from=pageDriver&vd_source=a9040d548191dd9c34a5dc6b53fbdee3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA面试 的相关文章

  • 在 Eclipse 中隐藏重复的工具栏项

    我不知道如何 但我的 STS 有重复的工具栏项目 我不知道如何删除它们 这是我复制的工具栏的样子 我想摆脱这些 我试图隐藏工具栏 但这没有帮助 有人知道如何删除重复的吗 自从升级到 Oxygen 以来 我一直遇到同样的问题 我无法可靠地重现
  • Java - 红、绿、蓝获取RGB

    通过致电getRGB int x int y with a BufferedImage对象 得到一个负数 如何将三个不同的值 红色 绿色和蓝色 转换为这个单个负数 使用颜色类 new Color r g b getRGB
  • 在此代码中,Runnable 未实例化。为什么?

    Runnable cannot instantiate public class Thread4 public static void main String args Thread t1 new Thread new Runnable R
  • HttpSession 内的同步是否可行?

    UPDATE 问题后立即解决 问题 通常 同步是在 JVM 内序列化并行请求 例如 private static final Object LOCK new Object public void doSomething synchroniz
  • 探索java图像处理的好资源[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是图像处理领域的新手 请推荐一些好的资源 书籍和网络链接 来学习 Java 中的图像处理 最适合隐写术分析 适合初学者和高级水平 我看过
  • Java:无安全管理器:RMI 类加载器已禁用

    您好 我有 RMI 应用程序 现在我尝试从客户端调用服务器上的一些方法 我有以下代码 public static void main final String args try Setting the security manager Sy
  • 如果主引用指向 null,WeakReference 或 SoftReference 有何不同

    我正在读关于WeakReference https docs oracle com javase 10 docs api java lang ref WeakReference html and SoftReference https do
  • 想要从java中的char数组创建字符流

    我想从 char 数组构造一个流以使用 java 8 功能 例如过滤器和映射 char list a c e Stream
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • java数学中的组合“N选择R”?

    java库中是否有内置方法可以为任何N R计算 N选择R 公式 实际上很容易计算N choose K甚至不需要计算阶乘 我们知道 公式为 N choose K is N N K K 因此 公式为 N choose K 1 is N N N
  • 如何将测试类打包到jar中而不运行它们?

    我正在努力将我的测试类包含到 jar 包中 但不运行它们 经过一番谷歌搜索后 我尝试过mvn package DskipTests 但我的测试类根本没有添加到 jar 中 有任何想法吗 如果您遵循 Maven 约定 那么您的测试类位于src
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • Java:java.util.Preferences 失败

    我的程序将加密的产品密钥数据保存到计算机上java util Preferences类 系统首选项 而不是用户 问题是 在 Windows 和 Linux 上 尚未在 OSX 上测试过 但可能是相同的 如果我不运行该程序sudo或者具有管理
  • 如何加载图像文件到ImageView?

    我试图在从文件选择器中选择图像文件后立即显示该图像文件 文件选择器仅限于 png 和 jpg 文件 所选文件存储在文件类型的变量中 为此 我设置了一个 ImageView 我希望用这个新文件设置图像 唯一的问题是它的类型是文件而不是图像 如
  • Java给定长度的随机数

    我需要在 Java 中生成一个恰好 6 位数字的随机数 我知道我可以在随机发生器上循环 6 次 但是在标准 Java SE 中还有其他方法可以做到这一点吗 要生成 6 位数字 Use Random http download oracle
  • 动态创建 JSON 对象

    我正在尝试使用以下格式创建 JSON 对象 tableID 1 price 53 payment cash quantity 3 products ID 1 quantity 1 ID 3 quantity 2 我知道如何使用 JSONOb
  • 乔达时间中两个日期之间的天数

    如何找到两次之间的天数差异乔达时间 http www joda org joda time DateTime http www joda org joda time apidocs org joda time DateTime html实例
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell

随机推荐

  • 从隔离中崛起:我重新梳理的‘大厂面试指南’助你一战成就职业巅峰

    在这个独特的时期 求职者们面临着前所未有的挑战 而我希望通过这份重新梳理的 大厂面试指南 能够为他们提供有力的支持和指导 我深知 面试是一个关键的环节 能否在众多竞争者中脱颖而出 决定着求职者能否顺利进入理想的大厂 现在 V2 0版的 大厂
  • 解决Error: Cannot find module 'node-sass'问题

    今天在运行angular前端的时候出现了以下的问题 解决办法 1 在项目目录cmd下运行 npm install g cnpm registry https registry npm taobao org 2 下载成功后再运行 cnpm i
  • Node.js在数据库进行多条件模糊查询的sql技巧

    实现简单的前台输入框查询筛选出内容包含的数据 使用ajax请求后台 后台拦截后再交给逻辑处理层 controller 再在dao层进行sql语句的查询并返回数据给逻辑层 blog search function req resp let s
  • 【多线程】ThreadPoolExecutor 类的使用详解

    ThreadPoolExecutor 构造方法 ThreadPoolExecutor共4个构造方法 咱们直接看参数最多的7个参数分别代表 public ThreadPoolExecutor 线程池核心线程数 int corePoolSize
  • 蓝桥云课——数字三角形 Python(动态规划)

    由于本人还在复习考研 留给蓝桥杯的时间不会太多 能不能拿奖还另说 听天由命吧 题目地址 数字三角形 一道比较简单的动态规划题目 比较适合新手学习 从动态规划三部曲开始走 1 先确认dp方程含义 在这我们采用二维数组 每个数组用来储存最大的值
  • Typora文本颜色设置

    Typora文本颜色设置 前言 方法一 使用markdown语法的内联公式 设置颜色 文本颜色设置公式 常用的颜色公式代码表 效果预览 方法二 使用html代码 设置颜色 文本颜色设置公式 颜色代码 方法三 借助第三方软件AutoHotKe
  • 数据库之SqlSessionTemplate源码解析

    前言 在普遍的JAVA WEB项目的实际业务处理中 最终都是通过SqlSessionTemplate执行数据库的CURD操作 本文结合mybatis源码 对SqlSessionTemplate进行详细的介绍 SqlSessionTempla
  • 【微信小程序】微信小程序怎么让tabbar右上角的红点动起来,闪烁红点。

    1 需要用到两个API分别是wx showTabBarRedDot 和wx hideTabBarRedDot wx showTabBarRedDot 显示 tabBar 某一项的右上角的红点 wx hideTabBarRedDot 隐藏 t
  • ERC20接口下USDT代币的深入解析

    ERC20代币合约规则简介 ERC20 是各个代币的标准接口 ERC20 代币仅仅是以太坊代币的子集 为了充分兼容 ERC20 开发者需要将一组特定的函数 接口 集成到他们的智能合约中 以便在高层面能够执行这些操作 获得代币总供应量 获得账
  • Hbase存储方式

    Hbase概念 HBase是一个分布式的 面向列的数据库它介于nosql和RDBMS之间 仅能通过主键 row key 和主键的range来检索数据 仅支持单行事务 可通过hive支持来实现多表join等复杂操作 主要用来存储非结构化和半结
  • do{}while(0)的用法

    这几天在看代码的时候遇到了一个好像很神奇的用法 do while 0 do while 1 我能理解 就是一直循环 然后在循环体内设置跳出条件 或者干脆就不跳出 那do while 0 是干嘛的呢 在内部也改变不了循环条件 然后执行一次就结
  • 测试-1-基础篇

    基础概念 一 相关概念 1 软件测试 2 软件测试和研发的区别 3 软件开发的生命周期 4 需求 5 什么是 BUG 6 什么是测试用例 二 开发模型 1 瀑布模型 2 螺旋模型 3 增量模型 4 迭代模型 5 敏捷开发 三 测试模型 1
  • usb的pid和vid

    根据USB 规范的规定 所有的USB设备都有供应商ID VID 和产品识别码 PID 主机通过不同的VID和PID来区别不同的设备 VID和PID都是两个字节长 其中 供应商ID VID 由供应商向USB执行论坛申请 每个供应商的VID是唯
  • 【课程作业经验】盘古α模型数据集生成以及训练初始化问题解决方案

    盘古模型代码及指导 models Models of MindSpore Gitee com 环境 华为云ModelArts Ascend 8 Ascend 910 Mindspore 1 5 1 PyTorch 1 8 一 盘古数据集生成
  • 前后端中的异步和事件机制

    前言 在前后端程序设计开发工作中 小伙伴们一定都接触过事件 异步这些概念 出现这些概念的原因之一是 我们的代码在执行过程中所涉及的逻辑在不同的场合下执行时间的期望是各不相同的 为了尽量做到充分利用CPU等资源做尽可能多的事 免不了通过异步和
  • 处理跨域问题

    1 vue hr2 1234567890 gitee com 2 画图 整个的登录流程 3 画图解释 vue cli的proxy代理解决跨域问题 4 cookie和localStorage区别 存储大小 cookie 一般不超过4K 因为每
  • 毕业设计-基于街景影像中行人车辆检测方法 -YOLO

    目录 前言 课题背景和意义 实现技术思路 一 方法理论 二 试验与分析 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目
  • 特征变换:特征归一化(Normalization)作用以及方法 Min-Max、Z-Score

    为什么需要对特征数据进行归一化 1 在基于梯度下降的算法中 使用特征归一化方法将特征统一量纲 能够提高模型收敛速度和最终的模型精度 1 如上图所示 黄色的圈圈图代表的是两个特征的等高线 其中左图两个特征 X1 和 X2 的区间相差非常大 X
  • Element UI input输入框实现模糊查询

    Element UI的input输入框进行搜索的时候 根据输入内容提供对应的输入建议 有个坑 它只能用第一个字进行搜索 不能够实现模糊匹配 下面的方法就是填这个坑 原来搜 奖 后台给返回数据 但是不会出现下拉框 例如 只要搜 抽 才出现下拉
  • JAVA面试

    JAVA网络通信篇 一 TCP和UDP有什么区别 TCP为什么是三次握手 而不是两次 TCP Transfer Control Protocol 是一种面向连接 可靠的 传输层通信协议 特点 好比是打电话 面向连接的 点对点的通信 高可靠的