热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

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

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

个人情况

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

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

Guide 哥:竟然有女朋友!

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

考研

当时出于想继续学习提升自己的目的,选择了考研。这个地方想说一点就是,到大三了一定要规划好自己将来要做什么考研,就业,考公务员等等,坚定自己的信心和决心!。不要像我一样,在考研开始到结束的期间总会在某个时间段会心态上波动,觉得一整年的考研可能因此错过很多的机会,比如秋招。万一最后没考上研,就很尴尬了,毕业即失业?

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

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 哥:这个彩虹屁 ???? 很喜欢,哈哈!


推荐阅读
  • Java开发面试问题,2021网易Java高级面试题及答案,实战案例
    前言大厂面试真题向来都是各大求职者的最佳练兵场,而今天小编带来的便是“HUAWEI”面经!这是一次真实的面试经历,虽然不是我自己亲身经历 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 旁路|发生_Day749.旁路缓存:Redis是如何工作的Redis 核心技术与实战
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Day749.旁路缓存:Redis是如何工作的-Redis核心技术与实战相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  • 你知道Kafka和Redis的各自优缺点吗?一文带你优化选择,不走弯路 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
author-avatar
mobiledu2502861597
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有