参加过上一年的秋招,找的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岗校招需要什么水平
发布评论