写点什么

疫情之下,被公司优化掉!同事大部分都去了创业型的公司,而我仅仅一年经验,却斩获多家大厂 offer

发布于: 2020 年 12 月 10 日

被裁后的生活



受到疫情的严重影响,公司不得不优化人员以降低成本,在这种环境下活下来才是最重要的。因为公司的赔偿比较厚道(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基础



  1. 为什么String定义为final。

  2. 描述下java集合,项目中用到哪些。

  3. StringBuilder和StringBuffer的区别。

  4. HashMap中常用的方法有哪些,什么时候会触发树化,jdk1.7和1.8实现的差异,1.7的实现为什么会出现死锁,画图说明下。HashMap和TreeMap的区别。

  5. 说下枚举类型,底层实现原理,项目中是如何使用的。

  6. 详细描述Error和Exception(运行期和编译期)的区别。

  7. 创建线程的方式,线程的生命周期。

  8. ThrealLocal实现原理,为什么会出现内存泄漏。

  9. volatile关键字原理,项目中是如何使用的。

  10. synchronized和lock的区别,底层实现原理。AQS队列实现原理,用了哪些设计模式。公平锁和非公平锁、独占锁和共享锁、读写锁分别是如何实现的,为什么说非公平锁比公平锁性能高。

  11. 序列化和反序列化。

  12. 深拷贝和浅拷贝区别。

  13. java内部类的区别(成员内部类、静态嵌套类、方法内部类、匿名内部类 )。

  14. java线程池参数描述,线程池工作原理,线程池如何调优。

  15. 主线程到达一个条件,需要多个子线程去执行任务,等子任务都执行完后再往下走,如何编写代码(CountDownLatch)。

  16. 写个程序,两个线程交叉打印1到100的数字,需要多种实现方式。



JVM



  1. JVM运行时数据区域和内存模型描述,jdk8为什么移除方法区。

  2. 垃圾回收算法和垃圾回收器描述,在工作中,新生代和老年代分别用的什么垃圾回收器。

  3. 新生代和老年代什么时候会触发GC。

  4. 四种引用区别。

  5. CMS垃圾回收过程描述,CMS有哪些缺点,对比G1。

  6. GC调优步骤,有实操过吗。

  7. 描述下JVM类加载过程,如何自定义类加载器。

  8. 描述下双亲委派模型,为什么需要双亲委派模型。

  9. 泛型是如何实现的,逃逸分析知道吗,说下。

  10. OOM、内存泄漏如何排查,用到哪些工具,如果不用工具如何进行定位。

  11. 机器负载变高如何排查,如果发现是jvm进程引起的,如何定位到代码行。



Spring框架



  1. Spring框架用到了哪些设计模式。

  2. Spring生命周期详细描述。

  3. Spring是如何解决循环依赖的。

  4. Spring扩展点有哪些,项目中是如何应用的。

  5. Spring IOC、AOP描述。

  6. Spring事务和MySQL事务的区别,Spring事务传播机制介绍,Spring事务失效和解决方案。

  7. Spring全局异常捕获如何编写。

  8. AOP动态代理实现:jdk动态代理和cglib实现差异,cglib性能为什么比jdk动态代理性能高,Fastclass机制描述下,哪些方法不能被动态代理。

  9. AOP失效举例,为什么会失效,如何解决。

  10. BeanFactory和FactoryBean的区别。

  11. Spring创建了单例对象,如果多线程并发对属性赋值,造成相互覆盖的情况,如何处理。

  12. SpringMVC和SpringBoot的区别。



MySQL



  1. 事务描述,ACID讲解。

  2. 事务隔离级别描述,脏读、不可重复读、幻读区别,MVCC机制讲解。

  3. Innodb如何解决幻读,间隙锁实现详细描述。

  4. left join和inner join的区别,嵌套子查询如何优化。

  5. 如果线上出现慢sql,如何定位和解决,有实际动手优化过慢sql吗。

  6. binlog机制描述,binlog日志格式有哪些。

  7. MySQL主从架构(读写分离),主从数据复制过程,数据复制过程丢失如何处理。

  8. 分库分表如何实现,用过哪些分库分表插件,底层原理是怎样的。

  9. 索引有哪些种类,建立索引的原则,聚簇索引和非聚簇索引实现区别,联合索引如何使用。

  10. mysql写入数据的时候,是先把数据写到缓冲区,然后再flush到磁盘的,如何在flush过程中发生了宕机,数据如何恢复。



Redis



  1. redis数据类型,说下跳跃表是如何实现的,可以用什么数据结构替换。

  2. 删除过期key策略有哪些,内存淘汰策略有哪些,分别什么时候触发。

  3. redis线程模型和内存模型。

  4. redis持久化机制。

  5. redis集群方案。

  6. 让你设计一个redis,你会怎么做,有看过redis源码吗。

  7. 了解一致性hash算法吗,描述下。

  8. 用redis实现一个分布式锁。

  9. 缓存穿透、缓存击穿、缓存雪崩区别和解决方案。

  10. 布隆过滤器知道吗,说下原理。



Dubbo



  1. 描述一下rpc调用过程。

  2. 让你实现一个rpc框架,你会怎么做。

  3. 链路跟踪和熔断机制了解吗,框架层如何实现的。

  4. 了解哪些序列化协议,有什么区别,项目中用的是什么协议。

  5. 说下Netty,bio、nio、aio区别,select、poll、epoll区别,什么是零拷贝机制。



Kafka



  1. Kafka、RabbitMQ、RocketMQ区别,为什么RabbitMQ时延最低,知道事务消息吗。

  2. Kafka生产者、消费者、协调者、服务端工作机制,描述数据从生产端到消费端到过程。

  3. 如果出现数据丢失或者数据重复消费如何处理。

  4. Kafka为什么高吞吐量。

  5. Kafka是如何实现exactly once语义的。

  6. 让你设计一个消息队列,你会怎么设计。



Zookeeper



  1. zookeeper节点类型、服务器角色,watch机制。

  2. 描述下ZAB协议。

  3. 应用场景。

  4. 使用zookeeper实现分布式锁和读写锁。



算法编程



  1. 无重复字符的最长子串

  2. 二叉树的直径

  3. 二叉树最大宽度

  4. 寻找旋转排序数组中的最小值

  5. 旋转链表

  6. LRU缓存机制

  7. 数据流的中位数

  8. 搜索旋转排序数组



后记



前前后后面试了一个多月,可以感受到的是今年找工作非常难,加上我工作经验短,很多公司都没给面试机会,庆幸的是拿到了几个offer,目前已经入职一家互联网公司。



给大家分享下我在面试的时候也在刷得面试题库,免费分享哦,一键三连后,添加小助理:msbjy2019即可获取哦







用户头像

还未添加个人签名 2020.11.03 加入

添加小助理VX:msbjy2019获取进阶资料哦

评论

发布
暂无评论
疫情之下,被公司优化掉!同事大部分都去了创业型的公司,而我仅仅一年经验,却斩获多家大厂offer