问题:首先自我介绍
1.开始问项目,项目内容,你负责哪一个模块,业务内容,项目用了缓存,缓存模块怎么使用的,项目是微服务架构,微服务组件有哪些,在项目中怎么使用的?
2.讲一下Java的集合框架,哪些是线程安全的,为什么线程安全?
我的回答:忘记了大的框架体系了(我真该死啊),讲了几个list,set,线程安全的就CopyonwriteList,concurrentHashMap,用了读写分离,加锁或底层用了synchronized、volatile关键字实现,threadLocal等,保证了隔离或可见性。。。
3 线程,进程,协程是什么?怎么创立多线程?
我的回答:一个程序运行就是一个进程,一个进程可以有多个线程,多个线程共同享有这个进程的内存空间,协程不知道,创立多线程四种方法,继承thread类,实现runable,实现callable,线程池
4 提到了线程池,线程池怎么创建,核心配置?
我的回答:推荐使用threadPoolExecuter来实现,直接用executer不能配置参数,还会有oom风险,核心配置:七个参数
5 提到了拒绝策略,线程池有哪些拒绝策略?
我的回答:四个拒绝策略,抛出异常;不抛异常;谁传谁调;丢掉队列最前面的
6 简历上写了jvm,垃圾回收知道吗?垃圾是怎么定义的?
我的回答:不被引用的对象就是垃圾,定义有两种方式:引用计数法和可达性分析法
7 提到了引用计数法,引用计数法的缺点知道吗?
我的回答:对于循环调用,计数器永远不为0,没法回收,计数过程是浪费资源的,计数器额外占用内存
8 垃圾回收方法有哪些?
我的回答:标记清除 标记复制 标记整理 ,主流两个回收器 cms和G1,顺带讲了过程
9 拦截器和过滤器的区别知道吗?
我的回答:拦截器主要是在请求发生时,过滤器是在请求前或请求后。。。
10 提到了拦截器可以通过aop实现,那aop和拦截器是一个东西吗?
我的回答:aop是一个概念,拦截器可以用aop进行实现。。。
11 spring容器模块有哪些?springboot和spring有什么区别?bean对象的生命周期了解吗
我的回答:spring core ,applicationContext,spring data,..不知道了,第二个问题除了答一个简化配置后就不知道了,bean的生命周期,实例化,初始化(加载属性),使用,销毁
12 现在有一个大sql,执行顺序,怎么查看,怎么优化?
答:执行顺序:select from ,join, on , where ,group by ,集合函数,having ,子查询,sort by ,limit
查看性能 explain
优化:索引,分库分表(一般不太可能)。。。
13 redis,持久化策略?哪个好?项目中用到了分布式锁,怎么用的?
我的回答:RDB和AOF,没有所谓哪个好,看场景,setNx加锁。。。
14 rocketMq核心组成,怎么保证消息不丢失?
我的回答:组成:broker负责中转存储,生产者,消费者,一个无状态服务器NameServer;可以通过配置保证不丢失消息,重复消费或异常队列的问题:重复消费可以通过加一个唯一性属性判断,异常队列可以考虑重试,回退,死信队列,监控和报警
反问
公司的主要业务?
假设进去是负责哪个模块?
公司社保基数?