2019 最新 阿里天猫、蚂蚁、钉钉ava 面试题汇总,附答案

Java基础

浏览数:146

2019-8-20

AD:资源代下载服务

Java面试前需要做足各方面的准备工作,肯定都会浏览大量的面试题,本人也不例外,这是一些最新面试题,分享给大家。Java基础面向对象的特征:继承、封装和多态int 和 Integer 有什么区别;Integer的值缓存范围说说反射的用途及实现Http 请求的 GET 和 POST 方式的区别MVC设计思想什么是Java序列化和反序列化;如何实现Java序列化;重载和重写的区别进程和线程线程和进程的概念并行和并发的概念创建线程的方式及实现进程间通信的方式说说 CountDownLatch、CyclicBarrier 原理和区别说说 Semaphore 原理说说 Exchanger 原理ThreadLocal 原理分析;ThreadLocal为什么会出现OOM,出现的深层次原理讲讲线程池的实现原理线程池的几种实现方式线程的生命周期;状态是如何转移的锁机制什么是线程安全?如何保证线程安全?重入锁的概念;重入锁为什么可以防止死锁?产生死锁的四个条件如何检查死锁volatile 实现原理synchronized 实现原理(对象监视器)synchronized 与 lock 的区别AQS 同步队列CAS 无锁的概念;乐观锁和悲观锁常见的原子操作类什么是 ABA 问题;出现 ABA 问题 JDK 是如何解决的乐观锁的业务场景及实现方式Java 8 并发包下常见的并发类偏向锁、轻量级锁、重量级锁、自旋锁的概念数据库DDL、DML、DCL 分别指什么explain 命令脏读、幻读、不可重复读事务的隔离级别数据库的几大范式说说分库与分表设计分库与分表带来的分布式困境与对应之策说说 SQL 优化之道InnoDB 与 MyISAM 区别、优缺点、使用场景B+树索引、全文索引、哈希索引,的区别什么是自适应哈希索引(AHI)为什么要用 B+tree 作为 MySql 索引的数据结构聚集索引与非聚集索引的区别limit 20000 加载很慢怎么解决常见的几种分布式 ID 的设计方案JVMJVM 运行时内存区域划分常见的 GC 回收算法及其含义常见的 JVM 性能监控和故障处理工具类JVM 性能调优类加载器、双亲委派模型类加载的过程强引用、软引用、弱引用、虚引用Java 内存模型 JMM以下是阿里天猫、蚂蚁、钉钉面试题目不会做别着急:文末有答案以及视频讲解,架构师资料1. junit用法,before,beforeClass,after, afterClass的执行顺序2. 分布式锁3. nginx的请求转发算法,如何配置根据权重转发4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)5. 线程的状态5. 线程的阻塞的方式6. sleep和wait的区别7. hashmap的底层实现8. 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁9. java内存模型,垃圾回收机制,不可达算法10. 两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化11. aop的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理12. 是否用过maven install。 maven test。git(make install是安装本地jar包)13. tomcat的各种配置,如何配置docBase14. spring的bean配置的几种方式15. web.xml的配置16. spring的监听器。17. zookeeper的实现机制,有缓存,如何存储注册服务的18. IO会阻塞吗?readLine是不是阻塞的19. 用过spring的线程池还是java的线程池?20. 字符串的格式化方法 (20,21这两个问题问的太低级了)21. 时间的格式化方法22. 定时器用什么做的23. 线程如何退出结束24. java有哪些锁?乐观锁 悲观锁 synchronized 可重入锁 读写锁,用过reentrantlock吗?reentrantlock与synmchronized的区别25. ThreadLocal的使用场景26. java的内存模型,垃圾回收机制27. 为什么线程执行要调用start而不是直接run(直接run,跟普通方法没什么区别,先调start,run才会作为一个线程方法运行)28. qmq消息的实现机制(qmq是去哪儿网自己封装的消息队列)29. 遍历hashmap的三种方式30. jvm的一些命令31. memcache和redis的区别32. mysql的行级锁加在哪个位置33. ConcurrentHashmap的锁是如何加的?是不是分段越多越好34. myisam和innodb的区别(innodb是行级锁,myisam是表级锁)35. mysql其他的性能优化方式36. linux系统日志在哪里看37. 如何查看网络进程38. 统计一个整数的二进制表示中bit为1的个数39. jvm内存模型,java内存模型【阿里巴巴面试题目】40. 如何把java内存的数据全部dump出来41. 如何手动触发全量回收垃圾,如何立即触发垃圾回收42. hashmap如果只有一个写其他全读会出什么问题43. git rebase44. mongodb和hbase的区别45. 如何解决并发问题46. volatile的用途47. java线程池(好像之前我的理解有问题)48. mysql的binlog49. 代理模式50. mysql是如何实现事务的51. 读写分离何时强制要读主库,读哪个从库是通过什么方式决定的,从库的同步mysql用的什么方式52. mysql的存储引擎53. mysql的默认隔离级别,其他隔离级别54. 将一个链表反转(用三个指针,但是每次只发转一个)55. spring Aop的实现原理,具体说说56. 何时会内存泄漏,内存泄漏会抛哪些异常57. 是否用过Autowire注解58. spring的注入bean的方式59. sql语句各种条件的执行顺序,如select, where, order by, group by60. select xx from xx where xx and xx order by xx limit xx; 如何优化这个(看explain)61. 四则元算写代码62. 统计100G的ip文件中出现ip次数最多的100个ip63. zookeeper的事物,结点,服务提供方挂了如何告知消费方64. 5台服务器如何选出leader(选举算法)65. 适配器和代理模式的区别66. 读写锁67. static加锁68. 事务隔离级别69. 门面模式,类图(外观模式)70. mybatis如何映射表结构71. 二叉树遍历72. 主从复制73. mysql引擎区别74. 静态内部类加载到了哪个区?方法区75. class文件编译后加载到了哪76. web的http请求如何整体响应时间变长导致处理的请求数变少,该如何处理?用队列,当处理不了那么多http请求时将请求放到队列中慢慢处理,web如何实现队列77. 线程安全的单例模式78. 快速排序性能考虑79. volatile关键字用法80. 求表的size,或做数据统计可用什么存储引擎81. 读多写少可用什么引擎82. 假如要统计多个表应该用什么引擎83. concurrenhashmap求size是如何加锁的,如果刚求完一段后这段发生了变化该如何处理84. 1000个苹果放10个篮子,怎么放,能让我拿到所有可能的个数85. 可重入的读写锁,可重入是如何实现的?86. 是否用过NIO87. java的concurrent包用过没88. sting s=new string(“abc”)分别在堆栈上新建了哪些对象89. java虚拟机的区域分配,各区分别存什么90. 分布式事务(JTA)91. threadlocal使用时注意的问题(ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别。synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。而Synchronized却正好相反,它用于在多个线程间通信时能够获得数据共享)92. java有哪些容器(集合,tomcat也是一种容器)93. 二分查找算法94. myisam的优点,和innodb的区别95. redis能存哪些类型96. http协议格式,get和post的区别97. 可重入锁中对应的wait和notify98. redis能把内存空间交换进磁盘中吗(这个应该是可以的,但是那个面试官非跟我说不可以)99. java线程池中基于缓存和基于定长的两种线程池,当请求太多时分别是如何处理的?定长的事用的队列,如果队列也满了呢?交换进磁盘?基于缓存的线程池解决方法呢?100. synchronized加在方法上用的什么锁101. 可重入锁中的lock和trylock的区别102. innodb对一行数据的读会枷锁吗?不枷锁,读实际读的是副本103. redis做缓存是分布式存的?不同的服务器上存的数据是否重复?guava cache呢?是否重复?不同的机器存的数据不同104. 用awk统计一个ip文件中top10105. 对表做统计时可直接看schema info信息,即查看表的系统信息106. mysql目前用的版本107. 公司经验丰富的人给了什么帮助?(一般boss面会问这些)108. 自己相对于一样的应届生有什么优势109. 自己的好的总结习惯给自己今后的工作带了什么帮助,举例为证110. 原子类,线程安全的对象,异常的处理方式111. 4亿个int数,如何找出重复的数(用hash方法,建一个2的32次方个bit的hash数组,每取一个int数,可hash下2的32次方找到它在hash数组中的位置,然后将bit置1表示已存在)112. 4亿个url,找出其中重复的(考虑内存不够,通过hash算法,将url分配到1000个文件中,不同的文件间肯定就不会重复了,再分别找出重复的)有1万个数组,每个数组有1000个整数,每个数组都是降序的,从中找出最大的N个数,N<1000113. LinkedHashmap的底层实现114. 类序列化时类的版本号的用途,如果没有指定一个版本号,系统是怎么处理的?如果加了字段会怎么样?115. Override和Overload的区别,分别用在什么场景116. java的反射是如何实现的【阿里巴巴面试题目含答案】1,mysql的三大引擎是啥?mysql常用的引擎有InnoDB,MyISAM,Memory,默认是InnoDBInnoDB:磁盘表,支持事务,支持行级锁,B+Tree索引ps:优点: 具有良好的ACID特性。适用于高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。缺点:读写效率相对MYISAM比较差。占用的磁盘空间比较大。mysql的4大特性+4种隔离级别:MyISAM:磁盘表,不支持事务,支持表级锁,B+Tree索引ps: 优点:占用空间小,处理速度快(相对InnoDB来说)缺点:不支持事务的完整性和并发性MEMORY(Heap):内存表,不支持事务,表级锁,Hash索引,不支持Blob,Text大类型ps: 优点:速度要求快的,临时数据缺点:丢失以后,对项目整体没有或者负面影响不大的时候。2,redis的hash算法用的是啥?redis应该是使用一致性hash算法—MurmurHash3 算法,具有低碰撞率优点,google改进的版本cityhash也是redis中用到的哈希算法。现有的主流的大数据系统都是用的 MurmurHash本身或者改进3,nosql为啥比sql快?Nosql是非关系型数据库,因为不需要满足关系数据库数据一致性等复杂特性所以速度快;sql是关系型数据库,功能强大,但是效率上有瓶颈4,什么是索引为啥nosql没索引?nosql有索引滴索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。聚簇索引:有主键时,根据主键创建聚簇索引;没有主键时,会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引;如果以上两个都不满足那innodb自己创建一个虚拟的聚集索引非聚簇索引:非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引5,B+树和B树区别?B树的非叶子节点存储实际记录的指针,而B+树的叶子节点存储实际记录的指针B+树的叶子节点通过指针连起来了, 适合扫描区间和顺序查找。BAT面试题目关注小编,后台私信“资料”获取往期Java高级架构资料、源码、笔记、视频、BATJ面试视频资料、以下列举22个视频资料。1,应该怎么封装简历才有BATJ面试机会?2,HashMap底层执行原理,3,hashtable和ConcurrentHashMap如何实现线程安全?4,jvm的内存布局,垃圾回收机制5,类加载机制里的,双亲委派模型6,阐述事务的隔离级别和传播属性7,高并发下,如何做到安全的修改同一行数据?8,A服务调用B服务多接口,响应时间最短方案;9,A系统给B系统转100块钱,如何实现?10,动态代理的几种实现方式及优缺点11,多线程下读概率远远大于写概率,如何解决并发问题?12,按线程池内部机制,当提交新任务时,有哪些异常要考虑?13,@Transaction注解一般写在什么位置?如何控制其回滚?14,说说Spring的IOC容器初始化流程?15,说说springboot启动机制16,Redis高性能的原因大概可以讲一些?17,你是怎么控制缓存的更新?(被动方式/主动方式/增量/全量)?18,浅析Http和https的三次握手有什么区别。19,谈谈Session/cookie机制,如何实现会话跟踪?20,什么是一致性hash?21,MQ有可能发生重复消费,如何避免,如何做到幂等?22,如何做限流策略,令牌桶和漏斗算法的使用场景?

架构精讲视频以及文档

作者:JavaDog