java后端字节一面

029f4651fde64d9d97f48759bc5b08df.png
1. 我现在和你进行视频通话,这个是怎么做的?
视频通话通常基于实时通信技术(RTC),如WebRTC。它利用现代浏览器的API来实现视频、音频和数据的直接P2P(点对点)通信,或通过服务器中转。视频通话涉及信号的协商、媒体流的编码、传输和解码等多个步骤。


2. 推流会怎么推呢?
推流是将音视频数据实时传输到服务器或接收端的过程。在直播或视频会议中,推流通常使用RTMP(Real Time Messaging Protocol)、HLS(HTTP Live Streaming)或WebSocket等协议。推流前,音视频数据会被编码压缩,然后通过选定的协议发送到服务器,服务器再分发给其他客户端。


3. 视频通话和你打开一个url网页有什么不同吗?
视频通话是实时交互的,涉及音视频数据的实时传输和处理,对延迟和带宽要求较高。而打开一个URL网页主要是从服务器获取HTML、CSS、JavaScript等资源,并在客户端渲染,不涉及实时音视频传输,对延迟的要求相对较低。


4. TCP是什么协议?RTC又是什么协议? 

TCP(Transmission Control Protocol):一种面向连接的、可靠的、基于字节流的传输层通信协议。它提供全双工通信,即数据可以在两个方向上同时传输。TCP通过确认应答、数据重传、滑动窗口等机制来保证数据的可靠传输。
RTC(Real-Time Communication):不是一种具体的协议,而是一种技术的总称,用于实现实时音视频通信。RTC可以基于多种协议和技术实现,如WebRTC、RTMP等。

5. 为什么音视频用UDP协议传输呢?实时性体现在哪里?
音视频传输对实时性要求很高,而UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它传输数据时不建立连接,也不保证数据的可靠传输,但具有较低的延迟和较高的传输效率,因此常用于音视频传输。实时性体现在数据的快速传输和较小的延迟上。
6. 你从网站上下载一个很大的,1个G的文件,这个文件途中有没有可能被损坏?
在TCP协议下,文件在传输过程中是有可能被损坏的,但由于TCP的可靠性保证机制(如确认应答、数据重传),即使数据在传输过程中损坏,TCP也会通过重传机制确保数据的完整性和正确性。因此,在TCP协议下下载的文件,理论上应该是完整的。


7. 需要对文件的完整性进行一个校验吗?为什么需要校验?TCP 不是可靠的吗?
虽然TCP协议本身具有可靠性保证,但在实际应用中,由于网络环境的复杂性,仍然可能存在一些不可预见的问题(如硬盘故障、内存错误等)导致文件损坏。因此,对文件的完整性进行校验是必要的。常见的校验方式有MD5、SHA-1等哈希算法。


8. 怎么对文件进行一个完整性的校验?
可以使用哈希算法(如MD5、SHA-1、SHA-256等)对文件进行校验。具体做法是,在文件传输前后,分别在发送端和接收端计算文件的哈希值,然后比较这两个哈希值是否一致。如果一致,说明文件在传输过程中没有被损坏;如果不一致,则说明文件可能已被损坏。


9. 为什么redis 查询会比数据库更快?
Redis 是一种基于内存的数据库,它将数据存储在内存中,因此访问速度非常快。相比之下,传统的关系型数据库(如MySQL)将数据存储在硬盘上,虽然硬盘的容量远大于内存,但访问速度却远低于内存。因此,Redis 的查询速度通常会比关系型数据库快很多。


10. redis 单线程模型为什么会比较快呢?
Redis 采用单线程模型,但这并不意味着它不能处理高并发。Redis 的单线程主要指的是它处理网络请求和命令执行是在一个主线程中完成的。这种设计简化了数据一致性和并发控制的问题,避免了多线程竞争和锁的开销。同时,Redis 的IO操作(如网络请求和磁盘写入)是异步的,不会阻塞主线程的执行。因此,Redis 能够在单线程下保持较高的性能。


11. 为什么要引入MQ呢?我直接发送给下游不行吗?
引入消息队列(MQ)主要有以下几个原因:

解耦:系统间的直接调用会增加耦合度,而MQ可以作为一个中间层,降低系统间的耦合度。
异步:MQ可以实现异步处理,提高系统的响应速度和处理能力。
流量削峰:在系统面临高并发请求时,MQ可以暂存请求,起到流量削峰的作用。
数据一致性:通过事务消息等机制,MQ可以保证数据的一致性。

 

12. 说一下volatile
volatile 是Java中的一个关键字,它用于修饰变量,确保变量的可见性和禁止指令重排序。当一个变量被声明为 volatile 后,它告诉编译器这个变量的值可能会被意外地改变,因此编译器在生成代码时不会对这个变量进行缓存优化。同时,它还会确保每次读取这个变量时都会直接从主内存中读取,而不是从线程的本地缓存中读取,从而保证了变量的可见性。


13. 什么是可见性?我不用volatile就是永远见不到了?如果我有一万个线程,那就是有一万个copy?
可见性 是指当一个线程修改了某个共享变量的值后,其他线程能够立即看到这个修改后的值。如果不使用 volatile 关键字,由于缓存一致性问题,其他线程可能无法立即看到修改后的值。但这并不意味着永远看不到,只是存在延迟。
对于“如果我有一万个线程,那就是有一万个copy?”的疑问,这种理解是不准确的。在Java中,共享变量通常存储在主内存中,而不是每个线程都有自己的copy。但是,由于缓存机制的存在,每个线程可能会有该变量的一个本地缓存副本。使用 volatile 可以确保当变量值被修改后,所有线程的本地缓存副本都会被更新为最新的值。


14. 你刚刚说的禁止指令重排序,指令为什么会重排序?为了优化什么对它进行重排序?
指令重排序是编译器和处理器为了优化程序性能而采取的一种策略。在不改变程序单线程语义的前提下,编译器和处理器可以重新安排指令的执行顺序,以提高程序的执行效率。但是,这种重排序可能会导致多线程程序出现不可预见的行为,特别是当涉及到共享变量时。
为了解决这个问题,Java内存模型(JMM)规定了在多线程环境下哪些指令不能重排序,并提供了 volatile、synchronized 等关键字来确保程序的正确执行顺序。volatile 关键字可以禁止指令重排序,确保在 volatile 变量之前的指令不会在其之后的指令之后执行,从而保证了变量的可见性和有序性。

(os:说实话问的不难..但是给我们的机会太少了😭,全是92的大军冲刺)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】IP协议 应用层协议

🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🕶️一.IP地址 IP协议(Internet Protocol)是TCP/IP协议族中最核心的协议之一,它定义了数据包在网络中传输的标准…

应用层协议HTTP介绍

一、HTTP协议介绍 HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本。 超文本:视频,音…

24年蓝桥杯及攻防世界赛题-MISC-1

2 What-is-this AZADI TOWER 3 Avatar 题目 一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?隐藏内容即flag 解题 ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/outguess] └─$ outguess -r 035bfaa85410429495786d8ea6ecd296.jpg flag1.txt Reading 035bf…

如何使用命令行快速下载Google Drive/OneDrive大文件

OneDrive OneDrive使用wget下载会出现403 forbidden,可通过下面方法下载。 浏览器右键进入检查界面,选择netowork,搜索download.aspx,然后在待下载文件处点击下载,即可出现下载链接,复制为cURL即可下载。…

日志收集工具 Fluentd vs Fluent Bit 的区别

参考链接: FluentdFluentd BitFluentd & Fluent Bit | Fluent Bit: Official Manual Fluentd 与 Fluent Bit 两者都是生产级遥测生态系统! 遥测数据处理可能很复杂,尤其是在大规模处理时。这就是创建 Fluentd 的原因。 Fluentd 不仅仅是…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline:所有有效的声明式流水线必须包含在一个 pipeline 块中stages:包含一系列一个或多个stage指令stage:stage包含在stages中进行,比如某个阶段steps:在阶段中具体得执行操作,一个或…

React js Router 路由 2, (把写过的几个 app 组合起来)

完整的项目,我已经上传了,资源链接. 起因, 目的: 每次都是新建一个 react 项目,有点繁琐。 刚刚学了路由,不如写一个 大一点的 app ,把前面写过的几个 app, 都包含进去。 这部分感觉就像是, …

[ IDE ] SEGGER Embedded Studio for RISC-V

一、FILE 二、Edit 三、View 四、Search 五、Navigate 六、Project 七、Build 7.1 编译 先选择一个目标类型,再选择编译。 八、Debug 九、Target 十、Tools 10.1 自定义快捷键 点击菜单项,通过Tools –> Options –> Keyboard,实现自…

Java | Leetcode Java题解之第413题等差数列划分

题目: 题解: class Solution {public int numberOfArithmeticSlices(int[] nums) {int n nums.length;if (n 1) {return 0;}int d nums[0] - nums[1], t 0;int ans 0;// 因为等差数列的长度至少为 3,所以可以从 i2 开始枚举for (int i …

安卓13设置动态显示隐藏第一页的某一项 动态显示隐藏无障碍 android13设置动态显示隐藏第一页的某一项

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改4.1修改方法14.2修改方法25.编译6.彩蛋1.前言 有时候,我们的设置里面显示的信息,需要根据不同的情况显示不同的信息,例如,动态的显示或者隐藏 “无障碍” 这一项。 2.问题分析 像这个问题…

英集芯IP5902:集成电压可调异步升压转换充电管理功能的8位MCU芯片

英集芯IP5902是一款集成了9V异步升压转换、锂电池充电管理及负端NMOS管的8-bit MCU芯片,外壳采用了SOP16封装形式,高集成度和丰富的功能使其在应用时只需很少的外围器件,就能有效减小整体方案的尺寸,降低BOM成本,为小型…

Day69补 前后端分离思想

ajax前后端分离 前后端分离处理:前端------(数据)-----服务端----(数据)-----前端-----动态改变页面的内容 1.json 1、JSON:由于JSON易读以及纯文本格式的特性,可以非常容易地与其他程序进行沟通…

业务安全治理

业务安全治理 1.账号安全撞库账户盗用 2.爬虫与反爬虫3.API网关防护4.钓鱼与反制钓鱼发现钓鱼处置 5.大数据风控风控介绍 1.账号安全 撞库 撞库分为垂直撞库和水平撞库两种,垂直撞库是对一个账号使用多个不同的密码进行尝试,可以理解为暴力破解&#x…

MVCC机制解析:提升数据库并发性能的关键

MVCC机制解析:提升数据库并发性能的关键 MVCC(Multi-Version Concurrency Control) 多版本并发控制 。 MVCC只在事务隔离级别为读已提交(Read Committed)和可重复读(Repeated Read)下生效。 MVCC是做什么用的 MVCC是为了处理 可重复读 和…

C# 实时流转换为m3u8

主要通过FFmpeg 执行命令进行转换 FFmpeg 下载地址 命令行 ffmpeg -i "rtsp://your_rtsp_stream_address" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 12 -f hls "output.m3u8"start_number 设置播放列表中最先播放的索引号,…

形式向好、成本较低、可拓展性较高的名厨亮灶开源了

简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,减少企业级应用约 95%的开发成本,在强大视频算法加…

C++_21_模板

模板 简介&#xff1a; 一种用于实现通用编程的机制。 通过使用模板我们可以编写可复用的代码&#xff0c;可以适用于多种数据类型。 C模板的语法使用角括号 < > 来表示泛型类型&#xff0c;并使用关键字 template 来定义和声明模板 概念&#xff1a; c范式编程 特点&…

海外大带宽服务器连接失败怎么办?

在全球化日益加深的今天&#xff0c;海外大带宽服务器已成为企业拓展国际市场、提升业务效率的重要工具。然而&#xff0c;面对复杂多变的网络环境和技术挑战&#xff0c;服务器连接失败的问题时有发生&#xff0c;这不仅影响了企业的正常运营&#xff0c;还可能带来经济损失和…

如何写一个自动化Linux脚本去进行等保测试--引言

#我的师兄喜欢给我的休闲实习生活加活&#xff0c;说是让我在实习期间写一个自动化脚本去进行等保测试。呵呵哒。 怎么办呢&#xff0c;师兄的指令得完成&#xff0c;师兄说让我使用Python完成任务。 设想如下&#xff1a; 1、将Linux指令嵌入到python脚本中 2、调试跑通 …

【简历】25届河南某一本JAVA简历:从头到尾都表现的不懂技术

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历总体说明 今天看一份河南某重点一本大学的Java简历。 校招备战第一法则&#xff1a;必须确定自己的求职层次&#xff0c;是大厂、中厂还是小…