程序地带

BAT高级Java面试题:JVM+Redis+Spring+Mysql+数据库+多线程+算法


BAT高级Java面试题:JVM+Redis+Spring+Mysql+数据库+多线程+算法


 


最近喜报有点多,今天分享面经的这位小伙伴从事Java工作已经4年+。


这两个月陆续参加了多家一线互联网企业的高级Java面试,包括阿里、字节跳动(今日头条)、京东、快手、科大讯飞等,幸运拿下了两个offer,综合考量了下,最终选取了其中1家公司入职。


涉及隐私,这里就不透露具体入职哪家公司,以及每道面试题的具体出处啦,只是将我在过去两个月中所遇到过的面试真题,分类打包一次分享给大家。


BAT高级Java面试题:JVM+Redis+Spring+Mysql+数据库+多线程+算法


 


面试题目总结

Java 基础部分


基本这些公司都会问到相关基础,所以,一般来说基础的准备是必要并且通用的,所以这部分真的很重要。


什么是Java序列化,如何实现Java序列化?Java中的异常有哪几类?分别怎么使用?常用的集合类有哪些?Java有自己的内存回收机制,但为什么还存在内存泄露问题呢?NIO是什么?适用于何种场景?说说HashMap的实现原理,如何保证HashMap的线程安全?

计算机网络


计算机网络部分的题目还是挺容易的,考察的点不会那么深入。


通常来说也就是这些问题:


TCP 有哪些状态?TCP的滑动窗口协议有什么用?讲讲原理。详细描述TCP四次挥手过程?三次握手、四次挥手,为啥不是两次?RPC和http的区别?HTTP协议都有哪些方法?

Java虚拟机(JVM)


JVM内存模型结构?方法区和直接内存什么时候会oom?JVM收集器G1的内存模型和CMS的内存模型有什么不同?JVM调优用过吗?如何查看Java内存使用情况(jconsole、命令jmap、jstack等等)?

数据库


Join(inner、left、right)的区别?Union和union all区别?ACID,具体是啥意思?事务隔离级别?幻读和不可重复读的区别?Mysql和Mongodb有啥区别?,Mysql存储引擎中索引的实现机制;数据库事务的几种粒度;如何解决高并发减库存问题?SQL什么情况下不会使用索引?行锁、表锁,乐观锁、悲观锁,区别分别是什么?

Spring


Bean的生命周期?什么是DI、为什么DI、DI的类型(构造器注入、方法注入)?Spring如何解决循环依赖问题?Spring框架中IOC的原理是什么?spring的依赖注入有哪几种方式Spring 如何实现数据库事务?Spring boot和spring的差别,tomcat如何嵌入spring boot的/spring boot中的tomcat是如何启动的?

多线程


线程的几种状态,请画出具体的状态流转图?Java wait、sleep的区别?volatile如何实现指令重排序?线程池中的阻塞队列如果满了怎么办(拒绝策略)?Synchronized和AQS异同,AQS公平非公平如何实现?多线程里面对一个整型做加减为啥不能用volatile?voliatile和synchonized有什么区别?synchonized和jdk提供的Lock包又有什么区别?

Redis


列举下你所知道的常用的Redis客户端并发模型?


聊下分布式缓存,一致性hash。如何解决缓存单机热点问题?Memcache与Redis的区别?列举一个常用的消息中间件,如果消息要保序如何实现?Zookeeper有哪些功能?

微服务


什么是微服务?什么是微服务熔断?什么是服务降级?微服务的优点、缺点分别是什么?你所知道的微服务技术有哪些?列举1-2个案例?SpringCloud和Dubbo 有哪些区别?

算法


如何遍历一棵二叉树?二叉树宽度遍历?用Java写一个冒泡排序算法?描述一下链式存储结构。数据结构的话,链表,树,图的基本知识得懂?了解树的先序遍历,中序遍历,后序遍历。图的广度优先搜索算法,深度优先搜索算法?

HR 面


除了工作中经常应用到的技术,有关注、学习其它主流新技术吗?离开上一家公司的原因是什么?你的优、缺点分别是什么?未来的职业规划?

BAT高级Java面试题:JVM+Redis+Spring+Mysql+数据库+多线程+算法


 


面试经验总结

面试题目范围


面试主要考察候选人的基础知识、项目经验、技术深度,每个候选人被问到的题目及难易程度都略有不同。


一方面,要看面试官对你的第一感觉如何(还真有点像相亲),如果你能在面试前几分钟,能给面试官留下好印象,那么你在面试时得到的机会与包容,就会相对多一些。


另一方面,现场面试有60%-80%的题目,可能就出自于你的简历,面试官会依据你简历上提到的知识、经验、项目,去深挖你的技能掌握程度。因此,真的是切记:慎用精通,慎用精通,慎用精通。如果你只是接触、了解某个技术的皮毛,就在简历中说自己精通,保证你会被虐得很惨,最终反而得不偿失。


认真对待每一场面试


如果没有准备充分就去参加面试,既浪费彼此时间,也是浪费来之不易的机会,要知道得到好公司的面试机会不易,机会都是给有准备人的。我始终相信:当下所付出的每一分努力与坚持,都会在未来的某一天,得到丰厚的回馈。


BAT高级Java面试题:JVM+Redis+Spring+Mysql+数据库+多线程+算法


优知学院:构建50万年薪技能框架+68个BAT面试高频必考点


面试结束复盘查漏补缺


每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。


以上,是我在面试过程中所遇到的题目,以及积累到的经验,全部分享给大家。


如果觉得有用,谢谢点赞支持下。


送最新总结的阿里集团高级Java必考题和答案,供大家参考。


转发+关注+私信回复【阿里】,立即领取。


转发,转发,转发,然后关注+私信回复【阿里】,立即领取!


BAT高级Java面试题:JVM+Redis+Spring+Mysql+数据库+多线程+算法


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_37903468/article/details/112689260

随机推荐

thinkphp 批量导入excel表格数据

1.首先需要下载PHPExcel插件包,解压后放入vendor文件夹中2.代码/***批量导入数据*/publicfunctionadd(){if($this->request-&...

sunsineq 阅读(806)

2021,OpenSquare回顾过去,展望未来

2020是充满奇迹的一年,在这一年里即使在疫情的危机下,区块链的创新者从未停止探索前进的脚步。新的一年是未知的,但也不是一眼望到头的,里面会有新...

OpenSquare服务生 阅读(191)

文件过滤_jmeter(七)-BeanShell对数据过滤保存文件

在测试中有时需要对参数化数据进行过滤,实现保存到一个文件。如:某项目,从数据库查询到10万条用户数据,因为有的用户没有权限或者过期了࿰...

星光心理工作室 阅读(728)