参加过上一年的秋招,找的java开发岗,拿到过bat等大厂的offer的说下自己的经历。

我之前参加秋招,投递100余家,面试50余场。经历了这么多面试,发现校招Java开发岗并不仅仅看Java水平,还要看算法水平、计算机基础水平。

于是,我根据自己和身边人的经历,将各大厂面试的套路总结了个公式

大厂offer公式:技术栈知识+计算机基础+算法+项目+实习+加分项(竞赛/开源项目/博客)。

这个公式,不仅对Java试用,对cpp、安卓开发,甚至是算法也试用。

其中,以java开发为例,Java技术栈知识和刷题是必备项,如果项目或者实习很亮眼,面试基本没问题。竞赛、开源项目、博客这些都属于加分项,有了更好,拿sp的机会更大。

这是阿里巴巴的校招Java招聘要求,


做Java的,阿里应该是国内最理想的企业了,有着丰富的Java生态。以阿里对Java的要求去学习、准备,之后去其他公司小问题了。

接下来,就分别来将下这几个模块,校招面试应该达到什么程度,应该如何学习,以及优质的学习资源。

算法准备

现在立马开始刷算法题,至少刷300道,可以按照tag刷,自己这么高效怎么来。每天坚持5道题,要留出2小时时间,及时巩固复习。

算法 能力很重要,一定要提起高度重视。特别是对于后端同学来说,每轮面试至少 2 道 算法 已经成为标配,某些外企(如 微软,intel )甚至只考 算法题 。

国内很看重算法题的公司非字节跳动莫属,所以想进字节的小伙伴一定刷好题。

提升算法的话可以从看书和刷题两个方面深入。

书籍:

《算法(第4版)》比较经典的书籍,了解基本数据结构和算法,适合入门。但是内容不够全面,比如动态规划这么重要的知识点,本书并没有讲。

《剑指offer》这本书虽然是C++的,但是里面的算法思想是很清晰的。如果不想买书,在Leetcode和牛客上也有对应的版块,有很多不错的思路,可以对应练习。

《算法导论》里面充斥各种算法的正确性、复杂度的证明、推导,数学公式比较多,看起来比较吃力。如果只是为了笔试和面试,没有必要花功夫在这本书上,应该多刷题。

刷题:

刷题网站:牛客网有很多往年的真题, 同时也提供了很多的模拟考试训练;

Leetcode,Lintcode也有很多分类的题目,Leetcode热题100道是必刷题,很多公司公司面试或笔试的时候都是从Leetcode上选题改编,如果有余力,可以多刷些题目。

点个赞再跑哦

Java技术栈

包括Java 核心基础、Java 多线程、高并发、Spring、MyBatis、微服务、 RPC、Netty 、Zookeeper、Kafka、RabbitMQ、设计模式、负载均衡、分布式缓存(Redis)等。

Java技术栈的内容是非常多的。

此外,我根据牛客网等面经平台,分析了上千份面经,总结了500道Java大厂常考面试题 ,附参考答案。完整面试题在这里,可下pdf:Java大厂常考面试题

这份面试小抄包括 Java基础、Java并发、JVM、MySQL、Redis、Spring、MyBatis、Kafka、计算机操作系统、计算机网络、系统设计、分布式、Java 项目实战等。会不断更新~

作者:程序员库森
链接:https://www.zhihu/question/357242639/answer/2014550506
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

校招面试的话,要分清主次,重点看下以下这些核心问题,是否掌握。

一. 高频考点

1. Java基础

  • Java接口和抽象类有什么区别?
  • String,StringBuilder和StringBuffer的区别?
  • final、finally、finalize三个关键字的区别?
  • ==和equals的区别,给段代码判断下“ ==” 和equals的返回值。
  • Java基本数据类型有几种,每一种的区别是什么?
  • 值传递和引用传递的区别?
  • Java的异常体系?受检查和非受检查异常区别?
  • 序列化和反序列化。
  • 反射和泛型。

2. 集合

  • Collection的体系结构,Java容器有哪些?
  • HashMap系列:底层数据结构,jdk1.7和1.8的区别,解决 hash 碰撞的方法,线程不安全原因,扩容策略,get和put方法的实现等等。
  • ConcurrentHashMap的实现,底层原理,jdk1.7和1.8的区别等。
  • HashTable、HashMap、HashSet区别。
  • ArrayList,LinkedList ,Vector的区别,包括存储结构,增删改查效率等。
  • Set 和 Map的区别,List 和 Set 的区别。

3. JVM

  • JVM的内存区域,即运行时数据区域。
  • Java内存模型(JMM),Happens-Before 规则。
  • 垃圾回收算法;垃圾收集器,面试重点问CMS和G1的原理。
  • 类加载,双亲委派模型,如何打破双亲委派模型。
  • jvm 调优,如何排查线上问题,如何解决线上 gc 问题。

4. Java并发

  • 线程生命周期有哪些,状态切换的过程。
  • 死锁产生的条件,如何避免死锁。
  • synchronized系列。synchronized 锁的是对象还是方法, 加在静态方法和实例方法的区别;给出一段代码,让判断是否会发生争夺锁问题。synchronized 的底层实现,锁升级过程。
  • volatile相关。volatile关键字的作用,原理;volatile和synchronized区别。
  • Lock接口相关。ReentrantLock原理,ReentrantLock和synchronized区别。
  • 线程池系列。线程池的使用场景,线程池的参数,拒绝策略,线程池执行的过程;线程池的核心线程数如何配置,线程池的原理;常见的几种线程池,常见的几种阻塞队列。
  • ThreadLocal是什么?它的内存泄漏了解吗?
  • CAS相关。CAS的过程,CAS存在的问题,如何解决?
  • sleep() 方法和 wait() 方法区别和共同点?
  • 线程实现的方式及区别?线程通信的方式和区别?
  • AQS系列,原子类和并发工具类,了解即可,有时间可以深入学习。

5. MySQL

  • MySQL 的索引类型,最左匹配原则,回表,底层索引数据结构,为什么不用B-树?索引失效如何排查?
  • InnoDB和 MyISAM 的区别?聚集和非聚集索引 的区别?
  • 事务的ACID特性和隔离级别。
  • MySQL中的锁机制,乐观锁和悲观锁,锁的种类。
  • MySQL的日志模块binlog和redo log。
  • 主从复制,分库分表,SQL调优。

6. Redis

  • Redis 5种数据类型的使用,以及底层数据结构,尤其是Hash和Zset(sortedSet )
  • Redis性能高的原因,为什么用Redis?
  • Redis的过期策略和淘汰策略。
  • Redis的持久化策略,RDB和AOF的区别?
  • 缓存击穿,缓存穿透,缓存雪崩,如何解决这些问题?
  • Redis的主从复制,哨兵,集群。
  • Redis实现分布式锁。
  • Redis6的新特性。

7. Spring和Mybatis

  • AOP和IOC的理解, bean 的生命周期和作用域,IOC容器初始化过程,循环依赖问题如何解决?
  • BeanFactory和FactoryBean的区别?BeanFactory和ApplicationContext有什么区别?
  • Spring 中用到的设计模式。
  • SpringMvc工作流程。
  • Spring 和 SpringBoot 的区别?
  • Mybatis 相比Spring考察较少。常考:Mybatis 和 hibernate 的区别;Mybatis 的缓存;Mybatis 的执行流程等

8. 计算机网络

  • 网络分层概念,TCP和UDP区别及使用场景。
  • TCP头部结构,三次握手四次挥手,TCP可靠性保证手段,滑动窗口,拥塞控制,流量控制。
  • HTTP和HTTPS区别?Cookie和Session区别?
  • HTTP请求报文,浏览器输入网址后发生的事情,GET和POST的区别?

9. 操作系统和Linux

  • 进程和线程的区别;进程的通信方式,线程的通信方式
  • 内存管理和IO管理
  • Linux常用命令(top、ls、ps、netstat、lsof、cat、rm、grep、kill等),僵尸进程和孤儿进程,Linux中swap的作用?

10. 设计模式

  • 设计模式的分类和六大原则
  • 单例模式分析和手写:懒汉和饿汉,双重检查模式,静态内部类模式。
  • 常见的几种设计模式?项目中用到哪些设计模式,为什么要用,怎么用的?

11. 加分项

  • 消息队列MQ:ActiveMQ、RocketMQ、RabbitMQ、Kafka。选一个深入了解即可,推荐Kafka或RocketMQ
  • 全文搜索引擎ES(elasticsearch):ES的倒排索引,分词和搜索过程等。
  • 分布式Zookeeper。
  • 微服务框架 SpringCloud或Dubbo

计算机基础

最后,再来说下计算机基础,计算机基础包括计算机网络和操作系统

计算机网络

推荐资料:

  • 书籍:《图解TCP/IP协议》,阅读起来不吃力,适合入门。书籍《计算机网络:自顶向下》,从应用层讲到物理层,学起来更省力,学完会加强计网的整体性认知,适合深入了解。
  • 在线视频:哈工大的计算机网络

操作系统

推荐资料:

  • 书籍:《深入理解计算机系统》,一本以程序员的视角理解计算机系统的书籍,CMU把这本书作为“Introduction to Computer System”课程的教材,豆瓣评分9.5,非常值得阅读!
    那本《鸟哥的Linux私房菜》更适合运维工程师,可以用来垫显示屏,哈哈。
  • 在线视频:哈工大的操作系统

更多java问题可点击加入java技术交流群组加入免费领取java学习资料 更有10年开发java大佬免费解答问题!

最后 祝大家都能顺利上岸!

更多推荐

Java岗校招需要什么水平