长话短说,由于高中贪玩高考失利, 我毕业于湖南某技术学院。对于大专毕业的我,因为学历的劣势,只敢选择一个刚起步的小公司开始九九六的上班。原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个大专渣渣也奋斗了起来,竟拿下了阿里offer。然后我想将这次面经分享出来,让那些跟我一样被学历困扰的人,能够对职业生涯和技术规划有重新的认识,感谢!
一面:
1、hashmap、concurrenthashmap底层实现和区别;
2、spring框架的原理;
3、如何写一个orm框架?
4、hibernate一级缓存和二级缓存,hibernate其他缓存;
5、hibernate事务传播行为种类;
6、springmvc原理;
7、restful的好处;
8、restful有几种请求,表单如何提交put请求?
9、web中安全性问题的考虑,如何防止?
10、web系统整体架构;
11、hibernate如何实现声明式事务?
12、java并发包;
13、volatile;
14、平常都看哪些书?
15、spring底层数据结构?
16、如何进行反射,如何提高反射的性能?
17、如何实现java的代理,为什么需要实现接口?
18、TCP协议三次握手?
19、springmvc用过哪些注解?
20、springAOP可以使用哪些代理,有什么区别?
21、为什么要分三层?
22、mybatis与hibernate有什么区别,为什么不用hibernate直接写sql语句?
二面:
1、hashmap,hashtable区别。
2、是否了解过hashmap的源码?
3、jvm相关,主要是内存分配的过程,何时触发GC,用什么工具或者命令来进行监控?
4、类加载,类隔离机制。
5、spring的ioc,aop,事物,然后顺便提到了数据库的事物,两阶段提交,数据库锁的级别,MySQL数据库锁的特殊之处(页级锁)
6、java线程池里面的arrayblockingqueue,linkedblockingqueue的用途和区别。
7、设计模式相关,主要讲解用途如何保证数据库集群中ID的唯一性,假设每秒钟并发20万次。
8、设计十万并发级别的网站后台,如何计算使用的ecs数目;
9、memcached和redis的异同和用途。
10、nosql数据库相关,主要讲了mongodb
11、10G的整数中,取出最大的一个;
12、synchronized,volatile,可重入锁的用途和优缺点。
13、java nio相关核心的api基本了解和应用
14、一致性hash
15、在一个大系统中存在哪些单点失效的问题
16、hadoop优化相关
三面:
1、什么是restful web service?
2、并发集合包?
3、项目中使用了哪些数据结构?
4、TCP中断连接四次挥手?
5、MD5加盐;
6、https相关;
7、支付宝接口开发;
8、知道哪些锁,有什么区别?
9、依旧JDK源码;
10、项目遇到什么问题,怎么解决?
11、JDK1.8有什么新特性?
12、聊了一下职业发展、职业规划;
HR面:
1、自我介绍,抓住介绍的点让你详细说说?
2、为什么不去找其他的公司?
3、其他的面试流程?
4、考虑去哪里工作,北京是唯一选择吗?
5、为什么来阿里?你对阿里技术团队的了解有多少?
1、心态(自信的心态)
我们不能因为学历低就否定自己的潜力 要相信自己是可以做到的 也要知道现在是一个更看重能力的社会。自信是所有成功的根基,只有自己相信自己 别人才能相信你。人一旦从心底否定了自己,面试过程中就容易出现语言不流畅、说话没逻辑、条理不清晰、回答不全面,这都是面试中很多面试者容易出现的“致命伤”,所以相信自己,沉着冷静地面对是非常重要的。
2、收集整理 试题分析
对于我们来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。当然我们也不知道面试官会问什么,所以对于Java 的知识点有一个清晰的梳理是很有必要的。多整理一些面试题进行练习,对于Java核心知识点进行整理 调理清晰。
以下是我的整理 希望能帮到你们:这份PDF文档包括了五个大部分,26个知识点:
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
现在面试对很多原理基础都特别注重,然而有很多人对一些核心原理理解的不够透彻,特别是对 Java 的一些核心基础知识点掌握的不够,例如 JVM、常用的算法和数据结构等。正所谓万丈高楼平地起,只有把基础掌握的牢固,才能走的更远,面对不断更新的技术才能快速掌握,同时在面试、工作中也更能脱颖而出!下面展示下这些必须掌握的Java知识部分,内容很多,都是一些重点知识!!!
1.Java基础:
2.Java集合:
3.多线程并发:
4.java虚拟机(JVM):
JVM 是初级Java 程序员成长路上的一道必经之路,学习JVM之前,只需要知道代码编译成 Class,虚拟机加载 Class 运行就可以了,学习 JVM 之后,可以深入理解代码从编译到加载的过程、内存中对象的创建与垃圾回收、日常开发中快速定位性能问题等,当然也是面试不可缺少的加分项。
5、数据结构与算法篇
哪些数据结构(线,链,堆,栈,队列)及其在 Java 里面哪里有用到。8 大算法(时间复杂度,空间复杂度,内存,CPU 的影响)及其应用的地方。KMP 查找算法,二分查找,递归算法(写法,内存的影响)。数、图及其应用的地方。hash 表,及其实际工作中哪里应用。
推荐阅读:《高性能MySQL》 《MySQL技术内幕:InnoDB存储引擎(第2版)》
Spring 作为一个轻量级的 Java 开发框架,将面向接口的编程思想贯穿整个 Java 系统应用,因此在 Java 面试中常被提。
这部分是关于分布式架构知识部分,包括Redis,Zookeeper,数据库性能优化,负载均衡等!
对于大厂面试,我最后想要强调的一点就是自信真的很重要,是决定你在面试过程中发挥的关键它会决定你面试是否可以超常发挥,否则很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,只要你复习充分了,自然面试过程中就要有底气得多。
最近面试的小伙伴比较多,希望可以帮助更多人顺利通过大厂面试,有需要点击下面名片就能免费领取,觉得有用的话麻烦给我评论点赞转发三连~~