其他互联网大厂面试题

1:阿里巴巴Java面试题

2:阿里云Java面试题-实习生岗

3:腾讯Java面试题-高级

4:字节跳动Java面试题

5:字节跳动Java面试题-大数据方向

6:百度Java面试题

7:蚂蚁金服Java面试题-中级

8:蚂蚁金服Java面试题-高级

9:京东Java面试题-中级

10:拼多多Java面试题-电商部

11:商汤科技Java面试题

12:中软国际Java面试题-初级

13:唯品会Java面试题

14:携程Java面试题-高级

15:软通动力Java面试题


下载链接全部大厂面试题及答案PDF

蚂蚁 Java 一面

1.二叉搜索树和平衡二叉树有什么关系,强平衡二叉树(AVL 树)和弱平衡二叉树(红黑树)有什么区别

二叉搜索树:也称二叉查找树,或二叉排序树。定义也比较简单,要么是一颗空 树,要么就是具有如下性质的二叉树:

(1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

(2)若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

(3)任意节点的左、右子树也分别为二叉查找树;

(4)没有键值相等的节点。

平衡二叉树:在二叉搜索树的基础上多了两个重要的特点

(1)左右两子树的高度差的绝对值不能超过 1;

(2)左右两子树也是一颗平衡二叉树。

红黑书:红黑树是在普通二叉树上,对每个节点添加一个颜色属性形成的,需要同时满足一下五条性质

(1)节点是红色或者是黑色;

(2)根节点是黑色;

(3)每个叶节点(NIL 或空节点)是黑色;

(4)每个红色节点的两个子节点都是黑色的(也就是说不存在两个连续的红色节点);

(5)从任一节点到其没个叶节点的所有路径都包含相同数目的黑色节点。

区别:AVL 树需要保持平衡,但它的旋转太耗时,而红黑树就是一个没有 AVL 树

那样平衡,因此插入、删除效率会高于 AVL 树,而 AVL 树的查找效率显然高于红黑树。

2.B 树和 B+树的区别,为什么 MySQL 要使用 B+树B 树:

(1)关键字集合分布在整颗树中;

(2)任何一个关键字出现且只出现在一个结点中;

(3)搜索有可能在非叶子结点结束;

(4)其搜索性能等价于在关键字全集内做一次二分查找;

B+树:

(1)有 n 棵子树的非叶子结点中含有 n 个关键字(b 树是 n-1 个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b 树是每个关键字都保存数据);

(2)所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针, 且叶子结点本身依关键字的大小自小而大顺序链接;

(3)所有的非叶子结点可以看成是索引部分,结点中仅含其子树中的最大(或最小) 关键字;

(4)通常在 b+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点;

(5)同一个数字会在不同节点中重复出现,根节点的最大元素就是 b+树的最大元素。

B+树相比于 B 树的查询优势:

(1)B+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”;

(2)B+树查询必须查找到叶子节点,B 树只要匹配到即可不用管元素位置,因此 B+树查找更稳定(并不慢);

(3)对于范围查找来说,B+树只需遍历叶子节点链表即可,B 树却需要重复地中序遍历

3.HashMap 如何解决 Hash 冲突

通过引入单向链表来解决 Hash 冲突。当出现 Hash 冲突时,比较新老 key 值是否相等,

如果相等,新值覆盖旧值。如果不相等,新值会存入新的 Node 结点,指向老节点,形成链式结构,即链表。

当 Hash 冲突发生频繁的时候,会导致链表长度过长,以致检索效率低,所以 JDK1.8 之后引入了红黑树,当链表长度大于 8时,链表会转换成红黑书,以此提高查询性能。

4.epoll 和 poll 的区别,及其应用场景

select 和 epoll 都是 I/O 多路复用的方式,但是 select 是通过不断轮询监听 socket 实现,epoll 是当 socket 有变化时通过回掉的方式主动告知用户进程实现

5.简述线程池原理,FixedThreadPool 用的阻塞队列是什么?

Java 线程池的实现原理其实就是一个线程集合 workerSet 和一个阻塞队列 workQueue。当用户向线程池提交一个任务(也就是线程)时,线程池会先将任务放入 workQueue 中。

workerSet 中的线程会不断的从 workQueue 中获取线程然后执行。当 workQueue 中没有任务的时候,worker 就会阻塞,直到队列中有任务了就取出来继续执行。

FixedThreadPool 使用的是“无界队列”LinkedBlockingQueue

6.sychronized 和 ReentrantLock 的区别

(1)ReentrantLock 显示获得、释放锁,synchronized 隐式获得释放锁

(2)ReentrantLock 可响应中断、可轮回,synchronized 是不可以响应中断的,为处理锁的不可用性提供了更高的灵活性

(3)ReentrantLock 是 API 级别的,synchronized 是 JVM 级别的

(4)ReentrantLock 可以实现公平锁

(5)ReentrantLock 通过 Condition 可以绑定多个条件

7.sychronized 的自旋锁、偏向锁、轻量级锁、重量级锁,分别介绍和联系

自旋锁:果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态,它们只需要等一等(自旋),

等持有锁的线程释放锁后即可立即获取锁,这样就避免用户线程和内核的切换的消耗。偏向锁:顾名思义,它会偏向于第一个访问锁的线程,如果在运行过程中,同步锁只有一个线程访问,不存在多线程争用的情况,则线程是不需要触发同步的,减少加锁/解 锁的一些 CAS 操作(比如等待队列的一些 CAS 操作),这种情况下,就会给线程加一个偏向锁。 如果在运行过程中,遇到了其他线程抢占锁,则持有偏向锁的线程会被挂起, JVM 会消除它身上的偏向锁,将锁恢复到标准的轻量级锁。

轻量级锁:轻量级锁是由偏向所升级来的,偏向锁运行在一个线程进入同步块的情况 下,当第二个线程加入锁争用的时候,偏向锁就会升级为轻量级锁;

重量级锁:我们知道,我们要进入一个同步、线程安全的方法时,是需要先获得这个 方法的锁的,退出这个方法时,则会释放锁。
如果获取不到这个锁的话,意味着有别的线程在执行这个方法,这时我们就会马上进入阻塞的状态,等待那个持有锁的线程释放锁,然后再把我们从阻塞的状态唤醒,我们再去获取这个方法的锁。这种获取不到锁就马上进 入阻塞状态的锁,我们称之为重量级锁。

8.HTTP 有哪些问题,加密算法有哪些,针对不同加密方式可能产生的问题,及其HTTPS 是如何保证安全传输的

HTTP 的不足:

通信使用明文,内容可能会被窃听;

不验证通信方的身份,因此有可能遭遇伪装; 无法证明报文的完整性,有可能已遭篡改;

常用加密算法:MD5 算法、DES 算法、AES 算法、RSA 算法

蚂蚁 Java 二面

1.设计模式有哪些大类,及熟悉其中哪些设计模式创建型模式、结构型模式、行为型模式

2.volatile 关键字,他是如何保证可见性,有序性

3.Java 的内存结构,堆分为哪几部分,默认年龄多大进入老年代

4.ConcurrentHashMap 如何保证线程安全,jdk1.8 有什么变化

5.为什么 ConcurrentHashMap 底层为什么要红黑树

6.如何做的 MySQL 优化

7.讲一下 oom 以及遇到这种情况怎么处理的,是否使用过日志分析工具

蚂蚁 Java 三面

1.项目介绍

2.你们怎么保证 Redis 缓存和数据库的数据一致性? 可以通过双删延时策略来保证他们的一致性。

3.Redis 缓存雪崩?击穿?穿透?

4.你熟悉哪些消息中间件,有做过性能比较? RocketMQ、RabbitMQ、ActiveMQ、Kafka

下载链接博主已将以上这些大厂面试题整理成了一个面试手册,是PDF版的

蚂蚁金服Java面试题、笔试题(含答案)-高级相关推荐

  1. 一道蚂蚁金服简单的上机笔试题

    1.题目 说明: 构建一个本地缓存,缓存的对象是用户ID以及部分用户的信息. 当从缓存中获取某个用户数据时,如果发现该用户数据上次更新时间超过30分钟,则需要更新一次该缓存.   1.需考虑多线程访问 ...

  2. 拼多多、饿了么、蚂蚁金服Java面试题大集

    自己当初找工作时参加过众多一线互联网公司的Java研发面试,这段时间处于寒冬,然而前几天跳槽找工作,两天面了3家,已经拿了两个offer,觉得可以和大家分享下: 下面为拼多多.饿了么.蚂蚁金服.哈啰出 ...

  3. java内存shell_2019蚂蚁金服Java后端三面,详述程序员必须掌握的架构底层原理

    前面的话 告别了2018 ,也早已正式进入2019 面试一直都是大家关注的热门话题,俗话说"金三银四",如今已经是三月份了,如果你打算在年后跳槽,那么是时候该着手准备了 很多Jav ...

  4. 蚂蚁金服—JAVA实现全排列

    分享一道蚂蚁金服JAVA实现全排列的代码 在这里插入代码片 package com.lyz.dataStructure.LeetCode;import java.util.List; import j ...

  5. 大牛分享,献出这份年薪68W的蚂蚁金服Java高级开发封神宝典!

    超级大牛经验分享,献出这份年薪68W的蚂蚁金服Java高级开发封神宝典! 干货奉上,不喜勿喷: 一.源码阅读 1.常用设计模式 2.Spring 5 源码 3.MyBatis源码 二.分布式架构总纲 ...

  6. 阿里、腾讯、蚂蚁金服Java技术面试及经验总结(文末分享答案)

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  7. 2019社招阿里、腾讯、蚂蚁金服Java面试真题

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  8. 阿里、腾讯、蚂蚁金服Java技术面试及经验总结

    在过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度.阿里巴巴.腾讯.而在最新的互联网企业价值榜上,百度却被蚂蚁金服挤出前三的位置. 能够进一线互联网公司,是大部分程序员奋斗的目标,有很 ...

  9. 最新蚂蚁金服Java面试题:Docker+秒杀设计+RocketMQ+亿级数据设计

    蚂蚁金服一面: 1 自我介绍 2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机. 3 hashmap的实现,以及hashmap扩容底层实现. 4 NIO ...

  10. 参加完阿里蚂蚁金服Java中间件6轮面试题!6点血泪总结~

    蚂蚁金服一面:分布式架构 50分钟 1.个人介绍加项目介绍20分钟 2.微服务架构是什么,它的优缺点? 3.ACID CAP BASE理论 4.分布式一致性协议,二段.三段.TCC,优缺点 5.RPC ...

最新文章

  1. 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台...
  2. 通过对比对象掩码建议的无监督语义分割
  3. 在 Inno Setup 中实现倒数N秒后激活按钮
  4. 51. ExtJs4之Ext.util.JSON编码和解码JSON对象
  5. xp 无线连接 服务器,NPS配置无线策略XP能正常连接,WIN连接不成功
  6. 如何使用Windows搜索在任何文件中搜索文本
  7. 2020全球工业互联网大会在沈阳召开,聚焦新业态、新模式,“新基建”促进国内国际双循环等热点
  8. CSS串联和后代选择器
  9. 查看其他计算机的共享资源,NetResView (共享资源查看)
  10. EK中fromCharCode和parseInt的配合使用
  11. 使用Chrome谷歌浏览器打开Axure原型图
  12. 【日语】日文假名输入与键盘对应
  13. On the Sense of Humor [附译文]
  14. 追逐自己的梦想----------辅助制作第二十四课:寻路call的分析
  15. LVM 扩容---LVM扩展系统的根分区
  16. 大学三年颠沛流离换来京东实习Offer
  17. NXP-MPC5748G车载MCU使用(食用)方法(踩坑)实用指南(骗人教程)(一):创建工程与导入
  18. 如何使用IOS自动化测试工具UIAutomation
  19. 攻防世界——pwn_warmup
  20. 列表4:拼接排序方法实操

热门文章

  1. 如何使用Beckhoff平台进行串口通讯(EL6002,EL6022)
  2. 嵌入式开发之交叉编译工具链制作
  3. 关于Excel实现分组求和最全文档
  4. opencv的下载与安装
  5. 实验一 顺序表基本操作的实现
  6. 点击a标签实现下载文件
  7. ie浏览器兼容模式怎么设置?
  8. 联想M7650DF加粉和重置/清零的正确方法
  9. 用几行代码写的bat小病毒
  10. matlab自适应高斯核