飞书,裁员40%!


大家好,我是瑶琴。
在这个看似繁花却险象环生的时代,互联网裁员消息牵动着每一个打工人的心。
3月26日,飞书CEO谢欣发布全员信:飞书将精简团队规模,进行新一轮组织调整,并为受到影响的同学提供补偿方案和转岗机会。(完整的全员信放在文章底部)

作为互联网人,平时用飞书的机会很多,用来整理工作总结,后来开始副业写作,关于副业的AI探索,写作技巧,自媒体运营,都会使用飞书来整理。
飞书功能全,细分多,用起来得心应手。
但体量也带来了了臃肿的负担,众多办公软件的夹击之下,飞书的收费模式势必要求它拥有独特的差异化,目前看来,在这样的大环境下,势必要勒紧腰带砍业务线了。
有消息称,共有5轮裁员,第一轮约20%,裁员赔偿n+1,另补偿3个月年终奖。
根据发布的全员信透露的信息,这次精简团队,是为了回到初创公司 day1 的状态,让团队的方向更聚焦。
同时也提出提升 AI 能力的重要性,增强团队的创新,产品的竞争力等等。
因此,普通人拥抱AI 是大趋势。AI  很可能在某种意义上重新定义工作的本质。
面对这种情况,我们可能会感到无力和焦虑,但能做到的就是保持乐观,不断提升自己的能力和素质,今天瑶琴给大家分享一道在项目和面试时经常会遇到的一道面试题。
作为前端,我们经常需要处理后端返回的数据,最常遇到的一种是将后端返回的list 处理成树形结构的数组。
这是待处理的 list 和处理后的数据结构:


先给出解题思路,如何使用这个函数将扁平化的数据转换为树形结构:
// 1.首先,使用map对象来存储所有数据项的引用。这样,当list发生变化时,result中的数据也会跟着变化。
// 2.遍历list数组,将每个项转换为键值对结构,存储在map中。
// 3.再次遍历list数组,将每个项插入到其父节点的children数组中。如果当前项没有父节点,或者其父节点不存在,则直接将当前项添加到结果数组中。
// 4.返回过滤后的结果数组。
代码如下:
/** *数组转为树形结构, *list 数组 *idKey 元素id键 *parIdKey 元素父id键 *parId 第一根节点的父id值 */function lisToTree(list,idKey,parIdKey,parId){ let map ={} let result =[] let len = list.length// 构建mapfor (let i = 0; i < len; i++) {// 将数组中数据转为键值对结构map[list[i][idKey]] = list[i] }// 构建树形数组for (let i = 0; i < len; i++) { let itemParId = list[i][parIdKey]// 顶级节点if(itemParId === parId){ result.push(list[i])continue; }// 孤儿节点,舍弃(不存在父节点)if(!map[itemParId]){continue }// 将当前节点插入到父节点的children中(由于是引用数据类型,map中节点变化,result中对应节点会跟着变化)if(map[itemParId].children){map[itemParId].children.push(list[i]) }else{map[itemParId].children = [list[i]] } }return result }
这道题在前端面试中很常见,在项目中常常会用到,建议反复练习。回复 99 领取完整前端学习路线及面试题
你好,我是瑶琴,在职前端开发程序员,坐标杭州。
当下深耕探索 AI 领域,期望 AI 赋能编程。
这里主要分享我对编程和 AI 的思考,分享 IT 行业的职场感思。
飞书CEO谢欣全员信:

到顶部