最近面试了阿里、京东、美团、滴滴等大型互联网公司,最终收到了美团offer,这次面试过后,我把面试过的公司的面试题做了一个整理。这篇文章是我凭回忆记录的,面试题没有顺序,不分先后,接下来公布我去阿里、京东、美团等一线互联网公司的面试题:
一、阿里巴巴面试
1、开发中Java用得比较多的数据结构有哪些?
https://www.cnblogs.com/web424/p/6824298.html
- ArrayList: 元素单个,效率高,多用于查询
2.Vector: 元素单个,线程安全,多用于查询
3.LinkedList:元素单个,多用于插入和删除
4.HashMap: 元素成对,元素可为空
5.HashTable: 元素成对,线程安全,元素不可为空
读源码
2、谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?
这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问有没有线程安全的map,接下来问conurren包。
Map源码
- 对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管理,平时在tomect里面有没有进行过相关的配置。
类加载顺序
- 说一下http协议、get和post的基本区别,接着问tcp/ip协议,三次握手,窗口滑动机制。
https://www.cnblogs.com/logsharing/p/8448446.html
最长
https://blog.csdn.net/fanhaifeng66/article/details/51952927
滑动窗口
https://www.cnblogs.com/woaiyy/p/3554182.html
握手
https://baike.baidu.com/item/%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B/5111559
TCP协议头最少20个字节
- 开发中用了哪些数据库?回答mysql;储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。
悲观锁,单线程,等待synchronized
https://blog.csdn.net/L_BestCoder/article/details/79298417
https://mingyundezuoan.iteye.com/blog/2401057
6、springmvc和mybatis的工作原理,有没有看过底层源码?
二、京东金融面试
1、Dubbo超时重试;Dubbo超时时间设置
2、如何保障请求执行顺序
Mq做缓存
或者
收到请求后,服务器判断优先级1,2,3,放在内存队列等待,可能会死等待。
3、分布式事物与分布式锁(扣款不要出现负数)
强一致性和最终一致性
说到应该有一个中间状态系统维护状态。
状态在自己系统维护,如放款还款流程,其实可以做成一个业务逻辑的中间交易系统,区别与支付网关,支付网关只是一个没有业务逻辑的状态、流水系统。
淘宝抢单
用redis锁太慢,等待
利用乐观锁,利用delta值做乐观x=x-1,10能减1后能=9才能往下走。
Redis单线程分布式锁。
- 分布式session设置
Spring.redis开启注解。
- 执行某操作,前50次成功,第51次失败a全部回滚b前50次提交第51次抛异常,ab场景分别如何设置Spring(传播性)
开事务的级别REQUERY
- Zookeeper有哪些用
通知订阅。数据不可更改
数据发布与订阅(配置中心)
https://blog.csdn.net/u013679744/article/details/79371022
包括CAP
Dubbo,
SpringCloud服务下线并不会通知,只有90秒心跳,优雅down服务职能靠k8s或者eagle这些部署服务的机制,等到启动完才下线。
分布式协调/通知.
- JVM内存模型
指令重排序,sync,
8、数据库垂直和水平拆分
9、MyBatis如何分页;如何设置缓存;MySQL分页
10、熟悉IO么?与NIO的区别,阻塞与非阻塞的区别。
11、分布式session一致性
Spring redis
12、分布式接口的幂等性设计「不能重复扣款」
分布式redis
唯一索引
Sql语句乐观锁减少金额
做逻辑时可以先减少金额,不行则恢复数据或者事务回滚。最终一致性。
三、美团面试
1、最近做的比较熟悉的项目是哪个?画一下项目技术架构图。
2、JVM老年代和新生代的比例?
新生代到老年代。
- YGC和FGC发生的具体场景
fullGC场景
- jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?
排查问题。
5、线程池的构造类的方法的5个参数的具体意义?
6、单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理?)
入库,先变处理中状态,再做逻辑,即使逻辑没实现,还可以主动查询结果,有就有没有就没有。
7、使用无界阻塞队列会出现什么问题?
8、接口如何处理重复请求?
9、具体处理方案是什么?
10、如何保证共享变量修改时的原子性?
Sync 还有一个
- 设计一个对外服务的接口实现类,在1,2,3这三个主机(对应不同IP)上实现负载均衡和顺序轮询机制(考虑并发)
SpringCloud 设置ribbon或者feign
四、滴滴面试
1、自我介绍;技术特点
2、兴趣是什么;优势是什么
3、jvm、jre以及jdk三者之间的关系?
4、Dubbo的底层原理,Zookeeper是什么
5、cincurrentMap的机制;TreeMap;Volatil关键字
6、快速排序;广度优先搜索(队列实现)
7、缓存的雪崩以及穿透的理解?
8、HashMap的key可以重复吗?
9、synchronized和lock的区别?
10.开发一个大型网站你会考虑哪些问题?
以上就是全部的面试题目,针对以上知识点,结合当前互联网公司的技术需求及主流技术,我整理了一套系统的架构技术体系。不少公司很重视高并发高可用的技术,特别是一线互联网公司,分布式、JVM、spring源码分析、微服务等知识点已经是面试的必考题。这些东西可能你们平时在工作中接触过,但是缺少全面系统的学习,希望对正在面试的朋友或是遭遇技术瓶颈的程序员们提供一点思路。
1、开源框架解析专题
站在巨人肩膀,收获不一样的视野。
Mybatis
这些源码要看
开源框架
2、架构筑基专题
深入内核、直击故障、拒绝懵圈。
架构筑基
3、微服务架构专题
你还不知道微服务,怎么涨薪。
微服务架构
4、高性能架构专题
成为互联网架构师,你要的都在这里。
高性能架构
5、团队协作开发专题
让你团队开发效率提高十倍。
团队协作开发
6、B2C商城项目实战
撸起袖子干实事,项目经验那点事。
B2C商城实战
7、并发编程
并发编程
8、设计模式
设计模式
以上视频资料是我结合自己和身边朋友的面试经历而整理的,希望对面试的朋友或者在找工作的程序员们有所帮助。大家对技术感兴趣的朋友也可以来Java资源分享群:(878249276),资料会不定期更新,群里有阿里大牛,也有一线互联网的资深HR
本篇文章使用有道云笔记编辑 点击体验