这篇文章来自LinJy同学的投稿,Linly同学目前三本大四在读,专攻Java后端开发,在今年的秋招中投了140家简历,最终拿下了蘑菇街的意向书。

在今年的秋招开始前,我曾经发起了义务帮大家修改简历的活动,LinJy同学就是其中之一,通过我的努力能一个个地帮大家拿到心仪的Offer,我也很开心。

秋招拿到Offer的同学,文末留言报到啦。

引言

今年的秋招仿佛开始的格外的早,大概从7月开始就能在牛客上看见一些大厂的提前批开始的贴子,到了8月中下旬,秋招正式批也开始了,在牛客最直观的感受就是大佬们已经收割掉提前批的offer了,而菜鸡只能看着流口水。好在拿到了自己想要的公司,基本可以提前结束掉秋招了。秋招一般10月底才会结束,在没有offer的时候不要慌张,坚持就是胜利。接下来介绍下秋招所需要的准备以及部分面经的分享。

个人情况

学校不好,三本,在学校成绩还可以,没有拿过什么重量级的奖(如acm)。大概是从2020年的2月正式进入准备的状态,在4-5月开始找实习,6月入职,8月初开始投秋招的简历,然后正式开始秋招,再结束。
总体对这个流程的评价就是开始的太晚,我有去了解到很多大佬都是去年就开始正式准备,甚至有大二就去实习,再用实习去敲大厂实习的门,用两段实习去敲秋招的门。

小建议

1、选择大于努力

这里的选择当然是指选择行业。比如从事后端开发,还是前端,还是客户端,还是产品…在牛客网上有大佬进行统计,总的是这样一个比例。

可以看到,后端开发的人数基本占据了所有岗位人数的一半。在日常中后端岗位的人数可能占比更高。但是后端人多了,招后端的岗位却没有增多,那就肯定会有一批人找不到工作…所以如果有的选,或者对后端并没有那么有兴趣(感觉培训班喜欢让人报后端),可以尝试下其他的岗位。

举一个真实的例子:除了我亲身体验没学历不好找工作以外,我一个二本的朋友,他和我一样是后端,但是他一个同学是前端岗位,在秋招过程中,我朋友投递简历,写完笔试,基本石沉大海,但是他的同学,能收到各种大厂的面试机会,即使笔试写的不好。


2、几个相对重要的点

我个人秋招过来感觉的优先级是这样的:学历/学校 > 实习 > 项目 > 奖项

学校不必说,大厂基本都是看学历的,确实有一些学校不好的同学进入大厂,但是都有过人之处,比如大厂实习等…一个好的学校可能不能让你直接拿下offer(有些企业也是可以的),但是绝对可以让你有更高优先级的进入笔试或者面试,即使笔试写的不好也有可能进面试。但是学校不好,特别是在java这种人特别多的…可能笔试写得好也没有进面试的资格。

实习,实习也是企业招生非常关注的一个点,实习可以让你体验真实的企业业务,企业也不想招一个只会理论的新人,肯定喜欢招一些有过开发及相关经验的同学。关于实习的时间,上面也有说过,越早越好,在牛客上有个三本的大佬,5段大厂实习,最后秋招也是拿到BAT的offer。实习选择的公司,只要业务对口,越大越好,有些秋招进不去的大厂,实习的要求相对并没有那么高,先进入实习转正也是一条路。去实习的时间也是越早越好,学校里的课程保证60分万岁就行,大多数公司不会看你在学校的成绩,除非你学校真的非常好。

项目,个人觉得第三重要的点是项目,在面试的过程中,项目会被重点关注,建议是写上2个项目,其中一个重点写,我写了两个项目,面试官喜欢问第一个项目,完成度比较高,可以看出你现在的水平。其次需要根据你写的项目提炼出一些难点或者成就,用一些精妙的语句写到简历上,这样才能让你的简历能过初筛。

奖项,把奖项的优先级放到最后不是说奖项不重要,而是重要的奖项比较少,而且获得的人比较少。如果能获得ACM金奖,那写上去,别的啥也不写你也肯定有offer。在校期间,如果是做后端的话(其他岗位不了解),不建议去考一些乱七八糟的证书和奖项,如果要弄就弄含金量比较高的,比如阿里,华为等举办的一些比赛,不然不如把时间空出来多学一些新的知识。

小总结

首先是要选对自己未来将要走的大方向,考研/考公/就业/继承家产,如果是就业,想好自己要走哪个方向,如果没有明确的目标,可以都去体验一下,或者去问问你们的学长学姐,听听他们的意见。真的可以不要抱着后端不放,现在前后端与别的技术岗相差也不大的。方向选好,剩下的就是学习,可以看着实习的岗位jd学,做几个项目,感觉差不多了就去找实习,实习几个月不满意可以换。实习没转正再去秋招。

关于java后端的一个学习路线

1、寻找资源

我个人觉得寻找资源的能力是间接决定你最后能否上岸的一个重量级因素。

就好比你要去做一件事情,你需要去学习,去了解该如何做这件事情,该怎么完成它。好比我们找工作,你最先需要了解的就是知道面试官喜欢问什么,你就针对性的去学习。

我曾参加过一段时间的培训班培训,培训班教的最多的就是告诉你这个技术有什么用,该怎么去用,但是内部的原理呢?底层呢?它们并没有教给我,我学习了一个学期之后,学到的仅仅是这个东西如何去用,但是面试中问我原理该如何去表达,怎么去讲解,根本无从下口。所以我们要去了解,面试会问什么,说白了也就是找面经看。知道面试官会问什么,我们再重点复习对应的知识点。

其次,我们在学习的过程中,也得观察外部的形势变化…我秋招的这段时间基本就是住在牛客的。看哪些公司发笔试了,面试了,意向书了。然后再根据自己的情况做调整,看看自己是否要去找下家了。因为疫情的原因,大部分,几乎所有的公司都将面试改为了线上面试,所以如果学校不好且没有地点要求的同学建议采用海投的策略,几百家公司,总有上岸的吧!

2、学习路线

我自己的学习/复习路线是以下这样,没有说一定要跟我一起,根据自己做出调整。

java基础:java知识基础 -> java容器(hashMap等) -> java虚拟机(jvm) -> java并发(syn) -> javaIO(NIO)

框架:SpringIOC, AOP, 事务管理, 生命周期等… SpringMVC的调用流程以及每个组件的作用和种类,Mybatis从初始化到调用的源码,SpringBoot的启动流程,重要注解的作用。

面向对象:面向对象的思想,设计模式

数据结构:建议刷剑指offer和leetcode,应对笔试。

数据库:基本学mysql,了解事物,隔离级别,封锁协议,多版本并发控制。熟练使用一些sql语句

如果是非科班的同学还得去学习下计算机网络跟操作系统,至少ISO7层模型,每一层做了什么,有什么协议都得记下来,操作系统的进程线程死锁这些基本的得知道。再复习下linux指令最佳。

再者就是一些中间件,如rabbitmq, redis,都需要知道内部的原理,如何应对出现的各种情况。

最后是分布式的系统设计,项目中最好能用一些分布式的知识,可以用dubbo或者SpringCloud的某些组件。以及git这些。

把上面的都弄清楚,然后项目弄透彻,在面试中过一面是没有什么问题了。二面的话看不同的公司有不同的类型,一面基本都是基础面。

分享大家一个我发现一个非常好的开源工程,这里搜集了计算机各方向的系列教程,直接跟着学就行:https://github.com/harvic/CS-Learning-res

3、小总结

在学习的过程中,多问几个为什么,遇到迷惑的点就去看源码或者查博客,你现在迷惑的问题很有可能是面试官会问的问题。面试官在问的时候也不可能真的按照面经上的问,会做一定的深入,能答上来就是加分项。

分享面经

秋招一共投递了差不多140家的简历,大部分简历直接挂了,最后给到面试的比较少。

1、京东物流

  • 自我介绍

  • 介绍下hashMap

  • 1.7线程不安全会发生什么

  • 1.8线程不安全会发生什么

  • hashTable是什么

  • hashMap可以插入null吗?hashTable呢

  • hashMap是先链表转红黑树还是先扩容

  • 线程安全的hashMap

  • ConcurrentHashMap怎么保证线程安全

  • 介绍下cas

  • 数据库索引底层是什么 介绍下, 和b树的区别 为什么不用hash

  • 索引什么时候会失效

  • 怎么使用%进行模糊查询

  • innodb和myisam的区别

  • 事务的隔离级别

  • 数据库什么时候会产生死锁,举个例子 怎么解决

  • redis一般用作什么

  • redis为什么这么快

  • redis的持久化机制,有什么区别

  • redis分布式锁怎么做,如果超时时间到了数据么有处理完怎么办?不会

  • redis框架用过什么 。没有

  • redis的缓存淘汰策略

  • SpringMvc常用注解…

2、多益网络 1面 37min

  • 自我介绍

  • 项目难点

  • redis存缓存用什么数据结构,别的呢

  • 有进行压力的测试吗 无

  • 做个题 1000以内的质数,每位和为偶数,存到列表 给5-10min

  • 介绍下垃圾回收

  • 拦截器原理

  • tcp3次握手

  • 数据库的事务

  • 线程和进程的区别

  • session和jwtToken的区别

  • 在分布式下如果要用session的话怎么解决。

  • 进程和线程的区别

  • 多线程有用到吗

  • 有关注时事技术吗?

  • 看什么书, 都介绍下

  • 你怎么看待无人驾驶技术。

  • 对互联网加班 996 怎么看

  • 一个新人入行,你推荐看什么书

  • 有什么要问的

3、多益hr面 10min

  • 自我介绍

  • 项目中的职位

  • 如何团队合作

  • 从哪些方面选择公司

  • 投递了哪些公司

  • 为什么想来多益,你对多益有什么了解

  • 愿意转语言吗 Java转c++和python

  • 父母是否愿意让你来

  • 有没有女朋友

  • 对未来规划中女朋友这方面你怎么看

  • 如何看待加班

  • 测评的问题, 人和人是公平的吗

  • 是否支持多生孩子

  • 3天内邮件消息 hr网不好并且感觉hr很忙,每次说一半就打断了

4、蘑菇街 一面 45min

  • 面试官介绍这次要面什么内容,说主要是项目和基础

  • 自我介绍

  • 开始深挖项目

  • 因为项目用了dubbo,问了dubbo和SpringCloud的服务调用方式的区别,什么情况适合什么调用,然后面试官举例你判断

  • 博客点赞功能的实现,从页面到redis到数据库的逻辑…

  • redis数据存储过于庞大怎么办…感觉问了很多,已经记不得了

  • rabbitmq如何实现消息的基本不丢失,发送到队列前,到队列中,取出

    来后 ,怎么保证消息不重复消费…

  • 项目中redis分布式锁怎么用的

  • 代码:写一个分布式锁 ,尽量考虑各种情况,写完描述下逻辑

  • Springaop介绍下,怎么实现的

  • 用哪些动态代理,什么时候会失效

  • 如果没有实现接口,有final方法,生成代理类会怎么样,问我有没有试过调用

  • 判断:bean A 有X 方法, beanB 有Y 和 Z 方法 B依赖于A,X方法中调用B的Y方法,B的Y方法中this调用Z方法, 对三个方法都用了前置和后置打印,问输出结果

  • 数据库查询优化的方式

  • 举个例子问建什么索引,创建时间,上线时间,类型,是否删除。这四个字段,要查询创建时间>= 某个值,上线时间 = 某个值,类型 1 or 2,是否删除为0

  • 问要怎么建立索引,哪些情况建哪些索引,分多种情况讨论。问我确定吗,还有要考虑的吗…

  • 反问

5、蘑菇街 二面 30min

  • 自我介绍

  • 介绍实习做的东西,挖实习,会有根据实际做的扩展一些场景题,问解决思路

  • 介绍项目,挖项目…具体问什么忘了

  • 项目难点等…

  • 反问

6、蘑菇街hr面 25min

  • 自我介绍

  • 为什么要做这个项目

  • 实习的过程是怎么样的

  • 3个优点和2个不足

  • 有没有投过其他的公司 期望薪资

  • 为什么想来蘑菇街

  • 考虑什么地方的工作

  • 家在哪里

  • 反问

7、三七互娱 1面 27min

  • 问集合 ArrayList和LinkedList的区别

  • HashMap和HashSet的区别

  • Synchronized 和 lock的区别

  • tcp和udp的区别

  • 游戏的话是用tcp还是udp

  • 聊简易rpc的项目 问怎么进行调用,一直卡在序列化这个点,我没有印象,就卡住了 很尴尬

  • inner join 和 left join的区别

  • mysql索引

  • mybatis怎么用

  • mysql有没有建过什么特殊的表

8、同花顺 1面 45min

  • 介绍实习相关

  • hashMap平时用来干嘛 ,多个线程执行会怎么样,怎么保证线程安全

  • ConcurrentHashmap

  • hashmap扩容

  • 锁有用过哪些 讲讲乐观锁

  • Springaop,事务,动态代理

  • 如果让你设计一个Spring事务你会怎么设计

  • 为什么Spring能火这么久

  • 大量线程请求数据库要怎么优化

  • 如何设计一个高并发系统

  • 线程池如何杀死一个线程 我说interrupt…好像不对

  • 热修复知道吗??不知道

  • 内存占用95%以上了怎么办 jvisualVM dump下?dump下内存溢出了

  • 怎么办 ??不知道

  • 类加载机制

  • 静态变量存哪里,局部变量,字符串呢

  • 看了深入学习java虚拟机有什么感受

  • 如果项目运行的过程中出现了卡顿或者异常,看了这本书后你觉得是什

    么问题

  • 内存泄漏了解吗,为什么会出现内存泄漏,最根本的原因是什么,怎么

  • 防止内存泄漏

  • 为什么不去考研

  • 介绍下同花顺…

  • 有什么想问的 部门做大金融,手机app

  • 大佬最后还给我介绍了下同花顺(可能看我介绍的支支吾吾),主要讲了对

    比大厂的晋升和技术提升,面试体验较好。

  • 面经有些忘了,没有分顺序,就记得这么多了

9、同花顺二面

  • 自我介绍

  • 什么时候毕业等等

  • 写一个本地传输文件到idea。。不知道要传啥 …像前端点击传?

  • 设计一个五子棋,比如需要什么类等等

  • 写一个工厂模式

  • 一个数组中有超过一半的数,怎么找到这个数

  • 压力最大的事情

  • 反问

10、神策数据 一面 60min

  • 自我介绍

  • 挖项目 注册中心的作用,注册中心失效了两边还能rpc调用吗,注册中心负载均衡

  • 用同一个wifi不同设备访问的ip一样吗

  • SpringBootApplication注解的作用

  • 请求到达Springmvc到controller的流程

  • Spring设计模式,你觉得双重校验锁单例性能怎么样,哪些地方用了代理模式

  • @transaction怎么实现的,什么情况下会回滚,private 和 protected方法可以通过该注解实现事务吗 (只有public的可以,内部有判断)

  • redis数据结构,都能用做什么, redis的hash和hashMap有什么区别

  • redis缓存淘汰

  • redis队列怎么做消息队列,接收端怎么保证消息可靠性

  • 传输层协议有什么,怎么保证tcp传输有序, tcp粘包了解吗

  • hashMap设置10的容量会怎么样

  • hashMap线程不安全实例,安全的map呢 ,如何保证安全的

  • Cas怎保证线程安全

  • reentrantLock 和synchronized 的区别

  • 设置5个线程执行,一起执行完毕后再执行主线程,怎么实现

  • volatile干嘛的, volatile实现可见性和cas实现的lock指令关系,cas有保障可见性吗

  • 线程池怎么使用,线程池参数有什么,设置核心池1,最大池1,任务队

  • 列长度1,问同时有几个线程在执行

  • 线程池的任务队列有什么,任务队列看过源码吗…还没有

  • b+树和b树的区别

  • mysql:for update 和 lock in share mode的区别

  • 提问判断是哪些隔离级别 。。问题忘了

  • 反问部门是什么,具体干嘛的… 体验比较nice

  • 没有顺序的

11、涂鸦智能 一面 60min

  • SpringBoot是干嘛的,SpringBoot启动加载,自动配置

  • SpringBoot启动加载和Springmvc的区别

  • Spring IOC AOP原理 , 循环依赖

  • 线程安全的list,都怎么用,线程安全的hashMap,怎么保证线程安全,put和扩容说下

  • 创建线程的方式, 线程start的原理(不知道),线程的状态

  • 线程池的核心参数,核心池线程会销毁吗,线程在执行过程中异常了会怎么样

  • 类加载机制,jvm内存结构,双亲委派模型,类加载器类型,自定义加载器怎么创建,怎么破坏双亲委派(不知道)

  • 数据库索引和sql优化,数据库事务,隔离级别介绍

  • redis数据类型,分布式锁,缓存穿透,击穿,雪崩怎么应对。布隆过滤器是怎么用的,选择什么情况用

  • dubbo怎么实现调用,注册中心干嘛的,注册中心坏了怎么办,负载均衡策略有什么

12、经纬恒润 一面

  • 问学校

  • 实习做什么

  • 项目介绍

  • 项目难点

  • 为什么要用分布式,你怎么理解的

  • 聊天,最后反问

13、经纬恒润 二面

  • 用idea如何获取目录下的文件名,以及进入子目录,文件是怎么操作的

  • 分类树有了解吗

  • dubbo有什么协议

  • websocket有了解吗,怎么用的

  • mybatis $ 和 #的区别

  • 给定权限表,用户表,菜单表,让这三张表有联系,你会怎么建表

14、浙江大华 一面

  • 自我介绍

  • 介绍下hashMap

  • 介绍下线程池以及参数的作用

  • 拒绝策略有什么

  • mybatis里 $ 和 # 的区别

  • redis数据结构,哪些用的多

  • 项目中最大的困难

  • 反问

15、浙江大华 二面

  • 实习做什么,项目难点,或者最有成就感的事是什么

  • 缓存穿透怎么应对

  • 线程池的种类,使用的时候需要注意什么

  • 一个1-100的数组,如何随机打印

  • 数据库如果有两个字段都标注了单独索引,会优先调用哪个

  • 根据网络说请求到服务端要注意什么(。。其实不太懂要问什么)

  • 是否能来实习

  • 反问

16、顺网科技 一面

  • 面试官说主要了解情况

  • 自我介绍

  • 面向对象三大特性

  • String,StringBuilder,StringBuffer特点和区别

  • equals重写后,hashCode呢

  • 线程池种类

  • jvm内存模型,gc

  • Spring生命周期

  • mysql索引介绍

  • redis分布式锁怎么用

  • 实习做了哪些事

最后

有一些面经还没有完全的整理放出来,后面的公司也不准备继续笔试了,将手里的一些面试完毕就要结束秋招了。

秋招很累,每天都提心吊胆,担心感谢信,但是最后上岸的往往是坚持到最后的人,祝看到文章的各位都能获得自己心仪的offer!