最新携程、虎牙Java开发岗面经分享
携程一面:
携程总部大楼(上海市长宁区金钟路),汽车票船票组,面试官两位(项目经理+开发人员)
1、项目了解
此处手绘系统架构图,并表明自己负责的哪一块,我们项目中对ES和RocketMQ使用比较多
2、线程池参数(最好是自己手写过线程池)
corePoolSize 指定了线程池里的线程数量
maximumPoolSize 指定了线程池里的最大线程数量
RejectPolicy 拒绝策略,当任务过多时候,如何拒绝任务
AbortPolicy 丢弃任务并抛出RejectedExecutionException异常。
DiscardPolicy 丢弃任务,但是不抛出异常。如果线程队列已满,则后续提交的任务都会被丢弃,且是静默丢弃
CallerRunsPolicy 丢弃队列最前面的任务,然后重新提交被拒绝的任务
DiscardOldestPolicy 由调用线程处理该任务
keepAliveTime 当线程池线程数量大于corePoolSize时候,多出来的空闲线程,多长时间会被销毁。
ThreadFactory 线程工厂,用于创建线程,一般可以用默认的
workQueue 任务队列,用于存放提交但是尚未被执行的任务
unit 时间单位
3、MQ的顺序消费痛点
异常后会阻塞
多个队列,分布式全局不太好处理
4、JVM内存模型
jdk1.7 永久代
jdk1.8 元空间
stack内存(栈帧)
jvm调优参数,jstack使用
5、并发编程
我在项目中CountDown等待所有线程减一结束,然后主线程获取Future
中的结果
Volatile关键字使用
6、锁
synchronize 互斥锁
ReentrantLock 可重入锁(自旋锁)
7、MYSQL索引执行查看策略
使用explain
查看执行策略
虎牙面试题
自我介绍。
项目中怎么做的服务端分页?
用的mysql 还是 oracle 数据库?
有一条sql 语句执行很慢,如何排查问题?
如何查看sql 执行计划?explain 命令的执行结果介绍下?
索引为什么能加快查询速度?
问几个Java 基础知识吧,Java 虚拟机你了解吗,介绍一下,能说多少说多少?
假设有一个String str = new String("hello world");这条语句创建了几个对象,分别在 JVM 的 哪个区域?
假设项目中需要用到线程同步,你会考虑怎么实现?
Java 中的锁了解吗,介绍一下?
什么是乐观锁、悲观锁,在Java 中分别有哪些实现类?
线程池用过吗?
如何创建线程池?
Executors 类可以创建哪些线程池?
线程池初始化参数详细介绍?
什么时候会开启核心线程以外的线程?
什么时候会用到拒绝策略?Spring 原码看过吗?
最后问个场景题,现在要查询数据库,数据两位2 千万行,使用多线程实现,你有什么思路
吗?不能重复读取,数据全部读取完之后才进行数据操作。
假设有一个线程查询失败如何处理?
hashmap concurrenthashmap
list set map
jvm 内存模型 垃圾回收等(都是一些常见的问烂的)
进程、线程结合JVM 说
mysql 事务 锁 (间隙锁 next key lock)
mysql 事务 怎么实现的 对应相关的日志来说 undo log
redo log 等
mysql 索引优化 执行计划
spring 中源码看过啥 说了下 spring aop ,ioc springboot 自动装配
redis 项目中怎么用的。。balabal 项目相关问了还蛮多
mysql 中死锁怎么解决
线程池balabala 常用线程池,平时手写线程池,参数配置(7 个参数) 平时怎么设置 的
无反问环节
获取往期以上更多最新面试题资料,直接转发一下这篇文章+关注公众号【Java烂猪皮】关注后回复【666】即可获取哦~
腾讯、阿里、滴滴后台面试题汇总总结 — (含答案)
面试:史上最全多线程面试题 !
最新阿里内推Java后端面试题
JVM难学?那是因为你没认真看完这篇文章
关注作者微信公众号 —《JAVA烂猪皮》
了解更多java后端架构知识以及最新面试宝典
看完本文记得给作者点赞+在看哦~~~大家的支持,是作者源源不断出文的动力