个人背景与求职经历

我是2021年毕业的一名普通二本学生。在大学三年级时,我决定考研,但遗憾的是没有被理想的学校录取。之后,我在大四的时候尝试了创业,但由于各种原因未能坚持下去,最终在毕业前选择返回学校寻找工作。

由于创业的经历,我未能参加学校的秋招和春招,直到回到学校后才开始整理大学时学过的Java知识,匆匆忙忙地做了一个简单的后台管理系统和微信小程序作为毕业设计,之后便在BOSS上投递简历。面试的时候常常感觉如坐火炉,面对面试官提出的基本SQL语法问题都无法回答,感到非常沮丧,有时候甚至怀疑自己的能力。

尽管如此,只要有公司邀请我面试,无论大小,我都将其视为机会。在这一个月的时间里,我走访了许多大学未曾踏足的地方,这也是一段难得的经历。

第一份工作

尽管基础较为薄弱,面试的过程却没有让我气馁。终于在距离毕业还有两周的时间里,南昌高新区的一家OA产品公司向我发出了入职通知,可能是因为他们人手不足,加上我在多次面试中的积累,终于迎来了成功。

入职后,我努力了解公司的主要业务,并开始自学,从SSM框架着手,逐步深入学习SpringBoot、Redis、Nacos等多个组件。

面试准备

我正式开始准备面试是在2023年年后,这段时间并没有学习新的知识,而是专注于面试题的研究,从各种资源中获取信息,包括公众号、牛客网的面经,甚至抖音的直播。我每天基本能投递50份以上的简历,所有邀请我面试的公司我都毫不犹豫地参加。由于我的投递多数是外地公司,因此几乎全是线上面试。

刚开始时,我对面试感到非常紧张,十道问题中能回答的也只是寥寥无几。但随着时间的推移,我渐渐适应了面试的节奏,每次面试后都会总结问题,积累经验,特别是在Spring、Dubbo等源码方面的问题上,虽然我对源码的了解很浅,但每次面试都有所收获。

我获得的第一个offer是一个外包岗位,薪资相对较高,但我希望能够找到一个更能接触到核心业务的职位,因此依然在持续投递简历。

经过大约两个月的简历投递和面试,我终于拿到了一个满意的口头offer,是一家知名的物流公司(出于保密原因,我暂时不便透露公司名称)。

整个找工作的过程非常辛苦,我本性比较懒散,大学时几乎没有参加过任何比赛。但从毕业后开始,我始终保持学习,刷LeetCode,努力为找到一个理想的工作而奋斗。希望在校的同学们能够提前做好准备,参加各类比赛,多刷算法,这样绝对是有利无害的。

面试经验分享

深圳荣耀外包

  1. 请简单介绍一下项目及其技术难点。
  2. 说说String、StringBuffer和StringBuilder的区别。
  3. HashMap的遍历方式,有哪些?
  4. 平常使用Spring AOP的场景及实现方式。
  5. Spring的Bean是否线程安全,如何使用线程安全的Bean?
  6. 除了锁,如何保证线程安全?
  7. Redis的使用场景及使用过的数据类型。
  8. Zset如何保证有序?其底层实现是什么?
  9. Redis是否是单线程的,为什么单线程运行还可以这么快?
  10. Redis锁的实现和缺点。
  11. SQL优化的方法。
  12. Java中的Stream流及功能介绍。
  13. MySQL索引的使用及B+树的原因。
  14. HashMap底层源码,红黑树和B+树的区别及原因。
  15. Spring事务的实现方式。
  16. 消息队列的重复消费问题解决方法。
  17. 线程池的底层原理及执行流程,核心线程数与最大线程数的区别。
  18. ThreadLocal的使用。
  19. 线程池的优势。

杭州凡华科技

  1. 介绍项目中负责的内容及遇到的问题。
  2. SpringBoot的启动流程,是否看过源码。
  3. RocketMQ的原理与NameSpace的作用。
  4. Nacos注册流程。
  5. 使用的SpringCloudAlibaba组件的介绍。
  6. GateWay的使用及断言规则。
  7. JUC并发编程中的锁的种类。
  8. 线程池中的非核心线程的含义。
  9. 新生代对象到老年代对象的过程。
  10. 检查内存溢出的方法。
  11. Redis持久化方式及项目中的使用。
  12. Redis数据过期处理方法。

长沙蜜罐

  1. HashMap插入流程的详细描述。
  2. MySQL数据库事务的介绍。
  3. MySQL默认事务级别及其实现方式。
  4. UDP与TCP的区别。
  5. 常用算法的了解,快排的实现及其时间复杂度和空间复杂度。
  6. Synchronized与ReentrantLock的区别。
  7. 死锁的定义及如何避免。
  8. TCP连接与断开连接的过程,为什么采用三次握手与四次挥手。
  9. Java的四种引用。
  10. JVM的常用参数。
  11. JDK1.8的新特性。
  12. Bean的生命周期。

上海ADS

  1. static关键字的应用及其原理。
  2. 内部类与静态内部类的区别。
  3. Volatile的使用及实现。
  4. 最左前缀原则的理解。
  5. MySQL索引的使用及如何创建多条件索引。
  6. 聚簇索引与非聚簇索引的区别。
  7. Redis的使用情况及关系型数据库与非关系型数据库的区别。
  8. 本地缓存是否可以替代Redis?
  9. 项目中使用ES的方式及其效率提升。
  10. 日志使用的框架及级别,info的作用。
  11. synchronized锁升级原理的理解。
  12. 输入网址到显示页面的整个过程。
  13. JVM的主要组成部分及其作用。
  14. Class的加载机制。
  15. MyBatis的缓存机制及$与#的区别。
  16. 了解的垃圾回收方法。
  17. 线程池的使用情况。
  18. 线程池参数的配置。
  19. 使用消息队列的原因。
  20. 项目分工及前端的了解。

总结

大家在求职过程中一定要多面试,多总结经验,及时复盘,不要害怕失败。在面试自己感兴趣的公司时,提前做好准备,以免对后续面试产生影响。可以先在中小公司练手,查漏补缺,从而提升自己的面试技巧。

希望每个人都能找到自己满意的工作