分享下菜鸡的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-10 12:40
比较详细了,唉。今年真难
1 回复 分享
发布于 2020-10-10 09:05
天呐,这得学多久啊😂
1 回复 分享
发布于 2020-10-10 00:02
楼主快抱个大腿吧😍
1 回复 分享
发布于 2020-10-09 23:12
楼主厉害啊,秋招后感觉算法真的很重要,如果算法不好会发现大部分机会死在笔试中
1 回复 分享
发布于 2020-10-09 20:08
mark
点赞 回复 分享
发布于 2022-09-04 17:41 广东
楼主有用Netty和Dubbo写项目吗
点赞 回复 分享
发布于 2022-04-07 10:29
楼主哪所大学啊,杭电?
点赞 回复 分享
发布于 2020-11-02 16:38
楼主能推荐操作系统的书吗?
点赞 回复 分享
发布于 2020-10-18 15:43
m
点赞 回复 分享
发布于 2020-10-10 18:07
我这种菜狗,笔试拉跨,昨天字节面试竟然被一道简单题干掉了😢
点赞 回复 分享
发布于 2020-10-10 16:58
m
点赞 回复 分享
发布于 2020-10-10 16:17
终于大橘已定了😂😂
点赞 回复 分享
发布于 2020-10-10 12:43
非常感谢同学分享的优质面经内容以及对牛客社区的贡献与支持, 特别赠送同学100元京东卡一张~  只要把面经链接放到技术专场下面,就可以领奖品了哟! 技术专场:https://www.nowcoder.com/discuss/445455
点赞 回复 分享
发布于 2020-10-10 11:25
大佬,设计模式都要准备哪些啊
点赞 回复 分享
发布于 2020-10-10 09:46
m
点赞 回复 分享
发布于 2020-10-10 07:35
m
点赞 回复 分享
发布于 2020-10-10 01:47
收藏点赞一条龙😏
点赞 回复 分享
发布于 2020-10-09 23:41

相关推荐

04-02 17:22
新疆大学 Java
1. 你在这个物流平台项目中扮演的角色是什么?主要负责后端的哪一部分?2. 能简单介绍一下你负责的核心模块(货单大厅)的业务流程吗?3. 货单大厅里高频使用的多条件组合查询,你后端的存储用的是什么?4. 这个查询对应的数据量有多大?5. 除了 MySQL,你有考虑过用别的存储引擎做这种多条件检索吗?有没有必要?如果要换,应该用什么来做?6. 简历上写了 SQL 优化,整个问题是怎么发现,然后怎么解决的?7. 什么是回表?8. 你用 EXPLAIN 发现查询慢,具体是因为没有用索引,还是索引没用对?9. 联合索引的“最左匹配原则”知道吗?具体是什么意思?10. “迷你豆包”这个项目是干什么用的?主要是出于什么考虑要做这个项目?11. 能简单介绍一下这个项目中你觉得比较感兴趣的技术点吗?12. 进程和线程的区别是什么?13. 进程的上下文切换和线程的上下文切换是怎么做的?包含了哪些步骤?14. 什么是虚拟内存?使用虚拟内存有什么好处?15. 缺页中断(Page Fault)是什么意思?16. 操作系统里面有哪些锁?(或 Java 里面有哪些锁?)17. 如果 synchronized 和 ReentrantLock(可重入锁)两个选的话,优先选哪个?为什么?18. 正常情况下(单体服务中),默认应该优先选哪个锁?19. 知道 BIO、NIO、AIO 吗?BIO 的“同步阻塞”是什么意思?20. 简单介绍一下 TCP 的三次握手和四次挥手过程。21. 为什么 TCP 建立连接需要三次握手?22. TIME_WAIT 状态出现在四次挥手的什么时候?23. TIME_WAIT 状态会持续多长时间?24. HTTP 状态码 404(找不到页面)代表什么?这是服务端的问题还是客户端的问题?25. HTTP 状态码 504 一般出现在什么情况下?26. 在浏览器里面输入一个网址,到页面最终展示出来,这中间经历了怎样的过程?27. 什么是 TCP 的粘包和拆包?28. 怎么解决粘包和拆包的问题?29. MySQL InnoDB 引擎的索引使用的是什么树结构?B+树和B树的区别是什么?30. 为什么 MySQL 采用 B+树,而不用红黑树?31. 听说过幻读吗?解释一下什么是幻读。32. 怎么解决幻读问题?33. 幻读在什么隔离级别下可以解决?34. 一般怎么解决 Redis 缓存与 MySQL 数据库的缓存一致性问题?35. JVM 的内存模型(运行时数据区)包括哪些部分?36. 字符串(String)和数字在 JVM 中分别存放在哪里?37. 垃圾回收(GC)算法有哪些?38. CMS 和 G1 垃圾回收器的区别是什么?它们分别应对什么场景?39. 为什么到了 JDK 1.8 之后开始主流推荐使用 G1?CMS 有什么缺点?40. 相比之下,CMS 和 G1 谁的 GC 停顿时间会更长?为什么?41. HashMap 和 ConcurrentHashMap 的区别是什么?42. ConcurrentHashMap 是怎么做到线程安全的?43. 简单介绍一下 Spring 的控制反转(IOC)和面向切面编程(AOP)。44. AOP 的核心底层是使用什么机制实现的?45. 我们平时写个注解就能生效,注解的基本原理是什么?它为什么能把逻辑织入到代码运行路径中?46. 你平时是怎么使用 AI 辅助开发的?你的项目代码是直接用 AI 写的吗?47. RAG(检索增强生成)的一个完整运行流程是怎样的?48. 为什么要做 RAG 这个东西?它解决了什么问题?49. Token 和上下文窗口(Context Window)的概念分别是什么意思?50. 为什么要控制 Token 的数量?51. 大模型的“幻觉”是什么意思?是怎么产生的?
面试问题记录
点赞 评论 收藏
分享
评论
126
674
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务