前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >凌晨整理--应届生校招Java研发岗需要学习哪些知识点?

凌晨整理--应届生校招Java研发岗需要学习哪些知识点?

作者头像
程序员小跃
发布2020-02-17 18:10:57
1.3K0
发布2020-02-17 18:10:57
举报

最近很多同学问我关于校招 Java研发工程师 岗位的要求,因为只有先知道了要求,再结合自身的情况,做好学习计划。

最近都在忙着写毕业论文,所以公众号干货文章更新的比较慢。上面截图这位同学一直等着我的这篇文章,我觉得不能再拖了,那就加班干吧!写到这里的时间是:2019.12.21 : 01.51。不知道这篇文章最后能对多少人有用,看在我人在广州陪女朋友还能凌晨2点钟给大家写文章的份上,点个在看吧~哈哈

那么本篇文章就和大家分享下我个人对校招 Java 研发工程师 岗位要求的一点看法。

说明:Java研发是服务端开发的子集,只不过限定了你未来工作用的编程语言,但是并没有限定你面试的编程语言。本文主要讲述 Java 研发的校招岗位要求,其他语言除了编程语言专属的知识点外,其他要求都一样(可能稍有侧重点)。

先看下几家互联网公司校招对 Java 研发岗位的要求:

阿里巴巴

看完之后你可能会说这也没要求什么啊?我个人觉得这样一份招聘要求是比较包容性的,不想罗列出太明确的技术,希望你去试一试的感觉。但是你真去试了会发现,那还真不简单。比如上面提到的数据结构与算法、网络编程、多线程、TCP/IP、HTTP、数据库等,同时这里也可以看到大厂是不限制编程语言的,虽然阿里主流 Java 技术栈,但是你用其他编程语言面都可以。

腾 讯

腾讯的服务端研发是不分编程语言的,用什么语言面都可以。可以看到腾讯的服务端研发要求:常用算法和数据结构、开发语言、网络协议、数据库、操作系统、设计模式、分布式等。基本上涵盖了服务端开发的所有知识模块。

百 度

直接看技术要求:算法和数据结构、Java编程语言(即便这里明确了Java,但是你还是可以用其他语言面,只不过 Java 会有优势些)、操作系统。另外百度给出了一些加分点,根据我的了解,这些加分点是真的加分,可以结合自己的情况准备一些加分点。

上面用 BAT 的 Java 研发岗要求作简单分析。可能很多同学说 BAT 难,但是其实你查一下其他公司 Java 研发岗位的要求,基本上都是和 BAT 一样的,只不过面试深度和广度是不一样的。

下面分享下我个人总结的校招 Java 研发岗位的具体要求:

说明:本文只对每个模块的知识点做简单介绍,旨在告诉你需要学习哪些东西?如需了解具体题目,可以看我之前关于秋招文章合集的文章: 来啦!2020届秋招精选文章合集!

一、编程语言

1、Java语言基础:面向对象的概念、数据类型、装箱/拆箱、值传递/引用传递、String 类、关键字(final、static、super、this、transient等)、抽象类/接口、异常、IO流、反射、动态代理、序列化等。

2、Java集合类:常见的集合类源码一定要看一看。比如:ArrayList、LinkedList、HashMap、TreeMap、LinkedHashMap(实现LRU)、HashSet等。这部分非常的重要,特别是 HashMap,“出勤率”超级高,一定要搞懂其中每一个知识点。

3、Java并发/多线程:主要是看 java.util.concurrent 包下相关类的源码。Java内存模型、线程的状态及转换、ThreadLocal、synchronized、ReentrantLock、volatile、CAS、AQS、BlockingQueue、CountDownLatch/CyclicBarrier、Exectuor、Java线程池等。

4、Java虚拟机:这部分基础看周志明的《深入理解Java虚拟机》就够了,自己可以再结合相关案例学习了 JVM调优。需要掌握的知识点:运行时数据区、垃圾回收机制、垃圾收集器、类文件结构、类加载机制、双亲委派模型、早期/晚期优化、JVM监控工具等。

5、JavaWeb:JDBC、Servlet、Cookie、Session 等 web 技术还是要了解的。

二、计算机基础

1、数据结构与算法:这部分的重要性不用过多强调了,如果你是 21 届秋招的学生,看到这里,希望你之后做一个详细的刷题计划吧。三部分:基础数据结构、剑指Offer、LeetCode,具体怎么刷,参考我之前的一篇文章:实战中总结的125道面试高频算法题!再也不怕手撕代码了!

2、计算机操作系统:进程与线程的区别、线程/进程间的通信方式、死锁的概念/检测、避免内存管理等。操作系统这部分知识点非常多,但是常问的就是那么几块,建议找一本书先看一遍,如果迷惑也不要紧,再结合一些大佬的笔记或者面经总结一些高频题,问题也不是很大。

3、计算机网络:个人感觉在 Java 研发岗位的面试中,计算机网络的问题要比操作系统的多一些。计算机网络主要的知识点:五层网络模型(每一层的作用、主要协议等)、TCP三次握手/四次挥手、UDP和TCP的区别、可靠传输、HTTP 和 HTTPS 的区别、HTTPS 的工作原理等等。

4、Linux:至少能说出几个常用的 Linux 指令吧?也遇到过一些问的比较具体的,但是大部分都是让你随便说几个,所以快速的了解下即可,如果有时间可以多看看。

5、设计模式:这也是面试中一个比较高频的点,至少能说出 5 种设计模式及思想吧?单例、工厂、代理这些常见的还是要懂的。对于面试而言,也没有必要 23 种都搞的滚瓜烂熟,最好的是结合源码或者项目说几个,这样比较加分,说明你是学以致用。

说明:对于校招,编程语言基础和计算机基础并列第一重要。“基础”才是王道!只要你基础好,不愁拿不到 offer!一定要尽可能的深入理解每个知识点。

三、数据库

1、SQL 语句:CRUD 你真的会吗?今年身边很多同学面试中就栽在了写 SQL 语句上。千万重视下,基础的 SQL 语句要熟!

2、MySQL:MySQL 是目前互联网公司用的比较多的数据库,所以如果你要选择一个数据库进行学习,那么就建议学 MySQL 了。需要了解:索引、事务、锁、存储引擎、主从复制、分库分表等,最好再懂一些数据库调优方面的知识。

3、Redis:Redis 我认为是 Java 研发工程师必问的一个知识模块了,毕竟现在互联网公司服务数据量都很大,为了减轻数据库压力,一般都会使用缓存的,那么 Redis 就是用的最多的。需要了解 Redis 基本的数据类型、持久化方式、缓存和数据库双写一致性问题、缓存穿透、缓存雪崩等。

四、框架

1、Spring:AOP、IOC(Bean 的生命周期、作用域等)、事务等。对于 AOP 和 IOC 看源码确实困难比较大,费时易忘。建议去百度搜下 AOP/IOC 的简洁版实现,可以跟着练习加深印象。

2、SpringBoot:现在很多互联网公司都是直接用 SpringBoot 的,当然如果你一直用 Spring,不懂 SpringBoot 也没关系,二者会其一即可,有时间最好都学学。

3、SpringMVC:核心组件、处理请求的流程、入口类等关键类的源码最好也能看下。

4、MyBatis:这个我觉得倒不用看源码了,了解下 MyBatis 的一级和二级缓存机制、分页方式、延迟加载等。个人感觉看面经或者我的秋招笔记就够了。

对于框架而言:校招面试要求不是只懂怎么配置使用,而是会考察源码、底层原理

五、分布式/微服务

1、消息队列:这个模块我觉得也是校招 Java 研发岗位必须掌握的了。建议学习 Kafka,当然结合自己情况,学习哪个都行,只是说最好学习现在流行的。需要学习的知识点:使用场景、如何保证消息不被重复消费(幂等)、如何保证可靠传输、如何保证顺序性等等。

2、注册中心:建议学习 Zookeeper,直接看《从Paxos到Zookeeper分布式一致性原理与实践》。书里面对 Paxos 算法、ZAB协议、两阶段/三阶段提交都做了讲解。

3、分布式框架:建议学习 Dubbo,毕竟阿里开源的,看官网就是最好的学习资料。当然你学习 SpringCloud 也没有问题,还是那句话结合自己的情况选择。如果你准备学习 Dubbo,要看的知识点直接去看官网即可。

4、分布式事务:需要知道常用的分布式事务解决方案,最好能结合自己的项目说一说,这块知识点也是比较容易扩展的,一定要多思考,不要只懂一点点就去装 X 说,面试官一扩展,就被吊打了。

5、分布式锁:需要知道常见实现分布式锁的方式。

对于分布式相关的知识点目前校招没有明确的说必须会,但是我认为大厂默认你都要懂一些了,有过相关项目经验的肯定比较加分的。 分享下我今年美团秋招提前批的一次面试经历,一面和面试官聊分布式相关知识点差不多 1 个小时。我最后实在憋不住了,问了他:为什么不问我基础知识?全程问分布式呢?现在分布式对校招生是必会的吗?面试官回答说:收的简历太多了,基础问题一般都能回答出来,他想找和“别人”不一样的同学,看到我简历上写的项目是分布式的,所以就看看我这块知识掌握的怎么样?即便回答的不是很好,但是也看出和别的同学的不一样,所以轻松过了面试。 所以后面我建议大家在准备面试的时候,基础肯定是最重要的,但是最好学一些分布式的知识,做一些 Demo,可以增加自己的亮点。

六、项目

实习项目:搞清楚参与系统的全貌(架构设计、核心技术点等)、梳理自己做的事情、多看小组的文档(看有没有一些故障复盘记录可以转换为自己所用)。

自学项目:不要纠结这个项目被多少人做过、说过。你要做的是通过这项目巩固自己的基础知识,其次能够在项目开发的时候多一些思考,多想一个为什么?而不是跟着视频敲完代码就完事了。项目中涉及的知识点是不是都会了?业务点能不能加一些个人的理解。

7、其他

1、工具:Maven/Gradle、Git Docker 等工具肯定也是要会的,相对来说面试问的很少,根据自己的时间去做学习安排。

2、智能题:有时候你和面试官约的是电话面试,不方面写代码,那就整个智力题吧。如果在面试的时候你遇到了智力题,它的重要性和算法是一样的,打不出来,大概率 GG。这个看我之前的一篇文章:面试智力题集锦

3、场景题:这类题目在面试时也是非常常见的,比如:你给我设计一个秒杀系统?百度搜索提示是如何实现的?等等。这类题目需要你结合基础知识以及项目经验综合去回答。

最后祝看完这篇文章的你顺利拿到心仪的 offer!点个在看吧~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奔跑吧攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档