首页 > 数据库 > 数据库开发技术 > 刚刚决定!放弃飞书,冲京东!
网址:https://itgogogo.cn
大家好,我是皇子。
我从去年到现在,飞书算使用比较多的一个工具了,从知识库到个人空间,在文档、表格、思维笔记方面的体验挺好的。
就在今天中午,一位在找实习的同学,看到飞书CEO谢欣发布全员信后,决定放弃飞书了。
在全员信中,CEO谢欣表示,团队规模比较大、组织不够精干,效率变低,不利于业务的长期发展。
“这一次调整,不仅是团队规模的调整,更重要的是要重新回到初创公司的day1状态---方向更聚焦、组织更高效,团队也要更有战斗力。”
谢欣还强调,飞书在未来“要持续提升产品竞争力,尤其要提升AI的能力”。

▲ 飞书CEO谢欣
飞书,让一部分团队先飞起来
这一部分飞起来是使用飞书的那些企业团队,在团队协作方面更加高效了
另外一部分飞起来是不是跟今天的宣布也有关系?自己的团队要裁员了!要精简团队规模,进行新一轮组织调整了。
不过在全员信称:会为受到影响的员工提供补偿方案和转岗机会的。
相信飞书不会辜负那些一起奋斗过的同学的。
那既然选择放弃飞书(实际上是飞书放弃了你),那京东如何呢?
京东曾宣布,2024年1月1日起京东采销等一线业务人员的年固定薪酬大幅上涨近100%,2024年初京东零售全员将平均加薪不低于20%。
年初还突然发布了一则好消息:自2024年2月1日起,超2万名京东一线客服员工实现全年平均薪酬上涨超过30%。
强哥给的这福利,简直就是给了兄弟们一颗定心丸!
所以接下来,就分享一位京东零售、京东后端开发工程师的暑假实习校招面经,她进去稍微晚一点,这波福利没赶上,看来只能等明年了。
从官网中可以看到,京东集团面向实习生是全年开放的。

这次面经考察的内容,我帮大家罗列一下:
G(Goroutine):我们所说的协程,为用户级的轻量级线程,每个 Goroutine 对象中的 sched 保存着其上下文信息。M(Machine):对内核级线程的封装,数量对应真实的 CPU 数(真正干活的对象)。P(Processor):即为 G 和 M 的调度对象,用来调度 G 和 M 之间的关联关系,其数量可通过 GOMAXPROCS()来设置,默认为核心数。Golang 的 convey 第三方库,一个为 Go 语言设计的 BDD(行为驱动开发)风格的测试框架,它使得单元测试的编写更加直观和易于理解
import (
"testing"
"github.com/smartystreets/goconvey/convey"
)
func TestStringSplit(t *testing.T) {
convey.Convey("当给定一个逗号分隔的字符串", t, func() {
input := "apple,banana,orange"
expected := []string{"apple", "banana", "orange"}
convey.Convey("使用 Split 函数应该正确分割字符串", func() {
result := Split(input, ",")
convey.So(result, convey.ShouldResemble, expected)
})
})
}
// 示例中的 Split 函数是一个假设存在的用于分割字符串的函数
func Split(s, sep string) []string {
// 实现...
}
虽然每个进程都有自己的虚拟地址空间,但是为了进一步保障系统运行安全,虚拟地址空间被划分为用户空间和内核空间。操作系统运行在内核空间,用户程序运行在用户空间。内核空间由所有进程的地址空间共享,但是用户程序不能直接访问内核空间。
操作系统保存的进程控制块PCB自然是在内核空间,这里除了页目录以外还可以找到很多重要的内容,例如进程和父进程的ID,状态,打开文件句柄表等等。
对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。
有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些子任务称为线程(Thread)。
真正的并行执行多任务(多进程)只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。
真正地同时执行多线程需要多核CPU才可能实现。由于每个进程至少要干一件事,所以,一个进程至少有一个线程。当然,像Word这种复杂的进程可以有多个线程,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。
多线程中,每个线程有独立的栈,当线程阻塞时,内存数据不会被释放,cpu被释放执行其他线程。
又被称为轻量级进程(Lightweight Process LWP),是程序执行的最小单元。每一个程序都至少有一个线程,若程序只有一个线程,那么就是程序本身。单线程的进程可以简单的认为只有一个线程的进程。一个进程在同一时间只做一件事,有了多线程后一个进程同一时间可以做多件事。每个线程可以处理不同的事务。无论系统有几个CPU,即使进程运行在单CPU上,多线程也可以是进程并发处理多个事务。一个线程阻塞不会影响到另一个线程。多线程的进程可以尽可能的利用系统CPU资源。但也不是线程越多越好,线程越好,CPU分配给每个线程的时间片就越少。
多线程中一个线程阻塞,交出CPU去执行其它线程,单线程阻塞,CPU被占用就像while(1),卡住。
单核cpu多个进程或一个线程内能实现并发(微观上的串行,宏观上的并行),多核cpu线程间可以实现(微观上并行, 宏观上的并行)
从定义上来说,协程是一种轻量级的线程,由用户代码来调度和管理,而不是由操作系统内核来进行调度,也就是在用户态进行。可以直接的理解为就是一个非标准的线程实现,但什么时候切换由用户自己来实现,而不是由操作系统分配 CPU 时间决定。
应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。
表示层:数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
会话层:建立及管理会话。
传输层(运输层):为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。
网络层:为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。
数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。
❝五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。
❝TCP/IP 协议:它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。
TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。
在向下的过程中,需要添加下层协议所需要的首部和尾部,而在向上的过程中不断拆开首部和尾部。
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。
数据在各层传递过程及数据格式变化
数据格式变化
判断链表是否包含环(技巧:双指针)
判断两个链表是否相交(技巧:双指针)
推荐阅读
关注公众号,后台发送【简历】,领取简历摸板
觉得有用,点个赞、在看或者转发 在走呀
原文作者:皇子谈技术;如有侵权,请联系管理员删除。