其他互联网大厂面试题

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

1.jdk1.7 到jdk1.8 Map 发生了什么变化(底层)?

1.8 之后 hashMap 的数据结构发生了变化,从之前的单纯的数组+链表结构变成数组+链表+红黑树。也就是说在 JVM 存储 hashMap 的 K-V 时仅仅通过 key 来决定每一个 entry 的存储槽位(Node[]中的 index)。并且 Value 以链表的形式挂在到对应槽位上(1.8 以后如果 value 长度大于 8 则转为红黑树)。

但是 hashmap1.7 跟 1.8 中都没有任何同步操作,容易出现并发问题,甚至出现死循环导致系统不可用。解决方案是 jdk 的 ConcurrentHashMap,位于 java.util.concurrent 下,专门解决并发问题。

2.ConcurrentHashMap

思路与 hashMap 差不多,但是支持并发操作,要复杂很多

3.并行跟并发有什么区别?

并发:指应用交替执行不同的任务,多线程原理 并行:指应用同时执行不用的任务

区别:一个是交替执行,一个是同时执行。

4.jdk1.7 到jdk1.8 java 虚拟机发生了什么变化?

JVM 中内存份为堆、栈内存,及方法区。

栈内存主要用途:执行线程方法,存放本地临时变量与线程方法执行是需要的引用对象的地址。

堆内存主要用途:JVM 中所有对象信息都存放在堆内存中,相比栈内存,堆内存大很多所以 JVM 一直通过对堆内存划分不同功能区块实现对堆内存中对象管理。

堆内存不够常见错误:OutOfMemoryError 栈内存溢出常见错误:StackOverFlowError
在 JDK7 以及其前期的 JDK 版本中,堆内存通常被分为三块区域 Nursery 内存(young generation)、长时内存(old generation)、永久内存(Permanent Generation for VM Matedata), 显示如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Nm7onrt-1648812152894)(…//img/蚂蚁金服Java高级1.Png)]

在最上面一层是 Nursery 内存,一个对象被创建以后首先被房到 Nuersery 中的 Eden 内存中,如果存活周期超过两个 Survivor(生存周期)之后会被转移到 Old Generation 中。永久内存中存放对象的方法、变量等元数据信息。永久内存不够就会出现 以下错误:

java.lang.OutOfMemoryError:PermGen

但是在 JDK1.8 中一般都不会得到这个错误,原因在于:1.8 中把存放元数据的永久内存从堆内存中已到了本地内存(native Memory)中,1.8 中 JVM 内存结构变成了如下图:

这样永久内存就不占用堆内存,可以通过自增长来避免永久内存错误。

-XX:MaxMetaspaceSize=128m 这只最大的远内存空间 128 兆
JDK1.8 移除 PermGen,取而代之的是 MetaSpace 源空间

MetaSpace 垃圾回收: 对僵死的类及类加载器的垃圾回收机制昂在元数据使用达到“MaxMetaSpaceSize”参数的设定值时运行。

MetaSpace 监控:元空间的使用情况可以在 HotSpot1.8 的详细 GC 日志输出中得到。

更新 JDK1.8 的原因:

1.字符串存在永久代当中,容易出现性能问题和内存溢出

2.类及方法的信息比较难确定其大小,因此对永久代的大小制定比较困难,太小容易出 现永久代溢出,太大则容易导致老年代溢出。

3.永久代会为 GC 带来不必要的复杂度,并且回收效率偏低

4.Oracle 可能会想 HotSpot 与 JRockit 合并。

5.如果叫你自己设计一个中间件,你会如何设计?

我会从以下几点方面考虑开发:

1)远程过程调用

2)面向消息:利用搞笑的消息传递机制进行平台无关的数据交流,并给予数据通信来 进行分布式系统的集成,有一下三个特点:

i)通讯程序可以在不同的时间运行

ii)通讯晨旭之家可以一对一、一对多、多对一甚至是 上述多种方式的混合

iii)程序将消息放入消息队列会从小吸毒列中取出消 息来进行通讯

3)对象请求代理:提供不同形式的通讯服务包括同步、排队、订阅发布、广播等。 可构筑各种框架如:事物处理监控器、分布数据访问、对象事务管理器 OTM 等。

4)事物处理监控有一下功能:

a)进程管理,包括启动 server 进程、分配任务、监控其执行并对负载进行平衡

b)事务管理,保证在其监控下的事务处理的原子性、一致性、独立性和持久性

c)通讯管理,为 client 和 server 之间提供多种通讯机制,包括请求响应、会话、排队、订阅发布和广播等

6.什么是中间件?

中间件是处于操作系统和应用程序之间软件,使用时旺旺是一组中间件集成在一起,构成一个平台(开发平台+运行平台),在这组中间件中必须要有一个通信中间件,即中间件=平台+通信。该定义也限定了只有勇于分布式系统中才能称为中间件。

主要分类:远程过程调用、面向消息的中间件、对象请求代理、事物处理监控。

7.ThreadLock 用过没有,说说它的作用?

ThreadLock 为本地线程,为每一个线程提供一个局部变量,也就是说只有当前线层可以访问,是线程安全的。原理:为每一个线程分配一个对象来工作,并不是由 ThreadLock 来完成的,而是需要在应用层面保证的,ThreadLock 只是起到了一个容器的作用。原理为ThreadLock 的 set()跟 get()方法。

实现原理:

public void set(T value) {Thread t = Thread.currentThread();ThreadLocalMap map = getMap(t); if (map != null)map.set(this, value);elsecreateMap(t, value);
}public T get() {Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) {ThreadLocalMap.Entry e = map.getEntry(this); if (e != null)return (T)e.value;}return setInitialValue();
}

8.Hashcode()和 equals()和==区别?

(1)hashcode()方法跟 equals()在 java 中都是判断两个对象是否相等

(2)两个对象相同, 则 hashcode 至一定要相同, 即对象相同 > 成员变量相同
---->hashcode 值一定相同

(3)两个对象的 hashcode 值相同,对象不一定相等。总结:equals 相等则 hashcode 一定相等,hashcode 相等,equals 不一定相等。

(4) ==比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间)

9.mysql 数据库中,什么情况下设置了索引但无法使用?

(1)索引的作用:在数据库表中对字段建立索引可以大大提高查询速度。

(2)Mysql 索引类型:

a)普通索引

b)唯一索引:唯一索引列的值必须唯一允许有空值,如果是组合索 引,则列值的组合必须唯一:

CREATE UNIQUE INDEX indexName ON mytable(username(length))

– 修改表结构

ALTER mytable ADD UNIQUE [indexName] ON (username(length))

– 创建表的时候直接指定

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16)
NOT NULL, UNIQUE [indexName] (username(length)) );

c)主键索引:一种特殊的唯一索引,不允许有空值,一般在创建表 的时候创建主键索引:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );

d)组合索引:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );

为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。就是将 name, city, age 建到一个索引里:代码如下:
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);

(3)什么情况下有索引,但用不上?

a)如果条件中有 OR,即使其中有部分条件带索引也不会使用。注意:要想使用 or,又想让索引生效,只能将 or 条件中的每个列都加上索引。

b)对于多了索引,不是使用的第一部分,则不会使用索引。

c)Like 查询以%开头,不使用索引

d)存在索引列的数据类型隐形转换,则用不上索引,比如列类型是 字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

e)Where 子句里对索引列上有数学运算,用不上索引

f)Where 子句中对索引列使用函数,用不上索引

g)Mysql 估计使用全表扫描要比用索引快,不使用索引

(4)什么情况下不推荐使用索引?

a)数据唯一性差的字段不要使用索引

b)频繁更新的字段不要使用索引

c)字段不在 where 语句中出现时不要添加索引,如果 where 后含
IS NULL/IS NOT NULL/LIKE ‘%输入符%’等条件,不要使用索引

d)Where 子句里对索引使用不等于(<>),不建议使用索引,效果一般

10.mysql 优化会不会,mycat 分库,垂直分库,水平分库?

11.分布式事务解决方案?

12.sql 语句优化会不会,说出你知道的?

13.mysql 的存储引擎了解过没有?

14.红黑树原理?

n/202203297)

11.分布式事务解决方案?

12.sql 语句优化会不会,说出你知道的?

13.mysql 的存储引擎了解过没有?

14.红黑树原理?

下载链接博主已将以上这些大厂面试题整理成了一个面试手册,是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. 京东员工怒怼公司:每天工作到很晚甚至凌晨,你跟我说这是幸福?
  2. jzoj5248-[NOIP2017提高A组模拟8.10]花花的聚会【倍增,树形dp】
  3. 【数据结构与算法】【算法思想】【MySQL数据库索引】B+树
  4. 存储过程,触发器,Mysql权限,备份还原
  5. java heap space 解决方法_内存溢出错误:java堆空间
  6. python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
  7. ICPC North Central NA Contest 2017 B - Pokemon Go Go
  8. Laravel Blade 模板用法
  9. WordPress 全方位优化指南(上)
  10. word文档docx转为pdf文件,在Linux操作系统上也能正常显示中文
  11. 第3章第32节:图形的应用:使用图形表达并列关系的内容 [PowerPoint精美幻灯片实战教程]
  12. cad编辑节点快捷键是什么_CAD常用的快捷键命令
  13. 那个找不到工作的iOS程序猿
  14. MySQL引擎的理解
  15. substr() 方法
  16. 大二寒假生活与学习草记
  17. OpenStack Mitaka Horizon 主题开发
  18. Android 通过MediaMetadataRetriever获取视频封面和时长
  19. 西门子标准报文1常用_西门子S7-1200 V90 扭矩控制,750附加报文
  20. 蓝桥杯单片机学习过程记录(二十七)超声波模块

热门文章

  1. flask form表单
  2. ZZNU 正约数之和
  3. glusterfs:Server-quorum和Client Quorum
  4. rand函数和srand函数详解
  5. c++中rand(),srand()使用
  6. C++ - std::srand
  7. Linux 打开 Xbrowser 可视化操作界面
  8. android获取安卓版本,Android获取手机系统版本等信息的方法
  9. 使用Overleaf写作是参考文献引用没按顺序
  10. android虚拟机工作模式,android虚拟机也能用命令行模式