「头条首发」Java BAT面试143题:天猫、蚂蚁金服、钉钉面试题
在今年九月份密集面试了:天猫、蚂蚁金服、钉钉等大厂的Java岗位,带回来一百来道面试真题想和各位分享一下!
还有本人4个多月辛苦收集到的面试资料,也是可以免费送给这篇文章的读者朋友们的!
今年的大环境而言,跳槽成功的难度比往年高了很多,特别是对 Java 的一些核心基础知识点掌握的不够或者没有体系方向的朋友面试也成了一个苦恼的事情。今天在这分享目前国内公司Java面试常问的问题包括JVM、常用的算法和数据结构,redis缓存,分布式,Spring,Kafka,Nginx,微服务等。正所谓知己知彼,只有体系知识巩固,面对不断更新的技术才能快速掌握,同时在面试、工作中也更能脱颖而出!
有需要获取面试体系文档的朋友可以转发文章并关注作者
Java基础面试专题
Java基础参考答案
SSM框架的使用与面试专题
Spring全家桶面试
spring Cloud
Spring面试
Spring MVC
限于篇幅的原因,还有一些知识点的面试资料我就不全部截取出来了:
面试143题:天猫、蚂蚁金服、钉钉面试题
- 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的各种配置,如何配置docBase
- 14. 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 rebase
- 44. mongodb和hbase的区别
- 45. 如何解决并发问题
- 46. volatile的用途
- 47. java线程池(好像之前我的理解有问题)
- 48. mysql的binlog
- 49. 代理模式
- 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 by
- 60. select xx from xx where xx and xx order by xx limit xx; 如何优化这个(看explain)
- 61. 四则元算写代码
- 62. 统计100G的ip文件中出现ip次数最多的100个ip
- 63. 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. 是否用过NIO
- 87. 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和notify
- 98. redis能把内存空间交换进磁盘中吗(这个应该是可以的,但是那个面试官非跟我说不可以)
- 99. java线程池中基于缓存和基于定长的两种线程池,当请求太多时分别是如何处理的?定长的事用的队列,如果队列也满了呢?交换进磁盘?基于缓存的线程池解决方法呢?
- 100. synchronized加在方法上用的什么锁
- 101. 可重入锁中的lock和trylock的区别
- 102. innodb对一行数据的读会枷锁吗?不枷锁,读实际读的是副本
- 103. redis做缓存是分布式存的?不同的服务器上存的数据是否重复?guava cache呢?是否重复?不同的机器存的数据不同
- 104. 用awk统计一个ip文件中top10
- 105. 对表做统计时可直接看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<1000
- 113. LinkedHashmap的底层实现
- 114. 类序列化时类的版本号的用途,如果没有指定一个版本号,系统是怎么处理的?如果加了字段会怎么样?
- 115. Override和Overload的区别,分别用在什么场景
- 116. java的反射是如何实现的
- 117.mysql的三大引擎是啥?
- mysql常用的引擎有InnoDB,MyISAM,Memory,默认是InnoDB
- InnoDB:磁盘表,支持事务,支持行级锁,B+Tree索引
- ps:优点: 具有良好的ACID特性。适用于高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。
- 缺点:读写效率相对MYISAM比较差。占用的磁盘空间比较大。
- mysql的4大特性+4种隔离级别:
- MyISAM:磁盘表,不支持事务,支持表级锁,B+Tree索引
- ps: 优点:占用空间小,处理速度快(相对InnoDB来说)
- 缺点:不支持事务的完整性和并发性
- MEMORY(Heap):内存表,不支持事务,表级锁,Hash索引,不支持Blob,Text大类型
- ps: 优点:速度要求快的,临时数据
- 缺点:丢失以后,对项目整体没有或者负面影响不大的时候。
- 118.redis的hash算法用的是啥?
- redis应该是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率优点,google改进的版本cityhash也是redis中用到的哈希算法。
- 现有的主流的大数据系统都是用的 MurmurHash本身或者改进
- 119.nosql为啥比sql快?
- Nosql是非关系型数据库,因为不需要满足关系数据库数据一致性等复杂特性所以速度快;
- sql是关系型数据库,功能强大,但是效率上有瓶颈
- 120.什么是索引为啥nosql没索引?nosql有索引滴
- 索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
- 聚簇索引:有主键时,根据主键创建聚簇索引;没有主键时,会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引;如果以上两个都不满足那innodb自己创建一个虚拟的聚集索引
- 非聚簇索引:非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引
- 121.B+树和B树区别?
- B树的非叶子节点存储实际记录的指针,而B+树的叶子节点存储实际记录的指针
- B+树的叶子节点通过指针连起来了, 适合扫描区间和顺序查找。
- 122.应该怎么封装简历才有BATJ面试机会?
- 123.HashMap底层执行原理,
- 124.hashtable和ConcurrentHashMap如何实现线程安全?
- 125.jvm的内存布局,垃圾回收机制
- 126.类加载机制里的,双亲委派模型
- 127.阐述事务的隔离级别和传播属性
- 128.高并发下,如何做到安全的修改同一行数据?
- 129.A服务调用B服务多接口,响应时间最短方案;
- 130.A系统给B系统转100块钱,如何实现?
- 131.动态代理的几种实现方式及优缺点
- 132.多线程下读概率远远大于写概率,如何解决并发问题?
- 133.按线程池内部机制,当提交新任务时,有哪些异常要考虑?
- [email protected]注解一般写在什么位置?如何控制其回滚?
- 135.说说Spring的IOC容器初始化流程?
- 136.说说springboot启动机制
- 137.Redis高性能的原因大概可以讲一些?
- 138.你是怎么控制缓存的更新?(被动方式/主动方式/增量/全量)?
- 139.浅析Http和https的三次握手有什么区别。
- 140.谈谈Session/cookie机制,如何实现会话跟踪?
- 141.什么是一致性hash?
- 142.MQ有可能发生重复消费,如何避免,如何做到幂等?
- 143.如何做限流策略,令牌桶和漏斗算法的使用场景?
大厂面试资料分享,基本涨薪30%左右
这份资料包括:Java JVM 多线程 MySQL Redis Kafka Docker RocketMQ Nginx MQ队列 数据结构 并发编程 并发压测 秒杀架构 Alibaba 京东 腾讯 阿里 字节 算法 多线程 高并发 等等面试题材
面试资料获取方式
小伙伴们能答对多少道呢?欢迎在评论下方与我们一起讨论!