字节跳动辞退103人

大家好,我是程序员面试刷题平台的鸭鸭!

在前阵子实习生破坏大模型训练事件之后,字节又上了一次热搜。

鸭鸭吃完瓜,只能说,社会险恶啊同学们!

图片

5 号,字节跳动内部发布了年内第四份《企业纪律与职业道德委员会通报》,有 103 人因违法违规行为被辞退,其中包含外包及实习生。其中更是有 11 人因涉嫌构成刑事犯罪,被公安机关立案侦查。

涉嫌犯罪的11人中,涉及电商业务3人、生活服务3人、抖音2人,企业服务、人力与管理、财经各1人。从涉嫌罪名来看,有职务侵占,有受贿,还有直接对外售卖公司保密信息的。

但更惹人在意的是实习生的几起通报,除了大家非常在意的模型训练被恶意攻击事件再次被实锤了之外,还有一起实习生带外部人员进入工区,发生的斗殴事件。

鸭鸭吃了一下瓜,据说斗殴事件被劝退这位实习生是飞书的,被外人骗说没带工卡,帮刷了一下,结果对方进入工区后和公司员工发生肢体冲突,把自己赔了进去。

社会险恶,只能说公司三令五申不要帮人刷卡不是没有理由的。

大家卷实习也是为了未来能有一份好的工作,只能说吃一堑长一智,不要为了这种小事,让自己这么久的努力白费。

要进入字节实习,努力是必不可少的,努力学习,做项目,背八股,刷面经……

今天鸭鸭就带大家看一道面试题:

什么是 Java 的 SPI(Service Provider Interface)机制

回答重点

SPI 是一种插件机制,用于在运行时动态加载服务的实现。它通过定义接口(服务接口)并提供一种可扩展的方式来让服务的提供者(实现类)在运行时注入,实现解耦和模块化设计。

SPI 机制的核心概念:

  • 服务接口:接口或抽象类,定义某个服务的规范或功能。
  • 服务提供者:实现了服务接口的具体实现类。
  • 服务加载器(ServiceLoader):Java 提供的工具类,负责动态加载服务的实现类。通过 ServiceLoader 可以在运行时发现和加载多个服务提供者。
  • 配置文件:服务提供者通过在 META-INF/services/ 目录下配置服务接口的文件来声明自己。这些文件的内容是实现该接口的类的完全限定名。

SPI 机制的优势:

  • 解耦:接口与实现分离,客户端不需要依赖具体实现,能够在运行时灵活加载不同的实现类。
  • 可扩展性:提供了一种易于扩展的机制,允许后期添加或替换实现类,而不需要修改现有代码。

扩展知识

SPI 通俗理解

SPI 可以通俗地理解为一种插件机制,用于在程序运行时动态加载某些功能的实现。

打个比方:

假设你有一个音乐播放器(相当于一个程序),这个播放器可以播放不同格式的音乐,比如 MP3、WAV、AAC 等格式。你作为用户,并不关心播放器内部是如何解码这些格式的,你只需要它能正常播放音乐。

  • SPI 就像是播放器的插槽:播放器本身并不内置所有的解码器(MP3 解码器、WAV 解码器等),而是有一个标准接口(SPI),允许外部开发者(服务提供者)开发并“插入”解码器(不同格式的处理实现)。
  • 插件机制:当播放器启动时,它通过 SPI 机制去寻找并加载外部提供的解码器,选择合适的解码器来处理不同的音乐格式。这些解码器可以是程序事先知道的,也可以是后期动态加入的,只要遵循 SPI 规定的接口规范。
带入 Java 中理解:
  • Java SPI 就是一个类似的机制。你定义一个接口(类似播放器的插槽),然后不同的开发者实现这个接口,提供不同的实现(类似各种解码器)。
  • Java 会通过 SPI 自动加载这些实现,在运行时决定用哪个实现,而不用你手动去修改代码。

总结:SPI 机制的好处是灵活,能让程序根据需求动态地加载或更换某些功能实现,就像给一个音乐播放器加装不同的解码器插件,而不需要每次都修改播放器的核心代码。

一个典型的 SPI 应用场景是 JDBC(Java 数据库连接库),不同的数据库(mysql、oracle、sqlserver 等)有不同的实现,它们根据 JDBC 定制自己的数据库驱动程序,我们根据 SPI 机制使用它们的实现,而不需要修改 JDBC 核心代码。

如何实现一个 SPI ?

1)创建一个服务接口:MyService.java

public interface MyService {void execute();
}

2)创建一个服务提供者:MyServiceImpl.java

实际上就是接口的实现类:

public class MyServiceImpl implements MyService {@Overridepublic void execute() {System.out.println("Executing MyServiceImpl");}
}

3)创建配置文件(需要在 META-INF/services 目录下创建文件,文件名为接口的全限定名)

META-INF/services/com.example.MyService

文件的内容就是实现类的全限定名:

com.example.MyServiceImpl

4)通过 ServiceLoader load 接口类型即可加载配置文件中的实现类:

ServiceLoader<MyService> serviceLoader = ServiceLoader.load(MyService.class);
for (MyService service : serviceLoader) {service.execute();
}

5)如果要替换实现类,仅需新建一个实现类,然后修改配置文件中的全限定名即可替换,无需修改使用代码

例如,新建了一个实现类 MyServiceImplA

 public class MyServiceImplA implements MyService {@Overridepublic void execute() {System.out.println("Executing MyServiceImplA");}}

仅需将META-INF/services/com.example.MyService文件中的内容改成

com.example.MyServiceImplA

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

大型语言模型综述 A Survey of Large Language Models

文章源自 2303.18223 (arxiv.org) 如有侵权&#xff0c;请通知下线 这是一篇关于大语言模型&#xff08;LLMs&#xff09;的综述论文&#xff0c;主要介绍了 LLMs 的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面&#xff0c;具体内容如下&#xff1a; 摘要…

服务器作业4

[rootlocalhost day04]# vim 10.sh [rootlocalhost day04]# cat 10.sh #通过shell脚本分析部署nginx网络服务 #1.接收用户部署的服务名称 read -p "服务名称:(nginx)" server if [ $server ! nginx ];then echo "输入的不是nginx,脚本退出" exit 1…

Linux基础(二十)——程序管理与 SELinux 初探

程序管理与 SELinux 初探 1. 程序和进程2.程序调用流程3. 一个bash中的多任务工作管理4.进程管理4.1 查询进程4.2 进程的执行顺序 5.系统资源的观察6. /proc/* 代表的意义7.SELinux 1. 程序和进程 2.程序调用流程 程序与进程之间的关系&#xff1a; 从上图可以看出&#xff0…

vue3 路由写法及传参方式 !超详细

Vue Router 是 Vue.js 官方的路由管理器。它主要用于单页面应用程序&#xff08;SPA, Single Page Application&#xff09;中&#xff0c;帮助解决页面导航、组件复用等问题。 基本的使用 1.router配置文件代码 创建一个ts文件,用来写路由器 // 创建一个路由器,并暴露出去 …

MATLAB绘制正四面体、正六面体

MATLAB绘制正四面体、正六面体 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% 正四面体&#xff08;Tetrahedron&#xff09; % 顶点坐标&#xff08;正四面体的顶点位于一个正方体的对角线上&#xff0c;并经过适当缩…

一文了解 inductive bias(归纳偏好)

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 归纳偏好&#xff08;Inductive Bias&#xff09;是机器学习中的一个非常基础但又非常重要的概念。为了更好地理解它&#xff0c;我们先从 “归纳” 和 “偏好” 这两个词开始讲解。 什么是归纳&#x…

leetcode844:比较含退格的字符串

题干 题目分析 两个字符串要进行比较&#xff0c;#代表着回车&#xff0c;也就是删除之前的字符。 若按照遍历的惯例&#xff0c;选择从前到后遍历&#xff0c;但这样没法判断&#xff0c;因为#之前被删除的部分是不需要相同的。 因此考虑到#的含义&#xff0c;我们应该选择从…

【Python爬虫实战】从入门到精通:全面解析IP代理池的原理与实战应用

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、IP代理池 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;主要功能 &#xff08;三…

c++_day2

第一题&#xff1a; 继续为 mystring类编写以下方法&#xff1a; 1&#xff1a;析构函数&#xff0c;释放buf指向的堆空间 2&#xff1a;编写 append(const mystring r) 为当前字符串尾部,拼接新的字符串r 3&#xff1a;编写 isEqual(const mystring r) 判断当前字符串和 字符串…

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项&#xff08;曼哈顿距离&#xff09; 2.3.2…

基于一种基于OCR图像识别技术的发票采集管理系统及方法

本发明涉及了一种基于OCR图像识别技术的发票采集管理系统及方法&#xff0c;该系统的发票信息采集单元采集发票图片信息数据&#xff0c;OCR图像识别单元基于OCR图像识别技术并结合人工智能深度学习算法对发票图片信息数据进行识别读取以获得OCR图像识别结果&#xff0c;发票信…

Windows注册表基础学习

修改注册表让cmd ascii输出有颜色 reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1 如何打开注册表编辑器 运行regedit 按下"Winr"组合键&#xff0c;在打开的"运行"对话框中输入"regedit"&#xff0c;单击"确定"…

CarSim复制数据注意事项

更正&#xff0c;上图中提到的“数据集”应该是“数据类别”&#xff0c;可以理解为数据集的一个子集。

Spring:注解开发依赖注入

Spring为了使用注解简化开发&#xff0c;并没有提供构造函数注入、setter注入对应的注解&#xff0c;只提供了自动装配的注解实现。 直接上代码&#xff1a; 1&#xff0c;添加一个配置类SpringConfig Configuration ComponentScan("com.itheima") //PropertySourc…

springboot006基于SpringBoot的网上订餐系统(源码+包运行+LW+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【Linux】learning notes(2)

文章目录 1、快捷键2、专业名词2.1、驱动2.2、内核2.3、U-Boot2.4、Dynamic Library and Static Library2.5、SDK / NDK / UDK 3、BUG 前文链接&#xff1a; 【Linux】learning notes 1、快捷键 在文件夹里&#xff0c;ctrll&#xff0c;选定文件夹路径 Linux下的ctrl常用组合…

商业银行核心系统单元化改造的研究与思考

随着金融科技的快速发展&#xff0c;银行核心系统面临着更高的处理能力、扩展能力及业务连续性的要求与挑战。为应对这些挑战&#xff0c;许多银行开始考虑对其核心系统进行单元化改造。本文首先分析了传统银行核心系统存在的问题以及单元化改造的必要性&#xff0c;然后详细阐…

指针

内存和地址 内存 我们知道计算上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;需要的数据是在内存中读取的&#xff0c;处理后的数据也会放回内存中&#xff0c;那我们电脑上的哪些内存空间如何高效的管理呢&#xff1f; 其实也是把内存划分为一个个的…

强大的正则表达式——Medium

由上一篇文章《Easy》中提到过的&#xff1a; 还是直接让AI写个python脚本生成难度2的正则表达式&#xff0c;但是生成的正则表达式无法成功获取到flag&#xff1a; 这里了解了一下相关知识&#xff0c;字符串形式的整数对常数求模是可以用有限状态机来实现的。对于二进制数字来…

科技改变工作方式:群晖NAS安装内网穿透实现个性化办公office文档分享(1)

文章目录 前言1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 前言 本文将详细介绍如何在群晖NAS上安装Synology Office和Synology Drive Server&#xff0c;并利用Cpolar内网穿透工具为本地文档配置固定的公网…