今年的工作格外难找,不知道别的小伙伴什么样子,反正我是不好找,由于疫情影响,每个公司都在缩减成本,要求也变高了。很多公司要求第一学历统招本科,虽然是本科,但不是统招,很难混啊。面了一个多月,初试复试面了30多次,精心整理了面试题。
答案附在公众号上
Java基础
- 谈谈你对java的看法?
- 集合的接口有哪些?
- list接口有哪些实现类?
- hashmap的工作原理?
- 为什么要进行两倍扩容?
- hashmap和hashtable有什么区别?
- tree和hashmap的区别?
- linkedhashmap是怎么实现有序的?
- 为什么会出现hash冲突?如何解决?
- hashmap一般用什么作为key,为什么?
- 继承的作用?
- 接口和抽象类的区别?
- 接口的作用?
- 抽象类和普通类的区别?
- Final,finally,finalize有什么区别?
- static关键字的用法?
- String为什么是不可变的?
- Spring、SpringBuilder、SpringBuffer的区别?
- ==和equals的区别?
- hashcode和equals的关系
- 自动装箱和拆箱?
- 怎么对Integer进行原子操作?
- 浅拷贝和深拷贝?
- 数组怎么转list,list怎么转数组?
- AIO,BIO,NIO分别是什么,有什么区别,netty是用哪个实现的?
- 多路复用怎么实现的?
Spring
- 谈谈你对spring的理解?
- 什么是依赖注入?
- Ioc和它的实现原理?
- 什么是aop,实现原理是什么?
- bean的生命周期?
- Spring的事务传播?
- @Autowired和@Resource之间的区别?
- 监听器、过滤器、拦截器的区别和执行顺序?
- Springmvc有哪些核心组件?
- Spring mvc的工作原理?
- Spring的bean为什么是单例的,spring怎么解决循环依赖的?
- @Transaction怎么实现事务操作的?
- Spring的容器有哪些?
mybatis
- mybatis的原理?看过源码吗?
- mybatis的缓存怎么做的?
- mybatis和hibernate的区别?
- #{}和${}的区别?
SpringBoot
- springboot 的特性有哪些?
- springboot和ssm有什么区别?
- springboot是怎么实现自动配置的?
- springboot的启动原理?
- springboot中的监视器是什么?
- springboot怎么打war包?
- maven怎么加载到私服?
- springboot的核心注解是哪个?由几个注解组成?
- springboot如何解决跨域问题?
- springboot的配置文件有哪些?
- springboot常用注解有哪些?
- springboot的starter是什么?
- 怎么实现一个starter?
- springboot怎么整合swagger?
- 怎么把spring框架转成springboot框架?
SpringCloud
- springcloud和dubbo的区别?
- 什么是eureka?
- eureka和zookeeper的区别是什么?为什么?
- 什么是spring cloud gateway?
- springcloud feign调用时有个重试机制,怎么保证幂等性?
- springcloud的组件有哪些?
dubbo
- dubbo的默认协议是什么?
- dubbo的容错机制?
- dubbo的负载均衡?
- dubbo的注册中心有哪些?
- dubbo的序列化方式?
- dubbo默认重试几次?
- dubbo怎么配置超时?
- dubbo调用过程 ?
- dubbo核心组件?
- dubbo调用某一版本服务的方法怎么处理?
- dubbo怎么做限流、熔断?
- 怎么做无状态服务设计?
- dubbo怎么做链路追踪?tranceId和spanId是什么?
- dubbo遇到方法重载时怎么处理?
网络
- 了解tcp协议吗?属于七层网络模型的哪一层?
- 一次http请求经历了哪些过程?
jvm虚拟机
- jvm的内存结构?
- jvm哪些区别会出现内存溢出,在什么情况下发生?
- 什么是类加载器,类加载器有哪些?
- 了解类加载吗?
- gc的回收算法有哪些?
- new 一个对象的创建过程?
- 怎么判断对象存活?
- 哪些可以作为gc roots?
- 描述下gc的分代回收?
- cms回收器产生内存碎片怎么处理?
- jvm调试工具有哪些?
- jdk1.8的垃圾收集器参数是什么?
- jmm是什么?
- thread的内存结构是什么样的?
- G1的工作原理,你们region一般设置多大?
- gc的垃圾收集器有哪些?
- 做过jvm调优么,除了修改堆内存你,还做过什么?了解编译器优化?
- 什么时候出发full gc?
- 堆一般设置多大,越大越好吗?
多线程
- 线程的状态?
- 阻塞是怎么产生的?
- 说一下多线程的锁机制?
- synchronized的用法?
- synchronized的底层原理?
- synchronized的锁升级过程?
- synchronized和lock的区别?
- 可重入锁和不可重入锁的区别?可重入的原理?
- 谈谈对公平锁的认识?
- java中锁的分类?
- 多线程的死锁是什么,怎么避免?
- 为什么要使用线程池?
- 常见的线程池有哪些?
- 线程池的参数?
- 一般设置多少核心线程数,核心线程数的设置策略?
- 线程池处理任务的流程是怎样的?
- volatile和synchronized的区别?volatile的作用?
- 如何控制线程池的优先级?
- threadlocal的作用和原理?
- cas是什么,有什么缺陷,怎么解决?
- 操作线程是怎么进行线程切换的?
- 创建线程的方式?
- 说下callable和runnable接口的区别?
- 一般我们用那种方式创建线程,为什么?
- java常见的阻塞队列有哪些?
综合(分布式,电商等)
- 幂等性是什么?常见的解决方案?
- 分布式锁的常见解决方法?
- 分布式事务的常见解决方案?
- 秒杀的解决方案?
- 分布式中的CAP,base理论了解么?
- 树节点的数据封装?比如菜单
- 秒杀怎么解决商品超卖问题?
- 积分充值和积分兑换同时进行怎么处理?
- 权限表的设计?
- 订单号的设计方案?
- 假如有个一百万数据的表,需要频繁检索,怎么设计?
- 假如有一堆散列的小文件,每个10m左右,怎么做存储?
- 做一个权限验证,每个id每分钟只能访问10次,现在每天都有上百万的访问次数。
- bug的常见解决方法?
mysql
- mysql执行一条sql经理了那些过程?
- 如何分析慢sql?
- 怎么优化sql语句?
- 如果mysql返回的结果过大怎么处理?
- 事务的特性?
- mysql外连接、内连接和自连接的区别?
- mysql的索引有哪些?为什么需要注意联合索引的顺序?
- 主键索引和普通索引的区别?了解回表吗
- 索引的创建规则?
- 什么情况下会导致索引失效?
- 如何做mysql的性能优化?
- mysql的存储引擎有哪些?
- 索引的原理,为什么快?
- mysql怎么实现乐观锁,悲观锁?
- mysql怎么实现行锁,表锁?
- mysql innodb引擎的隔离级别?
- union all和union的区别?
- mysql存储过程怎么写?
- 对a,b,c三个字段创建了联合索引,单独使用a条件或者c条件查询会使索引失效吗
- 在innodb默认隔离级别下,A事务需要读a数据,并更新,同时B事务更新了a数据,并提交了,A事务能读到B提交后的数据吗 ?
- mysql和oracle的区别?
redis
- redis的数据类型?
- redis的持久化方式?
- redis的集群方案?
- redis怎么实现分布式锁?
- redis的哨兵机制
- redis的set怎么进行呢集合操作?
- redis的性能瓶颈?
- redis怎么做活跃度统计?
- redis怎么做发布订阅?
- redis 3.0之后的集群和之前的版本有什么区别?
- redis的缓存雪崩,缓存穿透,缓存击穿是什么,解决方案?
- redis的pipeline
mq
- active mq的工作原理?
- mq的分组topic?
- mq重复消费怎么处理?
- mq消息丢失怎么办?
- mq消息积压怎么处理?
- mq生产者发消息异常了怎么处理?
- mq的组成部分?
设计模式
- 抽象工厂和工厂模式的区别?
- 简单说下策略模式?
- 装饰者模式?
- 单例模式?
- 什么是访问者模式?
- 装饰者模式和代理模式之间的区别?
- 什么是责任链模式?
- 说下观察者模式?
其他(es,mongodb,linux)
- nginx的负载方式?
- nginx跨域处理?
- es的分片是什么?副本是什么?
- es写入慢的时候怎么优化?
- mongodb的优势是什么,和redis有什么区别?
- mongodb中的分片是什么?
- mongodb的客户端是什么?
- fastdfs是什么?
- linux常用的命令有哪些?
- cpu达到100%怎么排查,top命找到了这个进程之后怎么处理?
- linux怎么查找一个文件?
- linux怎么看日志?
- linux怎么查看java的安装路径?
- linux的定时任务怎么配?
- linux怎么搜索指定字符的日志?
- linux怎么在创建文件的时候赋权限?
笔试题
- 实现一个树的遍历?
- 一个数组中有10000个数字,找出第二大的数,不可以用排序
- 生成一个四位不能重复的随机数?
- 对一个Integer进行翻转,考虑点,负数,零,翻转后超过最大值
- 画一个京东或淘宝的订单流程图?
- 写一个二分查找的方法?
- 线程的代码,一个线程往队列里写数据,两个线程从队列里读数据
- 抽奖,两台iphone,十万分之一的概率,五台watch一万分之一的概率,20个二千分之一的概率,设计表,画出抽奖流程图
- 设计一个秒杀方案,列出核心技术和组件,简要说明核心技术流程,画出时序图
- 描述一次优化慢sql的过程,问题原因,解决方法。
- 写一个在多线程环境下会造成死锁的伪代码?
- 分别用redis和zookeeper实现分布式锁,写出伪代码,并简要说明