疫情之下,被公司优化掉!同事大部分都去了创业型的公司,而我仅仅一年经验,却斩获多家大厂 offer
被裁后的生活
受到疫情
的严重影响,公司不得不优化人员以降低成本,在这种环境下活下来才是最重要的。因为公司的赔偿
比较厚道(N+1.5),其实大部门被裁的人都是很开心的,那一天整个公司都充满了开心的气氛(金钱的味道),大家在一楼喝喝咖啡,然后收拾东西道别就走了,因为时间紧促,连工作交接都没做。
其实被裁那一天,我的心情是即紧张又期待,为什么这么说呢,因为身边一个个小伙伴都被叫过去签署离职协议,自己实在按捺不住,还有很多希望进入裁员名单
而没有获得资格。我可以说即是不幸的那个又是非常幸运的那个,不幸的是我进入裁员名单了,而幸运的是我拿到了比较多的补偿,这足以让我去重新找一份新的工作。
被裁第一周心情是挺压抑
的,没有目标也没有去向,人生第一次这么迷茫,只能花点时间改改简历
,然后开始投递。经过一周的调整,简历修改完善,然后开始在boss直聘、牛客网、工作内推群里面疯狂投递简历,现在回想起来是个非常致命
的决定,第一个方面是因为自己的简历写的太仓促
,没有太大的亮点,然后很多投递都是直接进入公司人才库,被锁定半年
,所以找工作之前一定要找身边比较厉害的朋友帮忙修改下简历;第二个方面是自己没有充足的时间去复习
,导致很多知识盲区,侧面的印证点是一面
都无法通过,现在反思后觉得,找工作一定不能太急躁,否则功亏一篑。
投递的公司都是国内比较知名的互联网公司,但这里有个比较大坑
,华为OD岗
(披着华为的名号招聘),其实就是外包,去外包自己的职业就毁了,因为很多公司认为没有能力的人才会去外包公司,很可能以后简历都过不了,以下是投递的公司列表(每个公司至少投递两个部门
):
阿里 拼多多 头条 快手 lazada shopee 腾讯 美团 网易 小米 滴滴 京东 百度 爱奇艺 虎牙
oppo vivo 华为
喜马拉雅 知乎 金山 小红书 脉脉 哔哩哔哩 bigo 有赞 平安科技 yy
PS: 我比较特殊,因为工作经验不到一年,很多公司直接拒掉简历,所以我大部分走的是内推。
面试准备
在我面试期间,很多小伙伴都陆陆续续入职了,大部分都是一些创业型的公司,而我还在不断的复习、面试,我几乎是最后一个才去工作的。不管你的空档期是一个月还是两个月,面试官都不会在意的,所以花一个月去做全面的复习,然后再去面试,会得到更好的效果。
书籍阅读
找工作期间一定不能贪玩,每天规律的作息、有规划的学习至关重要。我将复习拆分成三个阶段
:
第一阶段是
基础知识
:扎实的基础知识才能获得面试官的青睐,因为我是后台开发,主要复习的内容是计算机网络、操作系统、数据结构、基础算法、java基础、jvm。第二个阶段是
中间件和框架要点整理
:主要是项目里面用到的框架和中间件,比如Dubbo、Netty、MySQL、kafka、zookeeper、redis等等。第三个阶段是
项目整理
:项目是面试中比重最大的部分,所以一定要花时间去整理和理解透彻每一个模块,并花时间去做总结,项目开始时间和截止时间、开发团队人数、自己承担的角色、业绩产出等等。
确定计划后,我就到网盘上下载了自己所需要的电子书,主要是基础跟中间件书籍,因为书籍页数太多,比较耗费时间,因此不建议从头到尾阅读,较好的做法是挑取关键的章节
来进行阅读,阅读完后还需要自己做笔记,方便以后翻阅,以下是我复习的书籍。
以上的这些资料也是免费分享哦,一键三连后,添加小助理:msbjy2019即可获取哦
算法准备
作为一个后台开发人员,算法白板编程是必备的。算法积累是一个长期的过程,需要不断地去刷题保持手感。学习算法的前提是数据结构要足够地熟悉,我大学的时候数据结构和算法都很差,经过数十场面试才慢慢将算法重视起来,通过阅读《程序员代码面试指南 IT名企算法与数据结构题目最优解 ,左程云著 》搭建个人基础,然后通过刷牛客网
和leetcode
来积累经验。
因为刷算法题更多地是针对面试,所以可以按照分类去刷一定数量的题目,有相应的解题思路和模版就好。我是按照数组、链表、树、队列、栈、哈希表、并查集、动态规划这些分类去刷的。因为很多面试都是在牛客网进行编程的,因此需要到牛客网手写一定数量的题目,懂得输入输出控制
。
因为面试题目很多都是出自剑指offer的,可以在牛客网多刷几遍,然后看下标准答案,记住解题思路。
剑指offer专项
像头条这种公司,题目基本都是出自leetcode,因此面试之前可以准备几个月时间去刷题,不好的一点的是leetcode中的头条专项题目是收费的,并不建议大家去购买。我的刷题策略是先做探索
里面的专项,然后刷leetcode前两百
道题目(热门面试题),最后根据标签刷对应的题目(比如动态规划),medium大概刷200道就好。
阿里、头条、拼多多等面经总结
java基础
为什么String定义为final。
描述下java集合,项目中用到哪些。
StringBuilder和StringBuffer的区别。
HashMap中常用的方法有哪些,什么时候会触发树化,jdk1.7和1.8实现的差异,1.7的实现为什么会出现死锁,画图说明下。HashMap和TreeMap的区别。
说下枚举类型,底层实现原理,项目中是如何使用的。
详细描述Error和Exception(运行期和编译期)的区别。
创建线程的方式,线程的生命周期。
ThrealLocal实现原理,为什么会出现内存泄漏。
volatile关键字原理,项目中是如何使用的。
synchronized和lock的区别,底层实现原理。AQS队列实现原理,用了哪些设计模式。公平锁和非公平锁、独占锁和共享锁、读写锁分别是如何实现的,为什么说非公平锁比公平锁性能高。
序列化和反序列化。
深拷贝和浅拷贝区别。
java内部类的区别(成员内部类、静态嵌套类、方法内部类、匿名内部类 )。
java线程池参数描述,线程池工作原理,线程池如何调优。
主线程到达一个条件,需要多个子线程去执行任务,等子任务都执行完后再往下走,如何编写代码(CountDownLatch)。
写个程序,两个线程交叉打印1到100的数字,需要多种实现方式。
JVM
JVM运行时数据区域和内存模型描述,jdk8为什么移除方法区。
垃圾回收算法和垃圾回收器描述,在工作中,新生代和老年代分别用的什么垃圾回收器。
新生代和老年代什么时候会触发GC。
四种引用区别。
CMS垃圾回收过程描述,CMS有哪些缺点,对比G1。
GC调优步骤,有实操过吗。
描述下JVM类加载过程,如何自定义类加载器。
描述下双亲委派模型,为什么需要双亲委派模型。
泛型是如何实现的,逃逸分析知道吗,说下。
OOM、内存泄漏如何排查,用到哪些工具,如果不用工具如何进行定位。
机器负载变高如何排查,如果发现是jvm进程引起的,如何定位到代码行。
Spring框架
Spring框架用到了哪些设计模式。
Spring生命周期详细描述。
Spring是如何解决循环依赖的。
Spring扩展点有哪些,项目中是如何应用的。
Spring IOC、AOP描述。
Spring事务和MySQL事务的区别,Spring事务传播机制介绍,Spring事务失效和解决方案。
Spring全局异常捕获如何编写。
AOP动态代理实现:jdk动态代理和cglib实现差异,cglib性能为什么比jdk动态代理性能高,Fastclass机制描述下,哪些方法不能被动态代理。
AOP失效举例,为什么会失效,如何解决。
BeanFactory和FactoryBean的区别。
Spring创建了单例对象,如果多线程并发对属性赋值,造成相互覆盖的情况,如何处理。
SpringMVC和SpringBoot的区别。
MySQL
事务描述,ACID讲解。
事务隔离级别描述,脏读、不可重复读、幻读区别,MVCC机制讲解。
Innodb如何解决幻读,间隙锁实现详细描述。
left join和inner join的区别,嵌套子查询如何优化。
如果线上出现慢sql,如何定位和解决,有实际动手优化过慢sql吗。
binlog机制描述,binlog日志格式有哪些。
MySQL主从架构(读写分离),主从数据复制过程,数据复制过程丢失如何处理。
分库分表如何实现,用过哪些分库分表插件,底层原理是怎样的。
索引有哪些种类,建立索引的原则,聚簇索引和非聚簇索引实现区别,联合索引如何使用。
mysql写入数据的时候,是先把数据写到缓冲区,然后再flush到磁盘的,如何在flush过程中发生了宕机,数据如何恢复。
Redis
redis数据类型,说下跳跃表是如何实现的,可以用什么数据结构替换。
删除过期key策略有哪些,内存淘汰策略有哪些,分别什么时候触发。
redis线程模型和内存模型。
redis持久化机制。
redis集群方案。
让你设计一个redis,你会怎么做,有看过redis源码吗。
了解一致性hash算法吗,描述下。
用redis实现一个分布式锁。
缓存穿透、缓存击穿、缓存雪崩区别和解决方案。
布隆过滤器知道吗,说下原理。
Dubbo
描述一下rpc调用过程。
让你实现一个rpc框架,你会怎么做。
链路跟踪和熔断机制了解吗,框架层如何实现的。
了解哪些序列化协议,有什么区别,项目中用的是什么协议。
说下Netty,bio、nio、aio区别,select、poll、epoll区别,什么是零拷贝机制。
Kafka
Kafka、RabbitMQ、RocketMQ区别,为什么RabbitMQ时延最低,知道事务消息吗。
Kafka生产者、消费者、协调者、服务端工作机制,描述数据从生产端到消费端到过程。
如果出现数据丢失或者数据重复消费如何处理。
Kafka为什么高吞吐量。
Kafka是如何实现exactly once语义的。
让你设计一个消息队列,你会怎么设计。
Zookeeper
zookeeper节点类型、服务器角色,watch机制。
描述下ZAB协议。
应用场景。
使用zookeeper实现分布式锁和读写锁。
算法编程
无重复字符的最长子串
二叉树的直径
二叉树最大宽度
寻找旋转排序数组中的最小值
旋转链表
LRU缓存机制
数据流的中位数
搜索旋转排序数组
后记
前前后后面试了一个多月,可以感受到的是今年找工作非常难,加上我工作经验短,很多公司都没给面试机会,庆幸的是拿到了几个offer,目前已经入职一家互联网公司。
给大家分享下我在面试的时候也在刷得面试题库,免费分享哦,一键三连后,添加小助理:msbjy2019即可获取哦
评论