前言
一直有小伙伴要我分享面经,说自己想面互联网公司,无奈经验太少想多看看其他人是怎么面的。我这两天刚好和一个刚拿到猿辅导offer的朋友吃了个饭,他向我说了说自己的面试经历。粉丝朋友是末流211毕业的,工作了两年了!然后五月份左右的时候辞职的,辞职之后问我要了面试资料进行学习,对自己的知识点进行梳理,查漏补缺!在上个月先是去面了蚂蚁金服,不得不说的是蚂蚁金服上市之后门槛是真的高!他面到了第三面被拒了。被拒之后找我一起吃了个饭,我给他重新规划了一下。直到前两天他又找到了我,说自己已经拿到了猿辅导的offer,下面我把他的面试题以及他的一些经验总结都分享给大家!
蚂蚁金服一面
首先是他蚂蚁金服的面试题,是第一面到第三面的!
1、当前读与快照读的区别?
2、类加载过程?
3、聚簇和非聚簇索引。
4、HashMap&ConcurrentHashMap。
5、再谈谈一致hash算法
6、乐观锁&悲观锁?
7、双亲委派机制及使用原因?
8、线程池的核心参数和基本原理。
9、线程池的调优策略。
10、可重入锁&Synchronize?
11、用自己的实践经历说一下索引的使用场景
12、说说GC算法
13、Http&Https的区别。
(1)https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
(2)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
(3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
一面面的并不难,都是一些基础知识,问题不大
蚂蚁金服二面
1、说说自己参与的项目,技术难度在哪里?
2、Collections.sort底层排序方式?
3、排序稳定性?
4、具体场景的排序策略?
5、Http请求过程,DNS解析过程。
6、三次握手四次挥手。
7、简述线程池和并发工具的使用?
8、数据库索引原理。
9、频繁老年代回收怎么分析解决?
10、Spring IOC、AOP?
11、讲讲SpringBoot/SpringCloud的一些应用?
12、阻塞队列不用java提供的自己怎么实现,condition和wait不能用
13、拥塞窗口讲一讲,为什么要用慢启动算法
14、负载均衡的原理?
15、Redis的数据一致性问题
16、讲讲docker容器?
17、如何实现何高并发下的削峰,限流?
18、你有什么职业规划?
二面其实重点就是在于自己参与的项目这一块,现在互联网公司招人想要的是你能有自己参与项目的经验和自己处理项目问题的能力,如果你在第一问项目这里卡了壳,其实后面的也就基本不会问到了!
蚂蚁金服三面
1、项目中用的中间件的理解(Dubbo、MQ、Redis、kafka、zk)
2、服务器雪崩是怎么造成的?之前有这样的经历吗?怎么防备?
3、高并发架构的设计思路。
4、以前项目中遇到的最大问题和解决策略。
5、生活中遇到的最大的挫折。
6、生活中遇到的最大的令你最有成就感的事情。
7、你有什么职业规划?
三面问的最多的也是项目这一块,可见有自己项目经验能在面试中有多大的优势,粉丝朋友在我的梳理中这一块问题并不大!然后三面其实就是和HR面问的差不多了,然后问的是去留问题,粉丝可能在面试中表露了自己不想待在上海的念头,然后并没有接到意向书!
项目经验
上面说到了面试互联网公司的重点,项目这一块。我相信很多读者并没有这一方面的经验,其实他在这一块方面的经验也不多,是拿着我那份突击面试宝典上推荐的15个新手都能看懂的java教程方向的开源项目看了很久在把这一块知识补充上去的,具体如下:
我这份突击面试宝典,不仅包含了开源项目的学习,还涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、
Linux 这些所有技术栈的知识点!有需要的朋友可以关注我的公众号:前程有光免费获取
猿辅导一面
下面接着说他在猿辅导的面试经验,他是上个月去面的,下面是一面面试题
1. JVM的内存模型,那几个区容易发生OOM
2. JVM的垃圾回收算法,优点缺点比较
3. JVM中的垃圾回收器(重点介绍CMS,G1)
4. JVM中发生FullGC的情况,old区引用young区对象怎么办?(卡表记录)
5. Java线程池(7大参数)
6. 当有任务提交时,线程池的运行原理
7. 线程池中的是怎么根据keepalive时间来回收线程的
8. 怎么来保证线程之间的安全运行
9. Java中实现锁的方式(显示锁和Synchronized的区别)
10. Synchronized底层的原理(锁池和等待池)
11. JUC中的ReentrantLock底层(AQS)
12. TCP的可靠连接怎么保证
13. TCP和UDP的区别
14. 数据库的底层的B+数结构,为什么要使用B+,而不是AVL
15. Mysql的4个隔离级别,对应解决了哪些问题
16. 隔离级别中RR问题是怎么解决的
17. 数据库中的MVCC实现机制
18. 数据库中怎么解决幻读问题的—间隙锁
19. HashMap的扩容机制。加入都1亿个数据,是一次性rehash完么?
20. 渐进式的rehash,实现原理
21. 算法题---DP找矩阵中的最小路径
其实猿辅导的一面并不比蚂蚁问的简单,有的知识点甚至比蚂蚁问的还要深,他在我的突击面试宝典的冲击下对这些问题并没有什么难度,一面简单通过
猿辅导二面
1. 双亲委派机制。有哪些好处。怎么打破。JAVA中哪些东西打破了双亲委派机制。
2. Java可以自己重新写lang包下的类么?
3. 线程池中的线程的状态。状态之间的转换关系
4. Yield()方法有什么用
5. 为什么要废弃suspend和stop方法
6. 怎么去停止一个正在运行中的线程
7. 线程池中为什么要使用workqueue?
8. Java中的直接内存
9. Java中的NIO和BIO
10. NIO底层实现(分析三种实现方式)
11. CopyOnwriteArraylist和ConcurrentLinkedList底层实现
12. AQS底层
13. Redis中的持久化机制
14. Redis的集群说一说
15. 一致性Hash的好处与缺点(偏环)
16. 算法题:判断一个字符串是否是累加和字符串:
eg:”11235813”是一个累加和字符串
eg:”10099199” 100 + 99 = 199 也是一个累加和字符串
其实总的来说二面难度并不大,只要你把我的预计面试宝典吃透了,并没有什么太大的问题!主要是最后的那道算法题,一定要认真,不然就容易出错!
猿辅导三面
1.聊比赛,聊项目
2. Java中的NIO和BIO区别
3. Java中的直接内存
4. 直接内存产生OOM怎么办?
5. 项目中有遇到这种情况么?怎么解决的
6. Redis中RDB持久化的具体过程
7. 操作系统的进程通信方法
8. JVM中各个区具体存放哪些数据
9. 项目中遇到了哪些问题
10. 算法题: 多个有序链表合并成一个有序的链表
果然,该来的总会来的。问项目!问了一些项目经验和自己以往参加过什么比赛的经历,主要聊的最多的还是一些处理项目问题经历和经验,他在这方面完美过关!再补充一下对项目没什么经验的同学可以往上面翻一下,有我给大家推荐的15个新手也能上手的项目!
猿辅导四面
四面其实就是HR面,就是聊了一些你的职业规划和你现在都有哪些offer以及你以后想在哪里居住这些问题,只要你灵活一点的回答都不会有什么问题的!
总结
以上就是粉丝朋友的面经分享了,希望对你们能有帮助!然后向大家分享一下我在文中多次提到的突击面试宝典,这份宝典不仅涵盖了项目推荐还涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 这些所有技术栈的知识点!
具体内容如下:
这份突击面试宝典将近500页,几乎涵盖了面试能问到的所有知识点,大家拿到后可以跟我那个粉丝朋友一样把自己的知识点重新梳理一次,查漏补缺!相信你把这份宝典吃透了再去面试,你绝对不会面的比他差!
最后强调:这份突击面试宝典只要你关注我的公众号:前程有光就可以免费获取