逆风而行!从考研失败到收获到本身满意的后端开发Offer,分享一下本身的经历!

你们好,我是Guide哥,这篇文章是一位读者的投稿。这篇文章分享了他从肯定Java后端方向 -> 考研 -> 考研失败->准备春招 -> 收货本身满意的offer 的心路历程。前端

Guide哥:建议好好看看,做者分享的内容很棒!相关阅读:《V2.0 版本的 《JavaGuide面试突击版》来啦!带着它的在线阅读版原本啦!》git

我的状况

我本科是某双非一本,大学四年也没作过太多有成就的事情。和不少在校生同样,我也经历过很迷茫的时间段,倒腾过单片机。github

当时还出于对黑客的崇拜,折腾过一个月的网络安全。反正什么都去接触一点,以此来消磨我无聊的时间,不事后面谈了女友就不无聊了,哈哈。面试

Guide 哥:居然有女友!算法

惟一感受有收获的应该就是呆过 ACM 训练营,无奈本身太菜,拿的奖项都很小,蓝桥杯省一等奖这种水平。从大三开始,给本身明确了目标,仍是老实实学习一个领域的技术吧。当时从知乎上查看了有不少方向,前端,后端,大数据,人工智能。根据我本身的兴趣(好就业)给本身明确了 Java 后端开发的方向。spring

考研

当时出于想继续学习提高本身的目的,选择了考研。这个地方想说一点就是,到大三了必定要规划好本身未来要作什么考研,就业,考公务员等等,坚决本身的信心和决心!。不要像我同样,在考研开始到结束的期间总会在某个时间段会心态上波动,以为一全年的考研可能所以错过不少的机会,好比秋招。万一最后没考上研,就很尴尬了,毕业即失业?数据库

尤为是本身考研期间复习不理想的时候,胡思乱想的东西就会愈来愈多。常常会找同窗,朋友以及考上研的学长谈心来调节本身的心态。这个地方特别想感谢个人女友,在我每次心态爆炸,迷茫想放弃的时候,都愿意花本身的时间陪我出去散心,虽然她也在备战考研。有机会的话,仍是建议能找几个比较自律的研友,能够互联督促约束。后端

Guide 哥:此处@一下这位老哥的女友。设计模式

这一切都过来的时候,才会以为本身当初的想法比较幼稚,天无绝人之路。既然选择了远方,便只顾风雨兼程。专心作好一件事就行,只要本身保持上进心,相信将来必定会愈来愈好,一切美好都将与你环环相扣。缓存

好在我最后仍是坚持的走完了考研的旅程,虽然结果不那么的美好,可是我以为一切都是值得的,至少个人计算机基础,高数,英语在这一年里都获得了很大的提升。

准备春招

我从考研结束以后,就开始着手准备春招的内容,复习之前作过的项目和学习过的技术栈。因为时间比较紧,任务比较重。这个时候,我以为能够面向面经来学习准备,我花了一个上午的时间去牛客网刷面经,

最终按照不一样的模块整理了一份不重复的面试常见问题,接着一切的学习任务都围绕着这个面试题来展开复习,查阅相关的书籍资料。

总结了一下,须要准备的内容也就是:

  1. 算法
  2. 项目
  3. 牛客网总结的常见面试知识点的复习。

算法的话,个人时间比较紧,复习的主要是 《剑指 offer》 + leetcode 的 top100。刚开始能够按分专题模块来刷,后面就能够随机练习。

项目的话,我以为若是有机会能接触到真实的项目是很是好的,由于这一块当你面试的时候针对某些细节你能够自信的和面试官聊不少,若是要是本身包装的话,可能聊起来会以为很虚。不过也没有关系,即便是本身跟着网课学习的或者找的开源项目,我以为首先得保证能彻底吃透这个项目的细节,细到数据库的表各个字段的含义,项目中哪些功能在哪个模块实现,为何这样实现,有没有更好的实现方式了。这些我以为都是你须要思考的问题,由于面试中会出现各类不一样的状况,面对不一样的面试官,问的问题也是千奇百怪的。

关于项目经历,我再补充一下,避免你们踩坑。

无论是网课的项目,仍是开源的项目。你能发现,别人也能发现,怎么才能避免雷同,体现本身的特点,项目中真正具备你的思考在里面。我有以下建议送给你:

  1. 能够替换其中的相关技术栈(好比 kafka 换成 RocketMQ),同时还须要准备本身选型这个技术栈的理由,必定要可以自圆其说。
  2. 能够本身在这个项目的基础之上添加一些额外的功能。这些内容都算是你本身写的,也是本身思考的点,面试的时候能够自信的和面试官介绍。对于项目介绍的部分,我以为能够主动突出本身的亮点和难点。好比常见的考察 JVM 相关的问题,能够经过"本身创造难点,遇到的问题"来将这个问题主动出来,将主动权握在本身的手中。好比我当时为了说明项目中解决的问题,在项目的读写分离部分是经过 MyBatis 的数据源的动态切换,这一模块中使用了 Threadlocal 来进行隔离,所以抛出因为团队人员在开发过程当中忘记 remove,最终致使项目上线后按期出现的 oom 问题,你能够聊你的解决方案以及定位问题的方法,接着面试官还有可能会考察 ThreadLocal 相关的问题,沿着这一条链路下来,能够思考着面试中面试官可能会问的这些问题,提早作好准备,让本身可以更有信心得去准备面试。对于面试,必定须要记住提前开始面起来,不要像我同样"等待一切都准备好"再投简历开始面试,这样会错过不少的机会。面了 2-3 家以后就慢慢培养出感受来,从一开始自我介绍都结结巴巴,到最后把握面试的过程,这个阶段是须要练习的,能够刚开始投递本身最不想去的公司,当成本身练习的过程。

好在本身准备的还算充分,感受比较幸运的是在这个疫情笼罩加上互联网寒冬时期,各大互联网公司裁人的状况下,经历了几个月的反复准备让本身拿了一些的 offer,最终也得到了本身比较满意的 offer。面经部分,我的以为 SHEIN 这家公司问的比较全面,涵盖了常见的题目。以下,仅供参考学习。

SHEIN 面经分享

SHEIN 是一家成立于 2008 年的快时尚出口跨境电商互联网公司,集商品设计、仓储供应链、互联网研发以及线上运营于一体。

一面(45min 左右)

  1. 自我介绍
  2. 详细的聊了 TCP 三次握手四次挥手,以及各个环节可能会出现的相关问题。
  3. 有没有作过 MySQL 调优,MySQL 的一些优化方法,还问到了 MySQL 选错索引的问题,整条 MySQL 执行会通过哪些过程。
  4. HashMap 和 ConcurrentHashMap 1.7 和 1.8 的变化。hash 扩容为何要扩大两倍,扩大 3 倍为何不行。
  5. 本地缓存 GuavaCache 和 Redis 的区别,为何项目中采用了多级缓存的设计
  6. 介绍常见的设计模式(这一块,我以为结合 jdk 或者 spring 相关源码,或者本身的项目使用的设计模式聊比较好)
  7. 为何要使用 SpringBoot,他能带来哪些好处。
  8. 线程池你在项目中怎么使用的,线程池内部原理的流程是什么样的。
  9. 阻塞队列有没有看过底层是怎么实现的
  10. synchronize 和 ReentrantLock 的区别,须要先介绍各自的底层实现。
  11. 有没有什么想问他的。

二面(1h 左右)

二面问了挺久,总共一个半小时,基本围绕着简从来问,

  1. 问了一些 Java 基础,HashMap,HashSet,重写了 hashCode 方法需不须要重写 equal 方法,如何解决哈希冲突的等等.
  2. B+树,InnoDB 与 MyIsam 的区别,还问了事务隔离级别读提交与可重复读的的一些区别.
  3. 接下来又问了 Java 并发知识点,Synchronized 与 ReentrantLock 区别,可见性的问题,CAS,问到 Unsafe 是什么,原子类等等.
  4. JVM 问的比较多,程序计数器的做用,虚拟机栈里面的栈帧存放着什么,本地方法栈又是干什么用的,新生代与老年代,垃圾回收算法,垃圾收集器等等问题。
  5. Spring 问了 IOC 和 AOP,这一块问的相对较少.
  6. 问了不少基础以后才开始问项目,项目从第一个开始问,问的很细,难点在哪,怎么解决,点赞后站内信的通知异步是怎么实现的等等,问完第一个项目接着问第二个项目。
  7. 问了 netty 如何使用的,nio 相关问题,最后问到 Linux 的 io ,select,epoll 这些。
  8. HashMap 存储了 50w 的数据,给出最快速给遍历方法
  9. 有没有什么想问他的。

三面(25min 左右)

三面问的技术问题就相对少了,主要问了跳表,Java 并发的知识点,Linux 的基础命令,Git 的常规问题,JVM 的回收算法介绍了下,还问了让我来介绍 Git 给不懂 Git 的人听,你会怎么跟他介绍。

四面 ( CTO 面 时间很短,不到 5 分钟)

大概就随便和我聊了下,为何想来南京,有没有参加秋招,本科期间代码量怎么样,我当时都还没开始聊起来,他就说大概就这些了。 感受有点虚,毕竟问的时间那么短,当时我还问了以前认识的一个老哥,他也面了 CTO 面,他也是 5 分钟左右,整体感受 CTO 挺幽默的。

五面 HR 面

主要介绍了公司的状况,薪酬待遇,问能不能提早去实习等等一些问题。

整体感受 shein 的面试效率仍是很高的,基本一天一面。 HR 的态度很是好,中间因为一些事情耽误,还鸽了一次技术面试,HR 根据个人时间以及面试官的时间帮我额外安排了一次面试。对这家公司的映像很是好。
值得一提的是感受如今互联网上的资料太过于多,各大线上架构师等培训机构的出现,间接的促进了面试难度在逐年加大,有些问题不能不理解的单单去记忆背诵,以此来指望面试经过,这个方法确定行不通。
记得比较深入的是有一场面试,我间接提了好几嘴本身对于 HashMap,ConcurrentHashMap 比较熟悉,面试官都不买帐。包括后续问我对 Java 那一块比较熟悉除了集合部分(衰)。对于 JVM 的考察也再也不是考察背诵垃圾回收算法以及常见的垃圾收集器,而是问为何要按这个比例设定,若是不这样会致使什么问题等等。对于常见的排序和二叉树的时间复杂度被问到后,面试官但愿你可以给他推导出来。因此,但愿准备面试的小伙伴,

写在最后

仍是要准备扎实的基础,不要靠直接背诵面试题这种方式来应付面试,方能以不变应万变。最后,吃水不忘挖井人,很是感谢 Guide 哥的帮助,Guide 哥的公众号和 github 在我学习 Java 的道路上包括后续的准备面试的过程当中对个人帮助都很是大。

Guide 哥:这个彩虹屁 🌈 很喜欢,哈哈!

做者介绍: Github 70k Star 项目 JavaGuide(公众号同名) 做者。每周都会在公众号更新一些本身原创干货。公众hao后台回复“1”领取Java工程师必备学习资料+面试突击pdf。

相关文章
相关标签/搜索