准备跳槽,先后面试了各大小公司,拿了一些offer,有阿里,滴滴,快手,达达,得物等公司。面试的公司大部分都能过,**所以这里给大家分享下自己的经验,**也给自己做个归档,希望能给正在准备跳槽,找工作的朋友一点帮助,这里主要分享下阿里面试的经历!
为什么面试成功,我总结了如下几点:
1.有明确的目标,有压力才会有动力。保持学习的习惯,每天至少学习两小时,每两个月最少看一本书。你想要三年入大厂,就要三年学习足够的知识,所以让自己疯狂起来吧。
2.要有精益求精的态度。你可以想象,如果支付宝因为bug停服1分钟会造成多大影响? 如果是你写的,那面临的将是五雷轰顶。抱着这种敬畏的态度,不仅要知道API的用处,更要知道它是如何实现的。毕竟是人写的,会有各种问题,了解原理才能避免或者及时更改错误。
3.对技术和项目深入挖掘。面试官很喜欢问项目的架构、技术的深度和广度。 为什么?我们需要保证一个系统健康、高效、可动态扩展(就比如支付宝,不能出bug,必须支持动态扩容等等)。那就需要你了解项目架构,学习如何设计项目;需要你深入了解源码实现和设计理念,知道哪种方式效率最好,你写的代码是否会出现bug,是否可以动态扩展……
另外说一点,为什么要看源码?
1.看源码可以了解实现原理,让你对框架的使用更得心应手(我以前不知道aop怎么用,看完源码之后就彻底懂了);其次可以避免一些使用上的错误(比如JDK提供的几种默认实现线程池,他有可能造成OOM,因为采用的无限队列存储任务);再者,我们可以学习优秀的设计理念,将来应用到自己的代码中。
2.可能你会想问,那么多框架都要看吗?那是不可能的!其实框架的设计几乎都雷同,我们只要针对2-3种框架进行深入研究,学明白其中的道道,那么再给你一个新的技术,你也会很快上手,并且结合项目进行学习(最终的目的不就是为公司挣钱嘛,所以用到啥学啥,谁也不可能都学会都学精,别有压力)。
3.我说了这么多,不知道你是否对自己有了全新的定位,在学习上有了明确的标准?如果你符合我说的,那么恭喜你已经或者即将成功。如果感觉到压力,那更要祝贺你,因为以后就是你蜕变的过程,请享受它!下面是面经的一个分享!
A:面试前的准备
1.目标企业
在跳槽之前,一定要思考清楚自己的目标企业是什么,到底是去大公司当一颗螺丝钉,还是在中小公司做万金油。
当然,去大公司也不一定是螺丝钉,关键还是要看自己的技术水平和能力。所以综合自己的实际情况考量来看,目标企业在美团、字节和京东三家里选择。当然,3家都投了简历,最终在面试美团时发了力拿下了Offer。
2.时间节点
跳槽的时间节点是非常重要的,不同的时间节点,岗位面试的难易程度可能都有不同,主要是根据缺人的程度以及岗位HC的数量来划定的。
一般来说,以下两种情况,是比较容易通过面试拿到offer的:
- 着急招人干活的时候
- 年底坑比较多的时候
3.简历准备
关于简历的准备,我不用多说,大家应该也都明白。简历至少要满足以下几个要点:
- 以项目为主体,设计你的简历
- 针对企业的需要,突出你的技能
- 项目的三要素(项目 = 产品 + 技术 + 结果)
- 量化你的项目,给出数字
关于简历的准备,很多人可能不知道从何下手,我这边可以提供一些简历模板作为参考,对我个人来说,帮助还是非常大的。
4.面试复习
关于面试前的复习,重要性我就不过多赘述了,相信只要面试过的人都知道,即使是临时抱佛脚,也比直接裸面要强得多。至于我的复习方法以及一些技巧,会在文章的第三部分详细说一说,希望能给你一些启发。
B:面试阿里全过程(面试题分享)
阿里一面:
- redis集群,为什么是16384?哨兵模式,选举过程,会有脑裂问题么?raft算法,优缺点
- JVM类加载器,自定义类加载器,双亲委派机制,优缺点,tomcat类加载机制
- Tomcat热部署,热加载了解吗?怎么做到的?
- cms收集器过程,g1收集器原理,怎么实现可预测停顿的?region的大小,结构
- 内存溢出,内存泄漏遇到过吗?什么场景产生的?怎么解决的?
- 锁升级过程,轻量锁可以变成偏向锁么?偏向锁可以变成无锁么?自旋锁,对象头结构,锁状态变化过程
- kafka重平衡,重启服务怎么保证kafka不发生重平衡?有什么方案?
- 怎么理解分布式和微服务?为什么要拆分服务?会产生什么问题?怎么解决这些问题?
- 你们用的什么消息中间件?kafka,为什么用kafka?高吞吐量,怎么保证高吞吐量的?设计模型,零拷贝
- 算法1:给定一个长度为N的整形数组arr,其中有N个互不相等的自然数1-N,请实现arr的排序,但是不要把下标0∼N−1位置上的数通过直接赋值的方式替换成1∼N
- 算法2:判断一个树是否是平衡二叉树
阿里二面:
- Innodb的结构了解么?磁盘页和缓存区是怎么配合,以及查找的?缓冲区和磁盘数据不一致怎么办?mysql突然宕机了会出现数据丢失么?
- redis字符串实现,sds和c区别,空间预分配
- redis有序集合怎么实现的?跳表是什么?往跳表添加一个元素的过程,添加和获取元素,获取分数的时间复杂度,为什么不用红黑树?红黑树有什么特点?左旋右旋操作
- io模型了解么?多路复用,selete,poll,epoll,epoll的结构,怎么注册事件,et和lt模式
- 怎么理解高可用?如何保证高可用?有什么弊端,熔断机制,怎么实现?
- 对于高并发怎么看,怎么算高并发,你们项目有吗?如果有会产生什么问题,怎么解决
- 项目介绍
- 算法:给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少,这个路径的开始节点和结束节点可以是二叉树中的任意节点
阿里三面:
- 项目介绍
- 线上有遇到大流量的情况么,产生了什么问题,为什么数据库2000qps就撑不住了,有想过原因么,你们当时怎么处理的?
- 限流怎么做,如果让你设计一个限流系统,怎么实现?
- 算法:求一个float数的立方根,牛顿迭代法
- 什么时候能入职,你对岗位的期望是什么?
- 你还在面试其他公司么,目前是一个什么流程?
最后
对于这些问题我都整理了答案,记录在这个Java学习笔记里,这份笔记包括了Spring,JVM,java基础,Java集合,Java并发编程,微服务,网络,Kafka,分布式,Redis,大厂面试解决方案,分布式事务,设计模式,算法,数据结构,MySQL等
通过对Grafana的一波实践,我们可以发现,使用Grafana来进行数据可视化的过程是这样的:首先我们得让被监控方将指标信息暴露出来,然后用Prometheus定时获取并存储指标信息,最后将Prometheus配置为Grafana的可视化数据源。
前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~
如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料
基础篇
JVM 篇
MySQL 篇
Redis 篇
由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料