5.30 从字节跳槽去国企,我真的很后悔了。
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 9 分钟
阅读:.. 评论:..
大家好,我是白露啊。
今天和大家分享一位前字节跳动产品经理的故事。他曾经是字节的一员,职级2-2。
他从字节跳槽到国企,感觉肠子都悔青了,如下。
我是一名前字节跳动的产品经理,职级2-2。
2019年的时候,我还在小厂打拼,收到字节的面试邀请,我难以抑制内心的激动,这是我梦寐以求的大厂啊。 通过面试后,我开始了大厂生活。
“不设边界,坦诚清晰”,对企业文化和产品深深认同,每天都穿着公司周年文化衫去上班,上下班挂着工牌。每日对齐、频繁开会、周围一群优秀的小伙伴,还有CEO面对面的认真聆听,熬夜加班赶项目,这一切都成为了我那几年独特而难忘的记忆。
但是,后来我离开了字节。原因之一是身体问题。熬夜和不规律的作息,尿酸偏高达600多,脂肪肝也显现,发量更是急剧减少。工作中的价值感缺失也让我逐渐退却。
每次谈话,都是关于项目进度和汇报成果,让我逐渐忘记了思考和自我学习,忘记了职业梦想。 为了健康和个人时间,我决定离职,降薪加入了一家地方国企,开始了另外一种生活。
来到国企后,我发现自己难以适应这里的节奏。
单位的审核流程极其严格,之前在字节一周可以上线的需求,在这里需要走一个月的流程。尽管我想做出一些成绩,但很多时间只能在等待中度过。
在国企,领导的话语权是绝对的,很多决策并不是团队讨论出来的,而是由领导指派。作为产品经理,我无法推进自己的需求,只能每天拉会,更多像是一个会议组织者。
这里的同事有着强烈的边界感,冒昧的业务讨论和合作邀请常常引起不满,甚至会被投诉。作为一个直来直去的人,如何在工作中判断“该做什么、该说什么”,成了我新的内耗。
日复一日,我的下班时间确实早了,但各种内耗也在增多。我并没有适应这种工作状态,再次开始对工作产生抗拒。
面对这一切,我不禁自问:这些工作有意义吗?这是我想要的生活吗?我真的能为了这样度过余生吗? 焦虑再次袭来,我开始寻求新的方向,希望能实现自我价值,获得业务上的成就感。 我经常反思,自己选择的路到底对不对? 我怀念字节的高薪,在国企,年薪从60万降到了30万,稳定的贫穷成为了我的代名词。每次想到收入减半,我在日常花销上都会顾忌重重。
我怀念字节的工作流程,不管是什么事情,都是先干了再说,用结果说话。这比一些走流程审核的方式更高效,也许是因为我是个急性子吧。
国企的系统相较于字节真是天差地别。
最让我怀念的还是字节的小伙伴。大家敢说敢玩,直来直去,从不顾忌得罪人,简单的工作,坦诚的氛围,这让我无比怀念。 也许,国企不是我的未来。
毕竟我才三十多岁,一想到要这样日复一日地工作到六十岁,我就不禁感到失落。 我是个纠结且爱折腾的人,心依然不安分,依然在寻找新的可能。
也许,最终我会选择成为自由职业者,自由且无拘无束。干我自己喜欢的事,不用听领导的指令,不用顾忌同事间微妙的关系。100%全情投入我热爱的事业。 随着工作年限的增加,我对自由愈发向往。
从字节去国企,我后悔了。
但人生没有读档键,只能向前走。 这就是我,一个纠结而平凡的打工人。
网友对此的评价我不做评论,说他*也好,*也好,每个人的一生其实就是在不停地折腾啊。
从一个围城,到另外一个围城。我只想说,不管什么时候,你开心就好。
现在,还没有拿到offer的同学,可以看看一次国企的面试题目了,已经稳定的同学,可以直接跳转最后,有惊喜哦~
开始面试
面试官: 你好,欢迎来到天翼的安全开发面试。我们先从基础开始,谈谈你对JVM运行机制以及其内存区域的理解吧。
求职者: JVM是Java虚拟机,它提供了一个能够运行Java字节码的运行时环境。 JVM的内存区域主要包括堆(Heap)、方法区(Method Area)、虚拟机栈(VM Stacks)、本地方法栈(Native Method Stacks)和程序计数器(Program Counter Register)。堆是最大的一块区域,用于存放对象实例;方法区用于存储类信息、常量、静态变量等;虚拟机栈存放局部变量表、操作数栈、动态链接、方法出口等信息;本地方法栈用于支持本地方法执行;程序计数器保存当前线程执行的字节码的行号指示器。
面试官: 类的加载机制以及有哪些种类你了解吗?
求职者: 类的加载机制指的是类加载的过程,包括加载、链接和初始化三个主要阶段。类加载器有几种类型,包括引导类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)、应用程序类加载器(Application ClassLoader)和自定义类加载器。Java使用双亲委派模型,优先委托给父加载器尝试加载,保证了Java核心库的类型安全性。
面试官: 那么对HashMap的了解以及1.7和1.8的区别?
求职者: HashMap是基于哈希表的Map接口的非同步实现。在JDK 1.7中,HashMap采用数组+链表的方式实现。如果有哈希冲突,就用链表来解决。JDK 1.8中对此进行了优化,引入了红黑树。当链表长度超过一定阈值时,链表会转换为红黑树,这样大大减少了搜索时间。
面试官: 了解HashMap的扩容机制吗?详细说说。
求职者: 当HashMap中的元素数量超过负载因子与当前容量的乘积时,就会进行扩容。扩容会创建一个新的Entry数组,大小是原数组的两倍,并将原数组中的所有元素重新哈希到新数组中。这个过程中可能需要重新计算元素的位置,因为容量改变了哈希的分布也可能会改变。
面试官: volatile关键字用过吗?它是做什么的?
求职者: 是的,volatile是Java中的一个关键字,它可以确保变量的可见性。当一个变量被volatile修饰后,它会保证这个变量对所有线程的可见性,即一个线程修改了这个变量的值,新值对其他线程来说是立即可见的。此外,volatile还禁止指令重排序优化。
面试官: 那么,能详细讲解一下线程池吗?
求职者: 线程池是一种基于池化技术的多线程管理机制,它可以有效地管理线程资源,提高程序性能,减少资源消耗。Java中的ExecutorService接口是线程池的核心接口,Java提供了多种线程池的实现,如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等。线程池主要包括几个核心组成部分:核心线程数、最大线程数、工作队列、线程工厂和拒绝策略。它通过控制这些参数,实现对线程的复用、管理和调度。
面试官: 讲讲ThreadLocal吧。
求职者: ThreadLocal提供了线程局部变量,它是一种使变量在每个线程中都创建一个副本的方式,每个线程可以访问自己内部的副本变量。使用ThreadLocal可以实现线程间数据的隔离,非常适合解决线程安全问题。在多线程环境下,ThreadLocal为每个线程提供了独立的变量副本,从而避免了线程间的数据共享所导致的各种冲突和安全问题。
面试官: 在MyBatis中,$和#的区别是什么?
求职者: 在MyBatis中,和#都可以用于SQL语句的参数传递,但处理方式不同。使用#{}可以实现预编译,它会将SQL中的参数占位符替换为问号"?",并通过PreparedStatement设置参数值,能有效防止SQL注入。而使用{}则是直接字符串替换,如果参数内容不可控,可能会引起SQL注入风险。
面试官: Redis的持久化机制有哪些?
求职者: Redis支持两种主要的持久化机制:RDB(快照)和AOF(追加文件)。RDB持久化会在指定的时间间隔内生成数据库的快照并保存到磁盘上。AOF持久化则是将每一个写操作命令追加到AOF文件中,重启时通过重新执行这些命令来恢复数据。
Redis还支持同时使用RDB和AOF,结合两者的优点。
面试官: 你对Redis集群有了解吗?
求职者: Redis集群是Redis提供的一种分布式数据库解决方案,它可以在多个Redis节点间自动分割数据,实现数据的分片存储。Redis集群通过选举机制确保高可用性,支持自动故障转移和数据复制。客户端请求会根据键值的hash值路由到相应的节点,实现高性能和数据的分布式存储。
面试官: 最后,讲讲Spring IOC和AOP吧。
求职者: Spring的IOC(控制反转)是一种设计原则,用于降低程序间的耦合度。在Spring框架中,IOC容器负责初始化、配置和组装对象。依赖注入是IOC的一种实现方式,它允许对象定义它们依赖的对象,而不是自己创建或查找。AOP(面向切面编程)允许开发者定义横切关注点(如日志、事务管理),独立于业务逻辑的主流程。通过AOP,可以将这些关注点模块化,减少代码重复。
面试官: 很好,去等通知吧~