JAVA面试案例-大厂基础题

最近面试了阿里、京东、美团、滴滴等大型互联网公司,最终收到了美团offer,这次面试过后,我把面试过的公司的面试题做了一个整理。这篇文章是我凭回忆记录的,面试题没有顺序,不分先后,接下来公布我去阿里、京东、美团等一线互联网公司的面试题:

一、阿里巴巴面试

1、开发中Java用得比较多的数据结构有哪些?

https://www.cnblogs.com/web424/p/6824298.html

  1. ArrayList: 元素单个,效率高,多用于查询 
    2.Vector: 元素单个,线程安全,多用于查询 
    3.LinkedList:元素单个,多用于插入和删除 
    4.HashMap: 元素成对,元素可为空 
    5.HashTable: 元素成对,线程安全,元素不可为空 

读源码

2、谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?

这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问有没有线程安全的map,接下来问conurren包。

Map源码

  1. 对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管理,平时在tomect里面有没有进行过相关的配置。

类加载顺序

  1. 说一下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个字节

 

  1. 开发中用了哪些数据库?回答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单线程分布式锁。

  1. 分布式session设置

Spring.redis开启注解。

 

  1. 执行某操作,前50次成功,第51次失败a全部回滚b前50次提交第51次抛异常,ab场景分别如何设置Spring(传播性)

开事务的级别REQUERY

 

  1. Zookeeper有哪些用

通知订阅。数据不可更改

数据发布与订阅(配置中心)

https://blog.csdn.net/u013679744/article/details/79371022

包括CAP

Dubbo,

SpringCloud服务下线并不会通知,只有90秒心跳,优雅down服务职能靠k8s或者eagle这些部署服务的机制,等到启动完才下线。

分布式协调/通知.

 

 

  1. JVM内存模型

指令重排序,sync,

8、数据库垂直和水平拆分

9、MyBatis如何分页;如何设置缓存;MySQL分页

 

 

10、熟悉IO么?与NIO的区别,阻塞与非阻塞的区别。

11、分布式session一致性

Spring redis

12、分布式接口的幂等性设计「不能重复扣款」

分布式redis

唯一索引

Sql语句乐观锁减少金额

做逻辑时可以先减少金额,不行则恢复数据或者事务回滚。最终一致性。

 

三、美团面试

1、最近做的比较熟悉的项目是哪个?画一下项目技术架构图。

2、JVM老年代和新生代的比例?

新生代到老年代。

  1. YGC和FGC发生的具体场景

fullGC场景

  1. jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?

排查问题。

5、线程池的构造类的方法的5个参数的具体意义?

6、单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理?)

入库,先变处理中状态,再做逻辑,即使逻辑没实现,还可以主动查询结果,有就有没有就没有。

7、使用无界阻塞队列会出现什么问题?

8、接口如何处理重复请求?

9、具体处理方案是什么?

10、如何保证共享变量修改时的原子性?

Sync 还有一个

  1. 设计一个对外服务的接口实现类,在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

本篇文章使用有道云笔记编辑 点击体验

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值