首页 > 【干货】如何做好Java服务端秋招面试准备?看这篇文章就够了
头像
猿辅导-校园招聘
编辑于 2020-07-20 11:30
+ 关注

【干货】如何做好Java服务端秋招面试准备?看这篇文章就够了

2021年的秋季校园招聘已经拉开帷幕,想必各位同学已经摩拳擦掌,准备在秋招中大展拳脚,成为offer收割机。而这里有一篇在多个大厂都工作过的资深Java程序员,同时也是猿辅导的面试官写的一篇如何准备做好2021年的秋季Java服务端校园招聘,在这里分享给大家,希望对大家有所帮助。

如果文章对大家有帮助可以点个赞哟

如何写好简历

简历其实就是一个人的门面,大家都是互不相识,那面试官如何能快速的知道你的大概信息,那就会从简历开始。下面给大家说一下写简历应该注意那些事:

  • 简洁,明了:很多人喜欢把自己的简历搞得很花哨,各种颜色图案齐刷刷的整上,这个真的是没有必要,因为这个不是一个绘画比赛,作为一个程序员,尤其是写后端代码的程序员,需要保证简单,让面试官能很快速的就能抓到重点信息,而不是让面试官沉浸在你的花哨之中。
  • 使用PDF : 有很多同学都喜欢使用word文档去编写简历,word这个东西不同版本他的兼容性实在是太差了,有可能一打开你的简历排版都会错位,就会导致简历特别难看,这里希望大家投递简历的时候都是使用PDF!!!
  • 突出重点:一般来说面试官会根据你的简历作出很多针对性的提问,而一般提问的顺序都是从前到后,从上到下去的,但是如果你把你不是太熟悉的,或者你不是很精通的写在前面,面试官提问的时候答得不是很好,哪怕你后面答得非常棒,可能也会降低很多分数,相反的如果你把你特别熟悉的都写在前面,如果前面的问题答得非常不错,哪怕后面的问题有一些瑕疵,对面试官对你的打分也会提升很多的。
  • 注意用词:我看过很多人写简历都是写精通Java多线程,精通Spring等等,这种基本都是一面就死,一般来说如果你写精通Spring,那么我认为你基本上可以自己独立的开发一个Spring这种框架,如果你写熟悉,我就认为你看过Spring很多源码,对其中的部分原理比较熟悉,如果你写了解,我就会认为你会Spring的各种基本用法。所以你的每项技能到底是精通,熟悉,还是了解 这个用词是特别重要的,面试官会根据你所写的来验证你是否是有这个实力。再举一个例子,每个人都会有自己的项目经验,当你写项目的时候,自己的角色用词也是很重要的,到底是项目负责人,还是项目参与者,面试官会根据你不同的角色来问你所进行的相关工作,如果你夸大其词,这种是很容易被发现的。
  • 寻找你的亮点:大家都是校招生,一般来说大家所做的项目基本没有太多的亮点可以说,有很多同学就会问我这些项目感觉没什么太多可以说的,我怎么才能找到一些亮点给简历加分呢?
    • 首先我觉得是github的项目,大家都是程序员,其实我很难发现你的编码水平如何,但是如果你有自己的github,甚至你参与了一些开源的github,那么这些都是加分项,从github中你就可以体现出来你是一个会用git的人,对于融入公司那么相对来说肯定就会快很多,并且从github中也可以发现你的一些编码水平。
    • 其次你的一些实习经历,项目经历,获奖经历等等都是很重要的,也可以让面试官从非技术角度对你有跟多的认识。

如果你做好上面五点,相信你应该可以写出一个不错的简历,让面试官眼前一亮。

做好笔试

如果你简历通过了之后,如果你特别优秀可能是不会有笔试这个环节的,但是大部分的同学笔试这个环节都是需要经历的,笔试一般分为两个部分:

  • 选择题:选择题的话其实就是基础题,现在越来越多的公司都会选择使用牛客网的在线答题系统,而很多题其实本质上也是从牛客网的系统给选出来的,你就使劲刷牛客网的题库https://www.nowcoder.com/intelligentTest 计算机基础和编程语言的Java板块就好了,当然你在刷的同时不只是简单的背答案,必须只要其意,很多题可能不会和系统一样,但是他所考的思想是一样的,如果你不知道解法,只是简单的背答案,那么也是徒劳的。
  • 算法题:一般来说笔试的算***比面试的算法题会稍微难一点,提升算法的话可以从看书和刷题两个方向进入,
    • 看书的话有下面基本书可以推荐给大家,当然这些书其实不局限于校招面试,都是受益于终身:
      • 《算法(第4版)》这个也叫黄书是比较经典的书籍之一,如果基础比较薄弱的(不清楚很多数据结构)那么可以从这本书入手。
      • 《剑指offer》 这本书也是特别经典,其中的题目也是很经典的,会出现在很多面试笔试当中。
      • 《程序员面试经典》 这本书是原谷歌面试官的经验之作,是很多硅谷公司面试的时候面试题的出处。
      • 《程序员面试南指南》 牛客网的同学应该比较熟悉左程云老师,这是左程云老师几年所著的一本书,他和前面的几本书可能有些不同,里面的题目相对来说比较新颖,当然也提供了更多种类和难度的题目。
    • 对于刷题这个方向的话,同样的也有很多路径供大家参考:
      • 在牛客网有很多往年的一些真题, 同时也提供了很多的模拟考试训练,很多同学平时能做出来题但是就是很慢,所以可以在牛客网上体验一些真实的环境。
      • leetcode,lintcode 都是提供了很多的题,很多公司公司面试或者笔试的时候都是从leetcode上去进行一些选择然后做一些改编,所以大家可以多刷一点这些题。

笔试的其他方面的话,还有一些建议:

  • 保证一个良好的网络环境。
  • 希望大家不要作弊,不要通过上网搜索答案,一旦被发现了笔试会直接不通过的,甚至会影响其他公司的笔试。
  • 笔试的时间这个的确要把握好,大家可以多做一点模拟训练,尽量让自己能适应笔试的节奏。
  • 很多公司有多次笔试,比如猿辅导就分为三次笔试,但是要注意提前问好,如果第一次笔试或者面试挂了,后面还可以再继续吗,如果可以继续再战的话,那么简历投递得越早越好,尽量每一次都享受到,但是如果后面不可以再继续了,如果你开始没有准备好,那么你可以把投递简历的时间稍微靠后一点,不需要急冲冲的把简历给投递了。

准备面试

当你笔试通过的时候,接下来就会到面试环节,面试环节也是最终决定你是否能拿到offer的最为核心的环节。面试不会像笔试那么固定,面试官会根据你的简历以及你自己的一些经验来进行问答出题,在面试中考验的就是你的知识面的广度和深度,以及你的一些交流能力 。

知识储备

如果你想面试Java程序员的话,我这边给你几个建议按照下面一些方向去复习:计算机基础,Java核心基础,常用框架(中间件,数据库),设计服务。

计算机基础

计算机基础是面试校招生最常见的面试题,因为校招的同学项目经验不多,那么就需要这些同学把基础给打好。在计算机基础中一般主要考操作系统和计算机网络。

  • 在计算机网络中,一般常见的面试题如下,基本都是围绕TCP,HTTP展开:
    • OSI与TCP/IP各层的结构与功能,都有哪些协议? 协议的面试可谓是最常见的,但是很多同学也是很难答全。
    • TCP三次握手,四次挥手
    • TCP/UDP的区别
    • TCP如何进行可靠传输的保证
    • HTTP相关的一些知识,HTTP 1.0,1.1,2.0的区别
    • HTTPS和HTTP区别
  • 操作系统也有一些知识点是常问的:
    • 线程和进程的区别
    • 进程间的通信方式
    • 内存管理有哪几种方式?
    • 常见的页置换算法有哪些?
    • 什么是虚拟内存?

上面是一些常见的面试题大家可以针对性的复习训练一下,如果想系统性的提高,可以看看下面的一些书:

  • 《深入理解计算机系统》 这个也是很多学校的教科书,其实只要在学校认真听讲操作系统应该不成问题。
  • 《操作系统导论》 这个是去年翻译的一本书,这本书的内容也比较新颖,也是非常的不错。
  • 《计算机网络第七版》 这个也是很多学校的教科书,讲网络非常全面,其中很多都是面试的考点,希望大家可以认真看
  • 《图解HTTP》 这本书比较薄,但是你学习HTTP看这本书就够了。

Java核心基础

作为Java程序员,Java的基础知识属于最重要的基本功,一般Java核心基础又可以分为,Java基础知识,Java多线程,Java I/O,JVM。

  • Java基础知识有下面一些考点:
    • 面向对象语言和面向过程语言的区别
    • 值传递和引用传递的区别
    • == 和equals的区别
    • 泛型是什么?
    • Java基本数据类型有几种,每一种的区别是什么?
    • 深拷贝和浅拷贝的区别?clone()方法
    • Object中有多少个方法?
    • StringBuffer和StringBuilder区别?
    • final,finally的区别
    • Java的异常体系?受检查和非受检查异常区别?
    • 常见的异常有哪些?
    • 常见的集合有哪些?是否使用过JUC里面的一些集合?比如ConcurrentLinkedList,CopyOnWriteList等等。
    • HashMap的原理 (插入,查找,底层数据结构,如何扩容)?TreeMap和HashMap的区别?
    • HashMap死锁了解吗?
  • Java多线程有下面的一些考点:
    • 线程池的原理是什么?线程池的最佳实践?
    • AQS的原理是什么?基于AQS的实现有哪些?
    • Atomic相关原子类有哪些?原理是什么?
    • synchronized和Lock的区别?他们的原理分别是什么?
    • CAS是什么?
    • ThreadLocal是什么?它的内存泄漏你了解吗?
    • Java的线程状态有哪些?
    • wait,notify,notifyall有什么用?
    • java线程interrupt会中断线程吗?如果要中断线程应该怎么做?
  • Java I/O有下面一些考点:
    • NIO是什么,NIO和BIO有什么区别?
    • 了解过filechannel吗? filechannel 和 mmap有什么区别?
    • 写文件的时候内存拷贝的详细过程是什么?
    • DirectBuffer和HeapBuffer有什么区别?
  • JVM 有下面的一些考点:
    • HotSpot 虚拟机内存数据区域有哪些?
    • JVM垃圾收集算法常见的有哪些?
    • JVM垃圾回收收集器常见的有哪些?
    • 类加载过程是什么?
    • 类加载器的双亲委派模型了解吗?
    • 如何判断一个对象需要被回收?

Java核心基础知识设计的面比较广,而且都比较深,同样的除了这些常见的面试题之外如果想系统的学习可以通过下面的一些途径:

  • 阅读JDK中常见的一些工具的源码(hashMap,juc包下面的并发工具类),这些东西在书里面你很难去获得,所以你只能自己一点点的通过源码去啃,当然也可以阅读网上一些源码分析文章。

  • 《Java并发编程实战》,这是一本非常经典的Java并发书籍,如果想学习多线程我建议你可以看看这本书。

  • 《深入理解Java虚拟机(第3版)》,今年周志明大神新出了深入理解Java虚拟机第3版,如果你想入门JVM这本书肯定是你不二地选择。

    常用框架,中间件

    我们考察一位同学的时候通常不仅要基础不错,同时我们也需要这位同学有过一些开发的经验,并不只是停留在理论基础上,所以通常会考察一些常用的框架,或者中间件等等:

  • spring,spring-boot,Java程序员一般来说都离不开Spring这个框架,常见的一些问题有:

    • IoC 和 AOP 是什么?
    • Spring 中的 bean 的作用域有哪些?
    • Spring 中的 bean 生命周期?
    • Spring 事务中的隔离级别有哪几种?
    • Spring 事务中哪几种事务传播行为?
    • SpringBoot相比于Spring区别有哪些?
    • Spring Boot 的自动配置是如何实现的?
    • Spring的动态代理有哪些?
  • mybatis,国内常见的开发套路就是SSM,mybatis就是M,如果你在简历上写上那么也是会必不可少的:

    • #{}${}的区别是什么?
    • Xml 映射文件中,常见的标签有哪些?
    • Mybatis 是如何进行分页的?
    • Mybatis 的插件运行原理,写一个插件?
    • xml文件如何和dao接口进行一一对应?(动态代理)
  • mysql,我们一般常见的数据库有orcal,sqlserver,mysql等,但是在Java项目中目前还是mysql使用得更多,所以一般数据库的问题都会集中在Mysql上:

    • 数据库的事务的四个特性是什么?
    • 数据库事务的隔离级别有哪些?Mysql的innodb默认隔离级别是什么?
    • mysql的架构是怎么样的?
    • innodb的索引是怎么实现的?
    • 数据库死锁是什么?怎么去避免?
    • innodb是如何加锁的?
    • 常见的Mysql性能优化有哪些?
  • redis, 一般来说Mysql作为关系型数据库的性能在某些场景下并没有那么优秀,所以我们会使用redis非关系数据库(NoSql)进行一些优化,所以redis也是我们经常的一个考点:

    • redis 五种基本数据结构有哪些?
    • redis是如何实现过期机制的?
    • redis是如何实现内存淘汰机制的?
    • 如何保证缓存与数据库双写时的数据一致性?
    • redis 事务和关系型事务有什么区别?
    • 如何用redis去实现一个较为完善的分布式锁?
    • redis的持久化机制是什么?
    • 缓存穿透,缓存雪崩是什么?
  • rpc相关,由于rpc的框架的种类太多了,如果你使用框架面试官了解的话有可能面试官会进行考察,一般来说会考察一些netty相关,设计相关的知识:

    • rpc是什么?
    • 简单介绍下netty?
    • 如果要你设计一个rpc框架,你会如何设计?
    • 负载均衡算法有哪些?
    • rpc相比于http调用有哪些优点?
  • mq相关,现在在真正的开发中使用消息队列的常见越来越多了,一般常用的mq有kafka,rocketmq,本来他们俩的架构也是比较类似,抽出一些常见的问题:

    • rocketmq/kafka 架构是什么?
    • rocketmq/kafka 角色有哪些?
    • rocketmq/kafka 有哪些保证消息不被丢失的手段?
    • kafka的注册中心用ZK,rocketmq用NameServer,分别有哪些优缺点?
    • Kafka和rocketmq存储结构是什么?如何进行高效存储的?他们分别有哪些优缺点?
    • 消息队列如何实现秒级延时消息?
    • 如何防止消息重复消费?
    • 如何实现全局顺序消息?分区顺序消息?

同样的我们这里也推荐一下系统学习这些相关知识的书籍:

  • Spring相关这里暂时不推荐,因为看了一些Spring相关的书籍都是整篇贴代码,也比较难以理解,推荐还是自己看文档和源码
  • 《mysql技术内幕innodb存储引擎》想学习innodb相关知识可以看这本书。
  • 《redis深度历险》 这本书强烈推荐,因为其中的文笔特别风趣幽默,并且知识讲得也比较多,大家看这本书并没有太大的难度。
  • 《netty权威指南》想学习的netty的可以看看这一本书
  • 《rocketmq技术内幕》《kafka技术内幕》这两本都是讲解mq中的原理,当然也推荐大家下来直接阅读源码。

设计服务

很多时候面试官都会问一些开放的问题,通常会出一些情景题,比如叫你设计一个秒杀的网站,你应该如何去设计,诸如此类的情景题,这种问题都比较开放,没有一个固定的答案,问题的类型也不好收集,需要大家增加知识的宽广度,来应对这种问题。

面试的其他点

当你已经复习好,准备要面试的时候,你还需要注意下面几点:

  • 约好面试时间,由于现在是疫情期间,可能网上面试比现场面试的情况会多一点,如果是现场面试,尽量提前去,如果是网上面试,尽量找一个安静的环境,保证良好的网络环境,特别注意网上面试很多人在学校或者家里,由于没有现场面试的签到限制,很多同学会忘记或者迟到。
  • 面试不要紧张,很多同学都是宅男,可能都很少和外面的人打交道,那面对面试官可能就会相对来说比较紧张,建议就是多训练一下自己的表达能力,也可以和自己的同学做一些预演,同学扮演面试官的角色来模拟进行面试。
  • 通常会有一些反向提问的环节,很多同学这个时候会选择略过,这个时候你就会错失了解这个公司的机会,你可以趁这个时候问一些公司管理是否扁平,技术文化是否很好这种问题,因为最后如果你拿到了很多offer,那么你还是得去比较一下不同的公司。
  • 回答问题的时候能画图尽量画图,有时候只说话有点干,如果这个时候你能在白纸上画上图,就可以很好的展现出你对这一块的知识是特别了解。

面试结束之后,其实可以对自己的面试做一些总结,针对自己的不足进行查漏补缺,以应对下一次的面试。

最后

最后希望大家都能顺利的通过所有的秋招,成为超级Offer收割机。当然如果你对自己的简历或者面试有什么疑问,或者想进入猿辅导都可以去我在牛客网的另外一篇帖子,这里有你想要的:https://www.nowcoder.com/discuss/454803

全部评论

(14) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐