疫情之下, 仅仅一年经验,却斩获多家大厂offer-同事大部分都去了创业型的公司,

被裁后的生活

受到疫情的严重影响,公司不得不优化人员以降低成本,在这种环境下活下来才是最重要的。因为公司的赔偿比较厚道(N+1.5),其实大部门被裁的人都是很开心的,那一天整个公司都充满了开心的气氛(金钱的味道),大家在一楼喝喝咖啡,然后收拾东西道别就走了,因为时间紧促,连工作交接都没做。

其实被裁那一天,我的心情是即紧张又期待,为什么这么说呢,因为身边一个个小伙伴都被叫过去签署离职协议,自己实在按捺不住,还有很多希望进入裁员名单而没有获得资格。我可以说即是不幸的那个又是非常幸运的那个,不幸的是我进入裁员名单了,而幸运的是我拿到了比较多的补偿,这足以让我去重新找一份新的工作。

被裁第一周心情是挺压抑的,没有目标也没有去向,人生第一次这么迷茫,只能花点时间改改简历,然后开始投递。经过一周的调整,简历修改完善,然后开始在boss直聘、牛客网、工作内推群里面疯狂投递简历,现在回想起来是个非常致命的决定,第一个方面是因为自己的简历写的太仓促,没有太大的亮点,然后很多投递都是直接进入公司人才库,被锁定半年,所以找工作之前一定要找身边比较厉害的朋友帮忙修改下简历;第二个方面是自己没有充足的时间去复习,导致很多知识盲区,侧面的印证点是一面都无法通过,现在反思后觉得,找工作一定不能太急躁,否则功亏一篑。

投递的公司都是国内比较知名的互联网公司,但这里有个比较大坑,华为OD岗(披着华为的名号招聘),其实就是外包,去外包自己的职业就毁了,因为很多公司认为没有能力的人才会去外包公司,很可能以后简历都过不了,以下是投递的公司列表(每个公司至少投递两个部门):

阿里 拼多多 头条 快手 lazada shopee 腾讯 美团 网易 小米  百度 爱奇艺

oppo vivo 华为

喜马拉雅 知乎 金山 小红书 脉脉 哔哩哔哩 bigo 有赞

PS: 我比较特殊,因为工作经验不到一年,很多公司直接拒掉简历,所以我大部分走的是内推。

面试准备

在我面试期间,很多小伙伴都陆陆续续入职了,大部分都是一些创业型的公司,而我还在不断的复习、面试,我几乎是最后一个才去工作的。不管你的空档期是一个月还是两个月,面试官都不会在意的,所以花一个月去做全面的复习,然后再去面试,会得到更好的效果。

书籍阅读

找工作期间一定不能贪玩,每天规律的作息、有规划的学习至关重要。我将复习拆分成三个阶段:

第一阶段是基础知识:扎实的基础知识才能获得面试官的青睐,因为我是后台开发,主要复习的内容是计算机网络、操作系统、数据结构、基础算法、java基础、jvm。

第二个阶段是中间件和框架要点整理:主要是项目里面用到的框架和中间件,比如Dubbo、Netty、MySQL、kafka、zookeeper、redis等等。

第三个阶段是项目整理:项目是面试中比重最大的部分,所以一定要花时间去整理和理解透彻每一个模块,并花时间去做总结,项目开始时间和截止时间、开发团队人数、自己承担的角色、业绩产出等等。

确定计划后,我就到网盘上下载了自己所需要的电子书,主要是基础跟中间件书籍,因为书籍页数太多,比较耗费时间,因此不建议从头到尾阅读,较好的做法是挑取关键的章节来进行阅读,阅读完后还需要自己做笔记,方便以后翻阅,以下是我复习的书籍。

以上的这些资料获取方式:点我获取

算法准备

作为一个后台开发人员,算法白板编程是必备的。算法积累是一个长期的过程,需要不断地去刷题保持手感。学习算法的前提是数据结构要足够地熟悉,我大学的时候数据结构和算法都很差,经过数十场面试才慢慢将算法重视起来,通过阅读《程序员代码面试指南 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,目前已经入职一家互联网公司。

给大家分享下我在面试的时候也在刷得面试题库,点我获取

你可能感兴趣的:(疫情之下, 仅仅一年经验,却斩获多家大厂offer-同事大部分都去了创业型的公司,)