分享下菜鸡的Java秋招总结

前言

本人21届双非本科,在大二的时候开始学习Java,来到牛客也有一年多的时间了,首先很感谢大佬们的知识分享,帮助我提升了很多,也要感谢我的恋爱6年之久的女朋友哈(她也是Java🤣),一同经历了一年多的努力,互相理解互相鼓励,秋招也都算一起拿到了满意的offer(有赞、网易、京东、美团、奇安信、蘑菇街、58等),虽然没有像大佬们一样拿了很多大厂,但对于我们双非本已经心满意足了😅但是随着9月初自己结束秋招之后,就一直没能好好学习,每天打球,玩游戏😤,所以打算从今天开始,就要回归以往的学习状态之中啦!以下分享一下个人的一些总结!大佬勿喷哦🤣

关于校招

大家都知道每年都有春招和秋招两次招聘 ,春招一般在2月中旬就陆续开始了,面向的是 本届应届生招聘 和 次届的暑期实习生招聘,对于应届生招聘,可能春招的招聘力度与hc是没有秋招多的,据我了解大多数应该是大佬们秋招拒了很多offer后的补录名额,可能竞争会相比与秋招更加激烈(楼主盲猜,欢迎指正)?但是春招对于次届毕业生而言,个人觉得是进入大厂的好机会,各大公司会招聘暑期实习生,面试难度会比秋招小一些,转正的概率还是很大的,也就是说人家还在忙于秋招,你已经转正结束秋招了(身边有几个朋友就是转正在大厂了)!当然有很多大佬会选择鱼与熊掌兼得🤣边忙于实习转正答辩边秋招面试。
关于春招楼主之前也写过一篇面经分享:https://www.nowcoder.com/discuss/420580?source_id=profile_create&channel=1009
秋招的话,是应届生最好的招聘机会,提前批有的公司7月份就已经开始了,8月中旬可能陆陆续续开始正式批,个人觉得如果准备充分,就大胆的投提前批吧,一般提前批都是免笔试直接面试的,况且SP的几率挺大的应该,但是竞争会激烈一些,都是大神,还有要注意有的公司声称提前批与正式批不冲突,但其实往往都会有你的面试表现的,提前批如果表现不好的话,可能就凉凉了🤣,我今年就没敢投,也有部分原因是在实习一天很忙,也没能抽出时间复习。

个人的春招秋招面试感受:面试可以很快的提升自己,每一次面试都要找一下自己的不足,最好手机录音,之后review一下自己答的不好的地方,避免下次面试答不出来,我第一次面试是在大三找寒假日常实习,记得那时面试很紧张,说话有些语无伦次,没有任何面试技巧,后来随着面试场次的增多,自己也变得能“白话”(东北话,就是能说会道的意思吧🤣)了,秋招的时候每次都能和面试官聊的比较好!除了技术面之外还有就是有些公司hr也有决定权,所以提前准备一些hr常问的,不至于现场答不好,被hr PASS掉。下面举例一些我认为比较难答的问题:
  1. 说三个优点?
  2. 说三个缺点?
  3. 你认为你是怎样的人?
  4. 与其他同学相比,你的优势?
  5. 你在实习中遇到的最大困难或者挑战?(技术终面也常问)
  6. 在校园时最困难的时候?
  7. 遇到过最大的挫折?
  8. 看过哪些非技术书,能讲讲这本书大概讲了什么吗?等等问题吧

关于准备

下面分享一下楼主秋招前的准备吧(仅供参考哈)!
首先Java开发,我个人主要是先BFS,再DFS,针对不同面试官有不同的收获吧,有的就比较考察知识面的广度,有的就比较喜欢深挖一个点,挖到你不会为止🤐!总之多多准备是没有坏处的哈。
个人主要分为以下几个模块准备的:

项目

有一个好的项目可以对我们面试有很大的帮助,也会提起面试官的兴趣,因为很多问题是随着项目展开问的。并且我觉得最好是有落地项目的支撑,有一个实习经历是很好的,当然如果是大厂实习就更棒了!没有当然也没有关系,现在有很多开源项目,或者教学视频,可以跟着动手做一做,或者自己添加一些可以唠嗑的亮点🤣切记要多问自己为什么,为什么要用这个技术?解决了什么问题?以及用到的技术与其他技术点的对比等等。且要考虑健壮性与特殊情况吧,很多面试官会当场对你的项目给你抛出问题,问你解决方案等。我们也可以适当留出空隙等他问(但是一定要会解决哦🤣)。当然场景题我们能提前准备,且解决方案越多越好被,择优选择,不单单是我们自己的项目,也可以多参考别人的问题(面经啦,同事的难点啦什么的),解决问题多了,自然大部分场景题都不至于没有思路回答不上来了。关于项目就不再多说啦,每个人有每个人的理解,但是网上资源很多的也,如果没有好项目可以自己寻找感兴趣的做一个两个哈。

算法(ACM大神直接划过吧🤣

由于本人算法比较薄弱,算法实在给不出什么建议,就说说我自己准备了哪些吧,前期是看了牛客推出的 左神大佬的算法视频 讲的通俗易懂(有需要我可以帮忙翻一翻资料😅),之后就是着手每天强制自己刷题做总结,感觉笨笨的我,随着日积月累,还是有所成长的🤣,面试中算法题大部分还是可以秒出来的,本人主要刷了 剑指offer 3-4遍 + leetcode 前450道 2-3遍左右的样子,主要是太笨了😅刷了忘,忘了刷,没办法,那我就多做几遍好了
如果时间不够,我建议还分类去准备一些常见的题目比较好,8大排序算法一定是要会的,然后就是可以针对链表、树分别找出常考的20-30道题目去做去吸收,还有一些DP、贪心、排列组合经典题目,图的话可能code的不多,但是图的算法还是要掌握的,必要时讲出来,拓扑、迪杰斯特拉、普利姆和克鲁斯卡尔啥的。

操作系统、计算机网络、数据结构

个人觉得这三类基础知识无论是前端、后端任何语言还是测开应该都会考的吧

数据结构

数据结构,无非就是数组、链表、栈、队列、树、图这几类,最重要的应该是对他们的使用场景和区别要有所了解。比如树的话,搜索树、平衡搜索树、红黑树、前缀树、B、B+这些。
可以多看面经和博客或者抽时间读一本书比较好,关于数据结构,我有读过《大话数据结构》个人觉得还不错,适合入门。

计算机网络

关于计算机网络,《计算机网络自顶向下》还是比较不错的,还有就是可以针对性看一看面经与牛友分享的文章,其实常问的就是那几个问题而已,例如:
  1. 说一说七层模型,各层都是干什么的?有哪些协议?
  2. TCP和UDP区别,各自的组成部分,基于TCP和UDP的应用层协议?各自应用场景?
  3. TCP三次握手、四次挥手、为什么三次握手?四次挥手?,三次挥手行不行,连接后客户端出现故障怎么办?
  4. TCP如何保证可靠,拥塞控制过程?
  5. TCP粘包、拆包出现原因场景及如何解决?
  6. CLOSE-WAIT 和 TIME-WAIT ?
  7. TIME-WAIT连接过多什么原因?解决?
  8. 浏览器输入URL并回车的过程发生了什么?DNS查询过程?DNS什么时候用TCP,什么时候用UDP?CDN知道吗?
  9. HTTP1.0、1.1、2.0区别?
  10. HTTP报文格式?常用字段?强缓存和协商缓存?
  11. HTTP和HTTPS的区别?HTTPS的建立过程?对称加密和非u对称加密?
  12. HTTP请求方式?GET和POST区别?
  13. 常见状态码?301和302区别?502和504区别?
  14. cookie和session区别?
  15. 跨域?怎样解决跨域?
  16. SYN泛洪攻击?XSS脚本攻击?csrf跨站请求伪造?解决方式?
  17. ARP欺骗?DNS劫持?傻瓜窗口?等等。。。

操作系统

个人觉得OS这块还是比较好准备的,考的主要就是进程线程、虚拟内存这两大块比较多。Linux考的更多的是常用命令,以及给你个问题怎么排查什么的。
先分享两篇大佬写的文章:
面试题举例:
  1. 进程由什么组成?进程的几种状态?低地址到高地址都存放哪些东西?
  2. 进程与线程的区别?
  3. 进程通信方式有哪些,对比优缺点?
  4. 用户态和内核态?
  5. 上下文是什么?进程线程上下文切换?
  6. 进程调度算法?产生死锁必要条件?解决方式?
  7. 分页和分段,页面置换算法?
  8. swap分区?fork函数?僵尸进程?孤儿进程?
  9. CPU缓存?MESI了解吗?等等
  10. IO模型?多路复用select、poll、epoll?

Java基础

Java基础个人觉得主要看一些源码吧,例如Hashmap(可以1.7和1.8都看一下)、List的实现、ThreadLocal、Iterator、String、Integer、Java8的新特性、NIO相关的等等,且像集合类一般都会继续问线程安全的实现类也需要看,例如CurconrentHashMap、CopyOnWriteArrayList等等。其他基础常问问题网上都有总结,很好找的,且比较全面。我就不多说了哈!

Java多线程

关于多线程,《Java并发编程的艺术》这本书比较不错,话不多说直接举例一些面试题吧:
  1. Java中线程通信方式
  2. Java中乐观锁?CAS问题?什么时候用乐观锁?
  3. volatile关键字?如何防止重排序?底层指令?
  4. Sychronized 与 ReentrentLock 对比?
  5. Sychronized底层怎么实现?MarkWord是什么?偏向锁、轻量级锁、重量级锁?自旋参数怎么设置?
  6. AQS原理?如何实现的公平锁,非公平锁?
  7. 读写锁?锁降级?变量的高16位低16位分别保存什么信息?
  8. CountDownLatch、CyclicBarrier、Semaphore?
  9. 线程池?7大参数?线程池工作过程?自带的线程池为什么不建议用?核心数量应该怎么设置?
  10. 手写个生产者消费者、阻塞队列、多线程轮流打印ABC?等等吧

JVM

关于JVM部门,建议阅读《深入理解JVM》这本书,首先主要掌握就是JVM的内存划分,各部分存储什么,干什么的,堆的划分、对象分配原则(对象在老年代还是新生代,怎么移动什么的)、垃圾回收算法、如何标记对象(引用计数法的缺点?GCroots法都哪些对象可以当作根)、对象由哪几部分组成、垃圾回收器(就是G1、CMS可以主要看看,再者可以看下ZGC收集器)、双亲委派原则及破坏、类的加载过程(可以从.java生成.class过程说起,JIT编译器)等等。
大多数比较常见的题目,再者就是JVM调优相关,这个怎么说,就是按自己理解和项目的不同来说吧。之前有看过这篇博客,介绍的还比较全:https://blog.csdn.net/wisgood/article/details/52634852

设计模式

这个怎么说,我个人就是看书和看这个https://refactoringguru.cn/design-patterns来学习,看完后用自己的话总结,写个demo理解。另外就是发现各大框架有哪些地方用到过,各类模式的好处(本菜鸡在项目中还没用过🤣)。

框架

框架部分我也就是主要学了Spring、SpringMVC、Mybatis、SpringBoot、Netty和Dubbo吧,SpringCloud只是了解了解。
传智播客、黑马、慕课网、B站都能找到相应的视频,面试的话可能也是主要看一看各个框架的原理和理解吧,例如Spring的IOC,AOP?循环依赖怎么解决的?bean的生命周期?SpringBoot的启动流程?RPC框架都包含哪几部分?
我在面试中框架问的还是不多的,问也都是一些特性原理,常见的一些问题,花点时间准备下应该问题不大。

数据库

数据库方面我只学习了MySQL,也是比较常问的,书的话我个人觉得《高性能MySQL》《深入了解InnoDB引擎》还不错,举例:
  1. 引擎的区别?
  2. 索引(失效?联合索引?索引建立原则?)
  3. 锁(行锁?表锁?间隙锁?)
  4. 事务(隔离级别,RR怎么避免不可重复读(MVCC)?又怎么避免幻读(MVCC+间隙锁)?)
  5. B+树索引和哈希索引、聚集索引和非聚集索引?
  6. 回表查询和索引覆盖?
  7. 一条SQL执行过程是怎样的?
  8. 数据过大怎么优化分页?
  9. 各个日志,都干什么的?
  10. SQL过慢怎么排查?Explain的关键字段?
  11. MySQL中LUR怎么改造的?为啥这么改?等等。
  12. 主从复制?分库分表依据?

Redis

现在缓存可能也是很常问的了,《Redis的设计与实现》这本书还是很适合读的,通俗易懂,最好深入学习一下例如说下底层命令什么的,常见面试题举例:
  1. Redis为什么快?
  2. Redis持久化方式?
  3. 数据类型?底层数据结构?
  4. 过期策略和内存淘汰策略?
  5. Redis 应用场景?
  6. pipeline批量处理的优点?
  7. 主从复制原理?cluster了解吗?怎么确定一个key落在哪个节点?一致性哈希了解吗?有什么缺点?怎么解决?
  8. 缓存雪崩、缓存穿透
  9. 如何保证缓存与数据库数据一致性?等等。

中间件

关于中间件,我了解的可能首先就是消息队列,我最常使用的就是RabbitMq,但是也要对其他的产品特性与应用场景有所了解,例如Kafka、RocketMq的对比。消息队列常问的问题例如:
  1. 消息队列应用场景,作用?
  2. 如何保证消息可靠?
  3. 如何保证消费者幂等?
  4. 如何保证消息顺序性?
  5. MQ积压了很多怎么办?等 。
然后我就是学习来ZK、搜索引擎ES和Solr、ngnix与LVS
ZK可以掌握它的应用场景以及ZAB原子广播协议和崩溃协调,
搜索的话可以学习下倒排索引,以及二者的区别和ES写入原理之类的。
负载均衡可以对比ngnix和LVS区别,以及LVS的三种模式,ngnix的话我们经常使用ngnix+keepalive一起使用,避免ngnix的单点故障,当然还要知道一些负载均衡算法。

分布式

分布式相关的知识还是要掌握的,毕竟我们以后的系统都不可能是单点部署的,这就可以看下CAP理论?BASE理论?分布式事务?限流的方案?分布式id生成策略?分布式锁?或者常用的Hystrix组件等。楼主也是简单的学习了一下,面试时还是考的居多的。

大数据类型

这类题可以多看几个,思路大多大同小异,还是比较好准备的,例如:
  1. 海量数据整数,内存受限找中位数?
  2. 如何在100亿URL中快速判断某URL是否存在?
  3. 海量数据找次数TOP100?等等,

智力题

关于智力题,可能就要多看一些了,这题没看过的话一般现场很难想出来,这里推荐一下这位牛客大佬整理的智力题:https://www.nowcoder.com/discuss/526897

分享下大佬们总结的比较好的资料

后期再补哈!

最后

最后希望大家都能拿到满意的offer,祝大家工作顺利,感谢各位牛友哈!感谢牛客平台!
#面经##Java##校招##学习路径#
全部评论
楼主牛逼,一胎四个儿子
4 回复
分享
发布于 2020-10-09 21:23
这些问题楼主都知道的话那楼主的学习能力真的是超级强了,可能很多工作的或者研究生都答不上来
2 回复
分享
发布于 2020-10-10 09:17
阅文集团
校招火热招聘中
官网直投
楼主厉害啊,秋招后感觉算法真的很重要,如果算法不好会发现大部分机会死在笔试中
1 回复
分享
发布于 2020-10-09 20:08
楼主快抱个大腿吧😍
1 回复
分享
发布于 2020-10-09 23:12
天呐,这得学多久啊😂
1 回复
分享
发布于 2020-10-10 00:02
比较详细了,唉。今年真难
1 回复
分享
发布于 2020-10-10 09:05
强啊,有赞这么香
1 回复
分享
发布于 2020-10-10 12:40
我想问问大佬,java实习生招聘和正式入职招聘的要求有很大差别吗?
点赞 回复
分享
发布于 2020-10-09 20:31
楼主,强啊,同在一家公司实习过,哈哈哈
点赞 回复
分享
发布于 2020-10-09 22:24
累累的
点赞 回复
分享
发布于 2020-10-09 23:25
收藏点赞一条龙😏
点赞 回复
分享
发布于 2020-10-09 23:41
m
点赞 回复
分享
发布于 2020-10-10 01:47
m
点赞 回复
分享
发布于 2020-10-10 07:35
大佬,设计模式都要准备哪些啊
点赞 回复
分享
发布于 2020-10-10 09:46
非常感谢同学分享的优质面经内容以及对牛客社区的贡献与支持, 特别赠送同学100元京东卡一张~  只要把面经链接放到技术专场下面,就可以领奖品了哟! 技术专场:https://www.nowcoder.com/discuss/445455
点赞 回复
分享
发布于 2020-10-10 11:25
终于大橘已定了😂😂
点赞 回复
分享
发布于 2020-10-10 12:43
我这种菜狗,笔试拉跨,昨天字节面试竟然被一道简单题干掉了😢
点赞 回复
分享
发布于 2020-10-10 16:58
m
点赞 回复
分享
发布于 2020-10-10 18:07
楼主能推荐操作系统的书吗?
点赞 回复
分享
发布于 2020-10-18 15:43

相关推荐

先介绍一下我的情况,双非本科师范+非计算机专业(毕业即失业的那种),且0实习。目前在北京某大厂做开发。此贴主要讨论我是如何从双非🐭跨到大厂程序员的。2019-2020,大一阶段没有目标,浑浑噩噩,每天最忙的就是学生会。直到大一下半学期学习了c语言,发现是感兴趣的方向,于是正式开启自己的程序之路。(由于最忙的还是学生会,所以程序自学基本都在寒暑假。)2020-2021,大一暑假用c语言做小游戏,然后大二上半学期寒假才开始自学引擎,一周的时间做出人生第一个小游戏,后来参加比赛获国家级三等奖。2021-2022,大二下半学期依然是忙于学生会,平时在学校没有积累。直到暑假开始规划制作独立游戏,并于22年初上架steam,b站获得百万播放。2022-2023,进入大三下半学期,学校安排强制去中学实习(这也就是为啥没有软件公司实习的原因)。但是工作又不能没有实习和项目经历,于是我决定在网上开店铺接外包项目,直到毕业共接了60个外包,店铺收获了30个好评没有差评。大四上半学期开始狂学编程,刷题,然后又参加比赛收获了一个国家级三等奖,没有参加秋招。直到4月份开始春招,5月底上岸北京大厂。一路走来感觉挺魔幻的,个人感觉大厂更看重个人能力,并不卡学历。最重要的是大学有目标有计划,项目经历、实习经历、获奖经历应放在首位。
点赞 评论 收藏
转发
投递海量数据等公司8个岗位
点赞 评论 收藏
转发
125 664 评论
分享
牛客网
牛客企业服务